blob: 3da82958fd15fdd8dd33bc29926733347fdc2b7b [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
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530203 ,FEATURE_NOT_SUPPORTED //52
204 ,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;
Sushant Kaushik33200572015-08-05 16:46:20 +05301554
Abhishek Singh08b60122014-02-04 18:05:23 +05301555 }
1556 *pCapStr++ = ',';
1557 *pCapStr++ = ' ';
1558 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301559 }
1560 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301561 pCapStr -= 2;
1562 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301564 if (pTempCapStr)
1565 {
1566 vos_mem_free(pTempCapStr);
1567 pTempCapStr = NULL;
1568 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301569}
1570
1571/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001572 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001573
1574 @param halStatusId: HAL status Id
1575
1576 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001577 @return Result of the function call
1578*/
1579static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1580{
1581 switch (halStatusId)
1582 {
1583 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1584 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1585 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1586 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1587 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1588 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1589 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1590 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1591 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1592 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1593 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1594 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1595 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1596 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1597 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1598 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1599 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1600 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1601 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1602 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1603 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1604 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1605 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1606 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1607 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1608 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1609 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1610 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1611 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1612 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1613 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1614 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1615 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1616 default:
1617 return "Unknown HAL status";
1618 }
1619}
1620
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301621/**
1622 * wdi_state_info_dump() - prints state information of wdi layer
1623 */
1624static void wdi_state_info_dump(void)
1625{
1626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1627 "%s pending commands: %d", __func__,
1628 gWDICb.wptPendingQueue.count);
1629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1630 "uGlobalState %d wdiExpectedResponse: %d",
1631 gWDICb.uGlobalState, gWDICb.wdiExpectedResponse);
1632}
1633
1634
1635/**
1636 * wdi_register_debug_callback() - registration function for wdi layer
1637 * to print WDI state information
1638 */
1639static void wdi_register_debug_callback(void)
1640{
1641 vos_register_debug_callback(VOS_MODULE_ID_WDI, &wdi_state_info_dump);
1642}
1643
1644
Jeff Johnsone7245742012-09-05 17:12:55 -07001645/*========================================================================
1646
Jeff Johnson295189b2012-06-20 16:38:30 -07001647 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001648
Jeff Johnson295189b2012-06-20 16:38:30 -07001649==========================================================================*/
1650
1651/**
1652 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001653
Jeff Johnson295189b2012-06-20 16:38:30 -07001654 DAL will allocate all the resources it needs. It will open PAL, it will also
1655 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001656 DXE/SMD or any other drivers that they need.
1657
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301658 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 ppWDIGlobalCtx: output pointer of Global Context
1660 pWdiDevCapability: output pointer of device capability
1661
1662 @return Result of the function call
1663*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001664WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001665WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001666(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301667 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001668 void** ppWDIGlobalCtx,
1669 WDI_DeviceCapabilityType* pWdiDevCapability,
1670 unsigned int driverType
1671)
1672{
1673 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001674 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001675 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001676 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1678
1679 /*---------------------------------------------------------------------
1680 Sanity check
1681 ---------------------------------------------------------------------*/
1682 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1683 {
1684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1685 "Invalid input parameters in WDI_Init");
1686
Jeff Johnsone7245742012-09-05 17:12:55 -07001687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001688 }
1689
1690 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001691 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001692 ---------------------------------------------------------------------*/
1693 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1694 {
1695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1696 "WDI module already initialized - return");
1697
Jeff Johnsone7245742012-09-05 17:12:55 -07001698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001699 }
1700
1701 /*Module is now initialized - this flag is to ensure the fact that multiple
1702 init will not happen on WDI
1703 !! - potential race does exist because read and set are not atomic,
1704 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001705 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001706
1707 /*Setup the control block */
1708 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301709 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001710
1711 /*Setup the STA Table*/
1712 wdiStatus = WDI_STATableInit(&gWDICb);
1713 if ( WDI_STATUS_SUCCESS != wdiStatus )
1714 {
1715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1716 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001717 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001718 goto fail_STATableInit;
1719 }
1720
1721 /*------------------------------------------------------------------------
1722 Open the PAL
1723 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301724 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001725 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1726 {
1727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1728 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001729 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 goto fail_wpalOpen;
1731 }
1732
1733 /*Initialize main synchro mutex - it will be used to ensure integrity of
1734 the main WDI Control Block*/
1735 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1736 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1737 {
1738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1739 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001740 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001741 goto fail_mutex;
1742 }
1743
1744 /*Initialize the response timer - it will be used to time all messages
1745 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1747 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001748 &gWDICb);
1749 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1750 {
1751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1752 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001753 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001754 goto fail_timer;
1755 }
1756
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001757 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1758 WDI_SsrTimerCB,
1759 &gWDICb);
1760 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1761 {
1762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1763 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001764 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001765 goto fail_timer2;
1766 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001767 /* Initialize the WDI Pending Request Queue*/
1768 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1769 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1770 {
1771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1772 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001773 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001774 goto fail_pend_queue;
1775 }
1776
1777 /*Init WDI Pending Assoc Id Queue */
1778 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1779 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1780 {
1781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1782 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001783 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001784 goto fail_assoc_queue;
1785 }
1786
1787 /*Initialize the BSS sessions pending Queue */
1788 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1789 {
1790 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1791 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1792 {
1793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1794 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001795 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 goto fail_bss_queue;
1797 }
1798 }
1799
1800 /*Indicate the control block is sufficiently initialized for callbacks*/
1801 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1802
1803 /*------------------------------------------------------------------------
1804 Initialize the Data Path Utility Module
1805 ------------------------------------------------------------------------*/
1806 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1807 if ( WDI_STATUS_SUCCESS != wdiStatus )
1808 {
1809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1810 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001811 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001812 goto fail_dp_util_init;
1813 }
1814
1815 /* Init Set power state event */
1816 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001817 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001818 {
1819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1820 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001821 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001822 goto fail_power_event;
1823 }
1824
1825 /* Init WCTS action event */
1826 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001827 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001828 {
1829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1830 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001831 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001832 goto fail_wcts_event;
1833 }
1834
1835 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001836 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001837 ------------------------------------------------------------------------*/
1838 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1839 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001840 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001841 wctsCBs.wctsRxMsgCBData = &gWDICb;
1842
Jeff Johnsone7245742012-09-05 17:12:55 -07001843 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001844 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001845 WDI_CT_CHANNEL_SIZE,
1846 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001847
1848 if ( NULL == gWDICb.wctsHandle )
1849 {
1850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001851 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001852 goto fail_wcts_open;
1853 }
1854
1855 gWDICb.driverMode = (tDriverType)driverType;
1856 /* FTM mode not need to open Transport Driver */
1857 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001858 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001859 /*------------------------------------------------------------------------
1860 Open the Data Transport
1861 ------------------------------------------------------------------------*/
1862 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1863 {
1864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001865 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001866 goto fail_wdts_open;
1867 }
1868 }
1869
1870 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001871 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301872 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 /*Send the context as a ptr to the global WDI Control Block*/
1874 *ppWDIGlobalCtx = &gWDICb;
1875
1876 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001877 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001878 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1879 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301880
1881 wdi_register_debug_callback();
1882
Jeff Johnson295189b2012-06-20 16:38:30 -07001883 return WDI_STATUS_SUCCESS;
1884
1885 /* ERROR handlers
1886 Undo everything that completed successfully */
1887
1888 fail_wdts_open:
1889 {
1890 wpt_status eventStatus;
1891
1892 /* Closing WCTS in this scenario is tricky since it has to close
1893 the SMD channel and then we get notified asynchronously when
1894 the channel has been closed. So we take some of the logic from
1895 the "normal" close procedure in WDI_Close()
1896 */
1897
1898 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001899 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001900 {
1901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001902 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001903 }
1904
1905 WCTS_CloseTransport(gWDICb.wctsHandle);
1906
1907 /* Wait for WCTS to close the control transport. If we were able
1908 to reset the event flag, then we'll wait for the event,
1909 otherwise we'll wait for a maximum amount of time required for
1910 the channel to be closed */
1911 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1912 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001914 WDI_WCTS_ACTION_TIMEOUT);
1915 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1916 {
1917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001918 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001919 }
1920 }
1921 else
1922 {
1923 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1924 }
1925 }
1926 fail_wcts_open:
1927 wpalEventDelete(&gWDICb.wctsActionEvent);
1928 fail_wcts_event:
1929 wpalEventDelete(&gWDICb.setPowerStateEvent);
1930 fail_power_event:
1931 WDI_DP_UtilsExit(&gWDICb);
1932 fail_dp_util_init:
1933 gWDICb.magic = 0;
1934 fail_bss_queue:
1935 /* entries 0 thru i-1 were successfully initialized */
1936 while (0 < i)
1937 {
1938 i--;
1939 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1940 }
1941 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1942 fail_assoc_queue:
1943 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1944 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001945 wpalTimerDelete(&gWDICb.ssrTimer);
1946 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001947 wpalTimerDelete(&gWDICb.wptResponseTimer);
1948 fail_timer:
1949 wpalMutexDelete(&gWDICb.wptMutex);
1950 fail_mutex:
1951 wpalClose(gWDICb.pPALContext);
1952 fail_wpalOpen:
1953 WDI_STATableClose(&gWDICb);
1954 fail_STATableInit:
1955 gWDIInitialized = eWLAN_PAL_FALSE;
1956
1957 return WDI_STATUS_E_FAILURE;
1958
1959}/*WDI_Init*/;
1960
1961/**
1962 @brief WDI_Start will be called when the upper MAC is ready to
1963 commence operation with the WLAN Device. Upon the call
1964 of this API the WLAN DAL will pack and send a HAL Start
1965 message to the lower RIVA sub-system if the SMD channel
1966 has been fully opened and the RIVA subsystem is up.
1967
1968 If the RIVA sub-system is not yet up and running DAL
1969 will queue the request for Open and will wait for the
1970 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001971 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001972
1973 WDI_Init must have been called.
1974
Jeff Johnsone7245742012-09-05 17:12:55 -07001975 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001976 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001977
Jeff Johnson295189b2012-06-20 16:38:30 -07001978 wdiStartRspCb: callback for passing back the response of
1979 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001980
Jeff Johnson295189b2012-06-20 16:38:30 -07001981 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001982 callback
1983
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 @see WDI_Start
1985 @return Result of the function call
1986*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001987WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001988WDI_Start
1989(
1990 WDI_StartReqParamsType* pwdiStartParams,
1991 WDI_StartRspCb wdiStartRspCb,
1992 void* pUserData
1993)
1994{
1995 WDI_EventInfoType wdiEventData;
1996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1997
1998 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001999 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002000 ------------------------------------------------------------------------*/
2001 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2002 {
2003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2004 "WDI API call before module is initialized - Fail request");
2005
Jeff Johnsone7245742012-09-05 17:12:55 -07002006 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002007 }
2008
2009 /*------------------------------------------------------------------------
2010 Fill in Event data and post to the Main FSM
2011 ------------------------------------------------------------------------*/
2012 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002013 wdiEventData.pEventData = pwdiStartParams;
2014 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
2015 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002016 wdiEventData.pUserData = pUserData;
2017
2018 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2019
2020}/*WDI_Start*/
2021
2022/**
2023 @brief WDI_Stop will be called when the upper MAC is ready to
2024 stop any operation with the WLAN Device. Upon the call
2025 of this API the WLAN DAL will pack and send a HAL Stop
2026 message to the lower RIVA sub-system if the DAL Core is
2027 in started state.
2028
2029 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07002030
2031 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002032
2033 WDI_Start must have been called.
2034
Jeff Johnsone7245742012-09-05 17:12:55 -07002035 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002036 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002037
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 wdiStopRspCb: callback for passing back the response of
2039 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002040
Jeff Johnson295189b2012-06-20 16:38:30 -07002041 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002042 callback
2043
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 @see WDI_Start
2045 @return Result of the function call
2046*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002047WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002048WDI_Stop
2049(
2050 WDI_StopReqParamsType* pwdiStopParams,
2051 WDI_StopRspCb wdiStopRspCb,
2052 void* pUserData
2053)
2054{
2055 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07002056 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2058
2059 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002060 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002061 ------------------------------------------------------------------------*/
2062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2063 {
2064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2065 "WDI API call before module is initialized - Fail request");
2066
Jeff Johnsone7245742012-09-05 17:12:55 -07002067 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002068 }
2069
Jeff Johnson43971f52012-07-17 12:26:56 -07002070 /*Access to the global state must be locked before cleaning */
2071 wpalMutexAcquire(&pWDICtx->wptMutex);
2072
2073 /*Clear all pending request*/
2074 WDI_ClearPendingRequests(pWDICtx);
2075
2076 /*We have completed cleaning unlock now*/
2077 wpalMutexRelease(&pWDICtx->wptMutex);
2078
Jeff Johnson295189b2012-06-20 16:38:30 -07002079 /* Free the global variables */
2080 wpalMemoryFree(gpHostWlanFeatCaps);
2081 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002082 gpHostWlanFeatCaps = NULL;
2083 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002084
2085 /*------------------------------------------------------------------------
2086 Fill in Event data and post to the Main FSM
2087 ------------------------------------------------------------------------*/
2088 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002089 wdiEventData.pEventData = pwdiStopParams;
2090 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
2091 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002092 wdiEventData.pUserData = pUserData;
2093
2094 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2095
2096}/*WDI_Stop*/
2097
2098
2099
2100/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 needs to interact with DAL. DAL will free its control
2103 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002104
2105 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002106
2107 WDI_Stop must have been called.
2108
2109 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002110
Jeff Johnson295189b2012-06-20 16:38:30 -07002111 @see WDI_Stop
2112 @return Result of the function call
2113*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002114WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002115WDI_Close
2116(
2117 void
2118)
2119{
2120 wpt_uint8 i;
2121 WDI_EventInfoType wdiEventData;
2122 wpt_status wptStatus;
2123 wpt_status eventStatus;
2124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2125
2126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002128 ------------------------------------------------------------------------*/
2129 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2130 {
2131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2132 "WDI API call before module is initialized - Fail request");
2133
Jeff Johnsone7245742012-09-05 17:12:55 -07002134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002135 }
2136
2137 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2138 (the control transport will be closed by the FSM and we'll want
2139 to wait until that completes)*/
2140 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002141 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002142 {
2143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002144 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 /* fall through and try to finish closing via the FSM */
2146 }
2147
2148 /*------------------------------------------------------------------------
2149 Fill in Event data and post to the Main FSM
2150 ------------------------------------------------------------------------*/
2151 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002152 wdiEventData.pEventData = NULL;
2153 wdiEventData.uEventDataSize = 0;
2154 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002155 wdiEventData.pUserData = NULL;
2156
2157 gWDIInitialized = eWLAN_PAL_FALSE;
2158
2159 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2160
2161 /*Wait for WCTS to close the control transport
2162 (but only if we were able to reset the event flag*/
2163 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2164 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002165 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002166 WDI_WCTS_ACTION_TIMEOUT);
2167 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2168 {
2169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002170 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002171 }
2172 }
2173
2174 /* Destroy the WCTS action event */
2175 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2176 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2177 {
2178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2179 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002180 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002181 }
2182
2183 /* Destroy the Set Power State event */
2184 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2185 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2186 {
2187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2188 "WDI Close failed to destroy an event");
2189
Jeff Johnsone7245742012-09-05 17:12:55 -07002190 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002191 }
2192
2193 /*------------------------------------------------------------------------
2194 Closes the Data Path Utility Module
2195 ------------------------------------------------------------------------*/
2196 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2197 {
2198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2199 "WDI Init failed to close the DP Util Module");
2200
Jeff Johnsone7245742012-09-05 17:12:55 -07002201 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 }
2203
2204 /*destroy the BSS sessions pending Queue */
2205 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2206 {
2207 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2208 }
2209
2210 /* destroy the WDI Pending Assoc Id Request Queue*/
2211 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2212
2213 /* destroy the WDI Pending Request Queue*/
2214 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002215
Jeff Johnson295189b2012-06-20 16:38:30 -07002216 /*destroy the response timer */
2217 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2218
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002219 /*destroy the SSR timer */
2220 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2221
Jeff Johnson295189b2012-06-20 16:38:30 -07002222 /*invalidate the main synchro mutex */
2223 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2224 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2225 {
2226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2227 "Failed to delete mutex %d", wptStatus);
2228 WDI_ASSERT(0);
2229 }
2230
2231 /*Clear control block. note that this will clear the "magic"
2232 which will inhibit all asynchronous callbacks*/
2233 WDI_CleanCB(&gWDICb);
2234
2235 return wptStatus;
2236
2237}/*WDI_Close*/
2238
2239/**
2240 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2241 This will do most of the WDI stop & close
2242 operations without doing any handshake with Riva
2243
2244 This will also make sure that the control transport
2245 will NOT be closed.
2246
2247 This request will not be queued.
2248
2249
2250 WDI_Start must have been called.
2251
2252 @param closeTransport: Close control channel if this is set
2253
2254 @return Result of the function call
2255*/
2256WDI_Status
2257WDI_Shutdown
2258(
2259 wpt_boolean closeTransport
2260)
2261{
2262 WDI_EventInfoType wdiEventData;
2263 wpt_status wptStatus;
2264 int i = 0;
2265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2266
2267 /*------------------------------------------------------------------------
2268 Sanity Check
2269 ------------------------------------------------------------------------*/
2270 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2271 {
2272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2273 "WDI API call before module is initialized - Fail request");
2274
2275 return WDI_STATUS_E_NOT_ALLOWED;
2276 }
2277
2278 /*------------------------------------------------------------------------
2279 Fill in Event data and post to the Main FSM
2280 ------------------------------------------------------------------------*/
2281 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2282 wdiEventData.pEventData = NULL;
2283 wdiEventData.uEventDataSize = 0;
2284
2285 /* Shutdown will not be queued, if the state is busy timer will be
2286 * stopped & this message will be processed.*/
2287 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2288 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2289 {
2290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002291 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002292 }
2293 /* Destroy the Set Power State event */
2294 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2295 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2296 {
2297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2298 "WDI Close failed to destroy an event");
2299
2300 WDI_ASSERT(0);
2301 }
2302 /*------------------------------------------------------------------------
2303 Closes the Data Path Utility Module
2304 ------------------------------------------------------------------------*/
2305 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2306 {
2307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2308 "WDI Init failed to close the DP Util Module");
2309
2310 WDI_ASSERT(0);
2311 }
2312 if ( closeTransport )
2313 {
2314 /* Close control transport, called from module unload */
2315 WCTS_CloseTransport(gWDICb.wctsHandle);
2316 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002317 else
2318 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002319 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002320 the pending messages in the transport queue */
2321 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2322 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002323 /*destroy the BSS sessions pending Queue */
2324 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2325 {
2326 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2327 }
2328
2329 /* destroy the WDI Pending Assoc Id Request Queue*/
2330 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2331 /* destroy the WDI Pending Request Queue*/
2332 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2333 /*destroy the response timer */
2334 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002335 /*destroy the SSR timer */
2336 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002337
2338 /*invalidate the main synchro mutex */
2339 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2340 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2341 {
2342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002343 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 WDI_ASSERT(0);
2345 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002346 /* Free the global variables */
2347 wpalMemoryFree(gpHostWlanFeatCaps);
2348 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002349 gpHostWlanFeatCaps = NULL;
2350 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 /*Clear control block. note that this will clear the "magic"
2352 which will inhibit all asynchronous callbacks*/
2353 WDI_CleanCB(&gWDICb);
2354 return wptStatus;
2355
2356}/*WDI_Shutdown*/
2357
2358
Jeff Johnsone7245742012-09-05 17:12:55 -07002359/*========================================================================
2360
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002362
Jeff Johnson295189b2012-06-20 16:38:30 -07002363==========================================================================*/
2364
2365/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 the WLAN Device to get ready for a scan procedure. Upon
2368 the call of this API the WLAN DAL will pack and send a
2369 HAL Init Scan request message to the lower RIVA
2370 sub-system if DAL is in state STARTED.
2371
2372 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002373 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002374
2375 WDI_Start must have been called.
2376
2377 @param wdiInitScanParams: the init scan parameters as specified
2378 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002379
Jeff Johnson295189b2012-06-20 16:38:30 -07002380 wdiInitScanRspCb: callback for passing back the response
2381 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002382
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002384 callback
2385
Jeff Johnson295189b2012-06-20 16:38:30 -07002386 @see WDI_Start
2387 @return Result of the function call
2388*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002389WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002390WDI_InitScanReq
2391(
2392 WDI_InitScanReqParamsType* pwdiInitScanParams,
2393 WDI_InitScanRspCb wdiInitScanRspCb,
2394 void* pUserData
2395)
2396{
2397 WDI_EventInfoType wdiEventData;
2398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2399
2400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002402 ------------------------------------------------------------------------*/
2403 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2404 {
2405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2406 "WDI API call before module is initialized - Fail request");
2407
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 }
2410
2411 /*------------------------------------------------------------------------
2412 Fill in Event data and post to the Main FSM
2413 ------------------------------------------------------------------------*/
2414 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002415 wdiEventData.pEventData = pwdiInitScanParams;
2416 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2417 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002418 wdiEventData.pUserData = pUserData;
2419
2420 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2421
2422}/*WDI_InitScanReq*/
2423
2424/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002425 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 wishes to change the Scan channel on the WLAN Device.
2427 Upon the call of this API the WLAN DAL will pack and
2428 send a HAL Start Scan request message to the lower RIVA
2429 sub-system if DAL is in state STARTED.
2430
2431 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002432 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002433
2434 WDI_InitScanReq must have been called.
2435
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002438
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 wdiStartScanRspCb: callback for passing back the
2440 response of the start scan operation received from the
2441 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002442
Jeff Johnson295189b2012-06-20 16:38:30 -07002443 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 callback
2445
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 @see WDI_InitScanReq
2447 @return Result of the function call
2448*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002449WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002450WDI_StartScanReq
2451(
2452 WDI_StartScanReqParamsType* pwdiStartScanParams,
2453 WDI_StartScanRspCb wdiStartScanRspCb,
2454 void* pUserData
2455)
2456{
2457 WDI_EventInfoType wdiEventData;
2458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2459
2460 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002461 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 ------------------------------------------------------------------------*/
2463 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2464 {
2465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2466 "WDI API call before module is initialized - Fail request");
2467
Jeff Johnsone7245742012-09-05 17:12:55 -07002468 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002469 }
2470
2471 /*------------------------------------------------------------------------
2472 Fill in Event data and post to the Main FSM
2473 ------------------------------------------------------------------------*/
2474 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002475 wdiEventData.pEventData = pwdiStartScanParams;
2476 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2477 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002478 wdiEventData.pUserData = pUserData;
2479
2480 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2481
2482}/*WDI_StartScanReq*/
2483
2484
2485/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 wants to end scanning for a particular channel that it
2488 had set before by calling Scan Start on the WLAN Device.
2489 Upon the call of this API the WLAN DAL will pack and
2490 send a HAL End Scan request message to the lower RIVA
2491 sub-system if DAL is in state STARTED.
2492
2493 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002494 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002495
2496 WDI_StartScanReq must have been called.
2497
Jeff Johnsone7245742012-09-05 17:12:55 -07002498 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002499 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002500
Jeff Johnson295189b2012-06-20 16:38:30 -07002501 wdiEndScanRspCb: callback for passing back the response
2502 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002503
Jeff Johnson295189b2012-06-20 16:38:30 -07002504 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002505 callback
2506
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 @see WDI_StartScanReq
2508 @return Result of the function call
2509*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002510WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002511WDI_EndScanReq
2512(
2513 WDI_EndScanReqParamsType* pwdiEndScanParams,
2514 WDI_EndScanRspCb wdiEndScanRspCb,
2515 void* pUserData
2516)
2517{
2518 WDI_EventInfoType wdiEventData;
2519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2520
2521 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002522 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002523 ------------------------------------------------------------------------*/
2524 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2525 {
2526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2527 "WDI API call before module is initialized - Fail request");
2528
Jeff Johnsone7245742012-09-05 17:12:55 -07002529 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 }
2531
2532 /*------------------------------------------------------------------------
2533 Fill in Event data and post to the Main FSM
2534 ------------------------------------------------------------------------*/
2535 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002536 wdiEventData.pEventData = pwdiEndScanParams;
2537 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2538 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002539 wdiEventData.pUserData = pUserData;
2540
2541 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2542
2543}/*WDI_EndScanReq*/
2544
2545
2546/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002547 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002548 completed the scan process on the WLAN Device. Upon the
2549 call of this API the WLAN DAL will pack and send a HAL
2550 Finish Scan Request request message to the lower RIVA
2551 sub-system if DAL is in state STARTED.
2552
2553 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002554 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002555
2556 WDI_InitScanReq must have been called.
2557
Jeff Johnsone7245742012-09-05 17:12:55 -07002558 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002559 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002560
Jeff Johnson295189b2012-06-20 16:38:30 -07002561 wdiFinishScanRspCb: callback for passing back the
2562 response of the finish scan operation received from the
2563 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002564
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002566 callback
2567
Jeff Johnson295189b2012-06-20 16:38:30 -07002568 @see WDI_InitScanReq
2569 @return Result of the function call
2570*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002571WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002572WDI_FinishScanReq
2573(
2574 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2575 WDI_FinishScanRspCb wdiFinishScanRspCb,
2576 void* pUserData
2577)
2578{
2579 WDI_EventInfoType wdiEventData;
2580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2581
2582 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002583 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 ------------------------------------------------------------------------*/
2585 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2586 {
2587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2588 "WDI API call before module is initialized - Fail request");
2589
Jeff Johnsone7245742012-09-05 17:12:55 -07002590 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 }
2592
2593 /*------------------------------------------------------------------------
2594 Fill in Event data and post to the Main FSM
2595 ------------------------------------------------------------------------*/
2596 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002597 wdiEventData.pEventData = pwdiFinishScanParams;
2598 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2599 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002600 wdiEventData.pUserData = pUserData;
2601
2602 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2603
2604}/*WDI_FinishScanReq*/
2605
Jeff Johnsone7245742012-09-05 17:12:55 -07002606/*========================================================================
2607
Jeff Johnson295189b2012-06-20 16:38:30 -07002608 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002609
Jeff Johnson295189b2012-06-20 16:38:30 -07002610==========================================================================*/
2611
2612/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002614 to start an association procedure to a BSS. Upon the
2615 call of this API the WLAN DAL will pack and send a HAL
2616 Join request message to the lower RIVA sub-system if
2617 DAL is in state STARTED.
2618
2619 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002620 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002621
2622 WDI_Start must have been called.
2623
Jeff Johnsone7245742012-09-05 17:12:55 -07002624 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002625 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002626
Jeff Johnson295189b2012-06-20 16:38:30 -07002627 wdiJoinRspCb: callback for passing back the response of
2628 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002629
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002631 callback
2632
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 @see WDI_Start
2634 @return Result of the function call
2635*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002636WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002637WDI_JoinReq
2638(
2639 WDI_JoinReqParamsType* pwdiJoinParams,
2640 WDI_JoinRspCb wdiJoinRspCb,
2641 void* pUserData
2642)
2643{
2644 WDI_EventInfoType wdiEventData;
2645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2646
2647 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 ------------------------------------------------------------------------*/
2650 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2651 {
2652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2653 "WDI API call before module is initialized - Fail request");
2654
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002656 }
2657
2658 /*------------------------------------------------------------------------
2659 Fill in Event data and post to the Main FSM
2660 ------------------------------------------------------------------------*/
2661 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002662 wdiEventData.pEventData = pwdiJoinParams;
2663 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2664 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002665 wdiEventData.pUserData = pUserData;
2666
2667 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2668
2669}/*WDI_JoinReq*/
2670
2671/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 wishes to configure the newly acquired or in process of
2674 being acquired BSS to the HW . Upon the call of this API
2675 the WLAN DAL will pack and send a HAL Config BSS request
2676 message to the lower RIVA sub-system if DAL is in state
2677 STARTED.
2678
2679 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002680 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002681
2682 WDI_JoinReq must have been called.
2683
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002686
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 wdiConfigBSSRspCb: callback for passing back the
2688 response of the config BSS operation received from the
2689 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002690
Jeff Johnson295189b2012-06-20 16:38:30 -07002691 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 callback
2693
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 @see WDI_JoinReq
2695 @return Result of the function call
2696*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002697WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002698WDI_ConfigBSSReq
2699(
2700 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2701 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2702 void* pUserData
2703)
2704{
2705 WDI_EventInfoType wdiEventData;
2706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2707
2708 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002709 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 ------------------------------------------------------------------------*/
2711 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2712 {
2713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2714 "WDI API call before module is initialized - Fail request");
2715
Jeff Johnsone7245742012-09-05 17:12:55 -07002716 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 }
2718
2719 /*------------------------------------------------------------------------
2720 Fill in Event data and post to the Main FSM
2721 ------------------------------------------------------------------------*/
2722 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002723 wdiEventData.pEventData = pwdiConfigBSSParams;
2724 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2725 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002726 wdiEventData.pUserData = pUserData;
2727
2728 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2729
2730}/*WDI_ConfigBSSReq*/
2731
2732/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002733 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002734 disassociating from the BSS and wishes to notify HW.
2735 Upon the call of this API the WLAN DAL will pack and
2736 send a HAL Del BSS request message to the lower RIVA
2737 sub-system if DAL is in state STARTED.
2738
2739 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002740 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002741
2742 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2743
Jeff Johnsone7245742012-09-05 17:12:55 -07002744 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002745 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002746
Jeff Johnson295189b2012-06-20 16:38:30 -07002747 wdiDelBSSRspCb: callback for passing back the response
2748 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002749
Jeff Johnson295189b2012-06-20 16:38:30 -07002750 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002751 callback
2752
2753 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002754 @return Result of the function call
2755*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002756WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002757WDI_DelBSSReq
2758(
2759 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2760 WDI_DelBSSRspCb wdiDelBSSRspCb,
2761 void* pUserData
2762)
2763{
2764 WDI_EventInfoType wdiEventData;
2765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2766
2767 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002768 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002769 ------------------------------------------------------------------------*/
2770 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2771 {
2772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2773 "WDI API call before module is initialized - Fail request");
2774
Jeff Johnsone7245742012-09-05 17:12:55 -07002775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002776 }
2777
2778 /*------------------------------------------------------------------------
2779 Fill in Event data and post to the Main FSM
2780 ------------------------------------------------------------------------*/
2781 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002782 wdiEventData.pEventData = pwdiDelBSSParams;
2783 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2784 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002785 wdiEventData.pUserData = pUserData;
2786
2787 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2788
2789}/*WDI_DelBSSReq*/
2790
2791/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002792 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 associated to a BSS and wishes to configure HW for
2794 associated state. Upon the call of this API the WLAN DAL
2795 will pack and send a HAL Post Assoc request message to
2796 the lower RIVA sub-system if DAL is in state STARTED.
2797
2798 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002799 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002800
2801 WDI_JoinReq must have been called.
2802
2803 @param wdiPostAssocReqParams: the assoc parameters as specified
2804 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002805
Jeff Johnson295189b2012-06-20 16:38:30 -07002806 wdiPostAssocRspCb: callback for passing back the
2807 response of the post assoc operation received from the
2808 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002809
Jeff Johnson295189b2012-06-20 16:38:30 -07002810 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002811 callback
2812
Jeff Johnson295189b2012-06-20 16:38:30 -07002813 @see WDI_JoinReq
2814 @return Result of the function call
2815*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002816WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002817WDI_PostAssocReq
2818(
2819 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2820 WDI_PostAssocRspCb wdiPostAssocRspCb,
2821 void* pUserData
2822)
2823{
2824 WDI_EventInfoType wdiEventData;
2825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2826
2827 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002828 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002829 ------------------------------------------------------------------------*/
2830 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2831 {
2832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2833 "WDI API call before module is initialized - Fail request");
2834
Jeff Johnsone7245742012-09-05 17:12:55 -07002835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 }
2837
2838 /*------------------------------------------------------------------------
2839 Fill in Event data and post to the Main FSM
2840 ------------------------------------------------------------------------*/
2841 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002842 wdiEventData.pEventData = pwdiPostAssocReqParams;
2843 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2844 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002845 wdiEventData.pUserData = pUserData;
2846
2847 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2848
2849}/*WDI_PostAssocReq*/
2850
2851/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002852 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002853 association with another STA has ended and the station
2854 must be deleted from HW. Upon the call of this API the
2855 WLAN DAL will pack and send a HAL Del STA request
2856 message to the lower RIVA sub-system if DAL is in state
2857 STARTED.
2858
2859 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002860 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002861
2862 WDI_PostAssocReq must have been called.
2863
Jeff Johnsone7245742012-09-05 17:12:55 -07002864 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002866
Jeff Johnson295189b2012-06-20 16:38:30 -07002867 wdiDelSTARspCb: callback for passing back the response
2868 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002869
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002871 callback
2872
Jeff Johnson295189b2012-06-20 16:38:30 -07002873 @see WDI_PostAssocReq
2874 @return Result of the function call
2875*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002876WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002877WDI_DelSTAReq
2878(
2879 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2880 WDI_DelSTARspCb wdiDelSTARspCb,
2881 void* pUserData
2882)
2883{
2884 WDI_EventInfoType wdiEventData;
2885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2886
2887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002888 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002889 ------------------------------------------------------------------------*/
2890 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2891 {
2892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2893 "WDI API call before module is initialized - Fail request");
2894
Jeff Johnsone7245742012-09-05 17:12:55 -07002895 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 }
2897
2898 /*------------------------------------------------------------------------
2899 Fill in Event data and post to the Main FSM
2900 ------------------------------------------------------------------------*/
2901 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002902 wdiEventData.pEventData = pwdiDelSTAParams;
2903 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2904 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002905 wdiEventData.pUserData = pUserData;
2906
2907 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2908
2909}/*WDI_DelSTAReq*/
2910
Jeff Johnsone7245742012-09-05 17:12:55 -07002911/*========================================================================
2912
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002914
Jeff Johnson295189b2012-06-20 16:38:30 -07002915==========================================================================*/
2916
2917/**
2918 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2919 install a BSS encryption key on the HW. Upon the call of this
2920 API the WLAN DAL will pack and send a Set BSS Key request
2921 message to the lower RIVA sub-system if DAL is in state
2922 STARTED.
2923
2924 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002925 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002926
2927 WDI_PostAssocReq must have been called.
2928
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002930 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002931
Jeff Johnson295189b2012-06-20 16:38:30 -07002932 wdiSetBSSKeyRspCb: callback for passing back the
2933 response of the set BSS Key operation received from the
2934 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002935
Jeff Johnson295189b2012-06-20 16:38:30 -07002936 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002937 callback
2938
Jeff Johnson295189b2012-06-20 16:38:30 -07002939 @see WDI_PostAssocReq
2940 @return Result of the function call
2941*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002942WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002943WDI_SetBSSKeyReq
2944(
2945 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2946 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2947 void* pUserData
2948)
2949{
2950 WDI_EventInfoType wdiEventData;
2951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2952
2953 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002955 ------------------------------------------------------------------------*/
2956 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2957 {
2958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2959 "WDI API call before module is initialized - Fail request");
2960
Jeff Johnsone7245742012-09-05 17:12:55 -07002961 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002962 }
2963
2964 /*------------------------------------------------------------------------
2965 Fill in Event data and post to the Main FSM
2966 ------------------------------------------------------------------------*/
2967 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002968 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2969 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2970 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002971 wdiEventData.pUserData = pUserData;
2972
2973 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2974
2975}/*WDI_SetBSSKeyReq*/
2976
2977/**
2978 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2979 uninstall a BSS key from HW. Upon the call of this API the
2980 WLAN DAL will pack and send a HAL Remove BSS Key request
2981 message to the lower RIVA sub-system if DAL is in state
2982 STARTED.
2983
2984 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002985 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002986
2987 WDI_SetBSSKeyReq must have been called.
2988
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002990 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002991
Jeff Johnson295189b2012-06-20 16:38:30 -07002992 wdiRemoveBSSKeyRspCb: callback for passing back the
2993 response of the remove BSS key operation received from
2994 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002995
Jeff Johnson295189b2012-06-20 16:38:30 -07002996 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002997 callback
2998
Jeff Johnson295189b2012-06-20 16:38:30 -07002999 @see WDI_SetBSSKeyReq
3000 @return Result of the function call
3001*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003002WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003003WDI_RemoveBSSKeyReq
3004(
3005 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
3006 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
3007 void* pUserData
3008)
3009{
3010 WDI_EventInfoType wdiEventData;
3011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3012
3013 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003014 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003015 ------------------------------------------------------------------------*/
3016 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3017 {
3018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3019 "WDI API call before module is initialized - Fail request");
3020
Jeff Johnsone7245742012-09-05 17:12:55 -07003021 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003022 }
3023
3024 /*------------------------------------------------------------------------
3025 Fill in Event data and post to the Main FSM
3026 ------------------------------------------------------------------------*/
3027 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003028 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
3029 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
3030 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003031 wdiEventData.pUserData = pUserData;
3032
3033 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3034
3035}/*WDI_RemoveBSSKeyReq*/
3036
3037
3038/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003039 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07003040 ready to install a STA(ast) encryption key in HW. Upon
3041 the call of this API the WLAN DAL will pack and send a
3042 HAL Set STA Key request message to the lower RIVA
3043 sub-system if DAL is in state STARTED.
3044
3045 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003046 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003047
3048 WDI_PostAssocReq must have been called.
3049
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003051 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003052
Jeff Johnson295189b2012-06-20 16:38:30 -07003053 wdiSetSTAKeyRspCb: callback for passing back the
3054 response of the set STA key operation received from the
3055 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003056
Jeff Johnson295189b2012-06-20 16:38:30 -07003057 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003058 callback
3059
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 @see WDI_PostAssocReq
3061 @return Result of the function call
3062*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003063WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003064WDI_SetSTAKeyReq
3065(
3066 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
3067 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
3068 void* pUserData
3069)
3070{
3071 WDI_EventInfoType wdiEventData;
3072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3073
3074 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003075 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003076 ------------------------------------------------------------------------*/
3077 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3078 {
3079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3080 "WDI API call before module is initialized - Fail request");
3081
Jeff Johnsone7245742012-09-05 17:12:55 -07003082 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003083 }
3084
3085 /*------------------------------------------------------------------------
3086 Fill in Event data and post to the Main FSM
3087 ------------------------------------------------------------------------*/
3088 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003089 wdiEventData.pEventData = pwdiSetSTAKeyParams;
3090 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
3091 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003092 wdiEventData.pUserData = pUserData;
3093
3094 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3095
3096}/*WDI_SetSTAKeyReq*/
3097
3098
3099/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003100 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003101 wants to uninstall a previously set STA key in HW. Upon
3102 the call of this API the WLAN DAL will pack and send a
3103 HAL Remove STA Key request message to the lower RIVA
3104 sub-system if DAL is in state STARTED.
3105
3106 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003107 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003108
3109 WDI_SetSTAKeyReq must have been called.
3110
Jeff Johnsone7245742012-09-05 17:12:55 -07003111 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003112 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003113
Jeff Johnson295189b2012-06-20 16:38:30 -07003114 wdiRemoveSTAKeyRspCb: callback for passing back the
3115 response of the remove STA key operation received from
3116 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003117
Jeff Johnson295189b2012-06-20 16:38:30 -07003118 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003119 callback
3120
Jeff Johnson295189b2012-06-20 16:38:30 -07003121 @see WDI_SetSTAKeyReq
3122 @return Result of the function call
3123*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003124WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003125WDI_RemoveSTAKeyReq
3126(
3127 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3128 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3129 void* pUserData
3130)
3131{
3132 WDI_EventInfoType wdiEventData;
3133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3134
3135 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003136 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003137 ------------------------------------------------------------------------*/
3138 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3139 {
3140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3141 "WDI API call before module is initialized - Fail request");
3142
Jeff Johnsone7245742012-09-05 17:12:55 -07003143 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003144 }
3145
3146 /*------------------------------------------------------------------------
3147 Fill in Event data and post to the Main FSM
3148 ------------------------------------------------------------------------*/
3149 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003150 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3151 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3152 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003153 wdiEventData.pUserData = pUserData;
3154
3155 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3156
3157}/*WDI_RemoveSTAKeyReq*/
3158
3159
3160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003161 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003162 wants to install a STA Bcast encryption key on the HW.
3163 Upon the call of this API the WLAN DAL will pack and
3164 send a HAL Start request message to the lower RIVA
3165 sub-system if DAL is in state STARTED.
3166
3167 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003168 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003169
3170 WDI_PostAssocReq must have been called.
3171
Jeff Johnsone7245742012-09-05 17:12:55 -07003172 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003173 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003174
Jeff Johnson295189b2012-06-20 16:38:30 -07003175 wdiSetSTABcastKeyRspCb: callback for passing back the
3176 response of the set BSS Key operation received from the
3177 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003178
Jeff Johnson295189b2012-06-20 16:38:30 -07003179 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 callback
3181
Jeff Johnson295189b2012-06-20 16:38:30 -07003182 @see WDI_PostAssocReq
3183 @return Result of the function call
3184*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003185WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003186WDI_SetSTABcastKeyReq
3187(
3188 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3189 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3190 void* pUserData
3191)
3192
3193{
3194 WDI_EventInfoType wdiEventData;
3195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3196
3197 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003198 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003199 ------------------------------------------------------------------------*/
3200 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3201 {
3202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3203 "WDI API call before module is initialized - Fail request");
3204
Jeff Johnsone7245742012-09-05 17:12:55 -07003205 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003206 }
3207
3208 /*------------------------------------------------------------------------
3209 Fill in Event data and post to the Main FSM
3210 ------------------------------------------------------------------------*/
3211 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003212 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3213 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3214 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003215 wdiEventData.pUserData = pUserData;
3216
3217 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3218
3219}/*WDI_SetSTABcastKeyReq*/
3220
3221/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003222 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003223 MAC wants to uninstall a STA Bcast key from HW. Upon the
3224 call of this API the WLAN DAL will pack and send a HAL
3225 Remove STA Bcast Key request message to the lower RIVA
3226 sub-system if DAL is in state STARTED.
3227
3228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003230
3231 WDI_SetSTABcastKeyReq must have been called.
3232
Jeff Johnsone7245742012-09-05 17:12:55 -07003233 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003234 parameters as specified by the Device
3235 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003236
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3238 response of the remove STA Bcast key operation received
3239 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003240
Jeff Johnson295189b2012-06-20 16:38:30 -07003241 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003242 callback
3243
Jeff Johnson295189b2012-06-20 16:38:30 -07003244 @see WDI_SetSTABcastKeyReq
3245 @return Result of the function call
3246*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003247WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003248WDI_RemoveSTABcastKeyReq
3249(
3250 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3251 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3252 void* pUserData
3253)
3254{
3255 WDI_EventInfoType wdiEventData;
3256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3257
3258 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003259 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003260 ------------------------------------------------------------------------*/
3261 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3262 {
3263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3264 "WDI API call before module is initialized - Fail request");
3265
Jeff Johnsone7245742012-09-05 17:12:55 -07003266 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003267 }
3268
3269 /*------------------------------------------------------------------------
3270 Fill in Event data and post to the Main FSM
3271 ------------------------------------------------------------------------*/
3272 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3274 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3275 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003276 wdiEventData.pUserData = pUserData;
3277
3278 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3279
3280}/*WDI_RemoveSTABcastKeyReq*/
3281
3282/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003283 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003284 MAC wants to set Max Tx Power to HW. Upon the
3285 call of this API the WLAN DAL will pack and send a HAL
3286 Remove STA Bcast Key request message to the lower RIVA
3287 sub-system if DAL is in state STARTED.
3288
3289 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003290 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003291
3292 WDI_SetSTABcastKeyReq must have been called.
3293
Jeff Johnsone7245742012-09-05 17:12:55 -07003294 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003295 parameters as specified by the Device
3296 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003297
Jeff Johnson295189b2012-06-20 16:38:30 -07003298 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3299 response of the remove STA Bcast key operation received
3300 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003301
Jeff Johnson295189b2012-06-20 16:38:30 -07003302 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003303 callback
3304
Jeff Johnson295189b2012-06-20 16:38:30 -07003305 @see WDI_SetMaxTxPowerReq
3306 @return Result of the function call
3307*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003308WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003309WDI_SetMaxTxPowerReq
3310(
3311 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3312 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3313 void* pUserData
3314)
3315{
3316 WDI_EventInfoType wdiEventData;
3317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3318
3319 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003320 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003321 ------------------------------------------------------------------------*/
3322 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3323 {
3324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3325 "WDI API call before module is initialized - Fail request");
3326
Jeff Johnsone7245742012-09-05 17:12:55 -07003327 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003328 }
3329
3330 /*------------------------------------------------------------------------
3331 Fill in Event data and post to the Main FSM
3332 ------------------------------------------------------------------------*/
3333 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003334 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3335 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3336 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003337 wdiEventData.pUserData = pUserData;
3338
3339 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3340}
3341
schang86c22c42013-03-13 18:41:24 -07003342/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003343 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3344 MAC wants to set Max Tx Power to HW for specific band.
3345
3346 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3347
3348 wdiReqStatusCb: callback for passing back the
3349 response msg from the device
3350
3351 pUserData: user data will be passed back with the
3352 callback
3353
3354 @see WDI_SetMaxTxPowerPerBandReq
3355 @return Result of the function call
3356*/
3357WDI_Status
3358WDI_SetMaxTxPowerPerBandReq
3359(
3360 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3361 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3362 void* pUserData
3363)
3364{
3365 WDI_EventInfoType wdiEventData;
3366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3367
3368 /*------------------------------------------------------------------------
3369 Sanity Check
3370 ------------------------------------------------------------------------*/
3371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3372 {
3373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3374 "WDI API call before module is initialized - Fail request");
3375
3376 return WDI_STATUS_E_NOT_ALLOWED;
3377 }
3378
3379 /*------------------------------------------------------------------------
3380 Fill in Event data and post to the Main FSM
3381 ------------------------------------------------------------------------*/
3382 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3383 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3384 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3385 wdiEventData.pCBfnc = wdiReqStatusCb;
3386 wdiEventData.pUserData = pUserData;
3387
3388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3389}
3390
3391/**
schang86c22c42013-03-13 18:41:24 -07003392 @brief WDI_SetTxPowerReq will be called when the upper
3393 MAC wants to set Tx Power to HW.
3394 In state BUSY this request will be queued. Request won't
3395 be allowed in any other state.
3396
3397
3398 @param pwdiSetTxPowerParams: set TS Power parameters
3399 BSSID and target TX Power with dbm included
3400
3401 wdiReqStatusCb: callback for passing back the response
3402
3403 pUserData: user data will be passed back with the
3404 callback
3405
3406 @return Result of the function call
3407*/
3408WDI_Status
3409WDI_SetTxPowerReq
3410(
3411 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3412 WDA_SetTxPowerRspCb wdiReqStatusCb,
3413 void* pUserData
3414)
3415{
3416 WDI_EventInfoType wdiEventData;
3417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3418
3419 /*------------------------------------------------------------------------
3420 Sanity Check
3421 ------------------------------------------------------------------------*/
3422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3423 {
3424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3425 "WDI API call before module is initialized - Fail request");
3426
3427 return WDI_STATUS_E_NOT_ALLOWED;
3428 }
3429
3430 /*------------------------------------------------------------------------
3431 Fill in Event data and post to the Main FSM
3432 ------------------------------------------------------------------------*/
3433 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3434 wdiEventData.pEventData = pwdiSetTxPowerParams;
3435 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3436 wdiEventData.pCBfnc = wdiReqStatusCb;
3437 wdiEventData.pUserData = pUserData;
3438
3439 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3440}
3441
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003442#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003443WDI_Status
3444WDI_TSMStatsReq
3445(
3446 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3447 WDI_TsmRspCb wdiReqStatusCb,
3448 void* pUserData
3449)
3450{
3451 WDI_EventInfoType wdiEventData;
3452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003453 /*------------------------------------------------------------------------
3454 Sanity Check
3455 ------------------------------------------------------------------------*/
3456 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3457 {
3458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3459 "WDI API call before module is initialized - Fail request");
3460
3461 return WDI_STATUS_E_NOT_ALLOWED;
3462 }
3463
3464 /*------------------------------------------------------------------------
3465 Fill in Event data and post to the Main FSM
3466 ------------------------------------------------------------------------*/
3467 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3468 wdiEventData.pEventData = pwdiTsmReqParams;
3469 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3470 wdiEventData.pCBfnc = wdiReqStatusCb;
3471 wdiEventData.pUserData = pUserData;
3472
3473 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3474
3475}
3476#endif
3477
3478/*========================================================================
3479
3480 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003481
Jeff Johnson295189b2012-06-20 16:38:30 -07003482==========================================================================*/
3483
3484/**
3485 @brief WDI_AddTSReq will be called when the upper MAC to inform
3486 the device of a successful add TSpec negotiation. HW
3487 needs to receive the TSpec Info from the UMAC in order
3488 to configure properly the QoS data traffic. Upon the
3489 call of this API the WLAN DAL will pack and send a HAL
3490 Add TS request message to the lower RIVA sub-system if
3491 DAL is in state STARTED.
3492
3493 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003494 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003495
3496 WDI_PostAssocReq must have been called.
3497
3498 @param wdiAddTsReqParams: the add TS parameters as specified by
3499 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003500
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 wdiAddTsRspCb: callback for passing back the response of
3502 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003503
Jeff Johnson295189b2012-06-20 16:38:30 -07003504 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003505 callback
3506
Jeff Johnson295189b2012-06-20 16:38:30 -07003507 @see WDI_PostAssocReq
3508 @return Result of the function call
3509*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003510WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003511WDI_AddTSReq
3512(
3513 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3514 WDI_AddTsRspCb wdiAddTsRspCb,
3515 void* pUserData
3516)
3517{
3518 WDI_EventInfoType wdiEventData;
3519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3520
3521 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 ------------------------------------------------------------------------*/
3524 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3525 {
3526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3527 "WDI API call before module is initialized - Fail request");
3528
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 }
3531
3532 /*------------------------------------------------------------------------
3533 Fill in Event data and post to the Main FSM
3534 ------------------------------------------------------------------------*/
3535 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003536 wdiEventData.pEventData = pwdiAddTsReqParams;
3537 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3538 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003539 wdiEventData.pUserData = pUserData;
3540
3541 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3542
3543}/*WDI_AddTSReq*/
3544
3545
3546
3547/**
3548 @brief WDI_DelTSReq will be called when the upper MAC has ended
3549 admission on a specific AC. This is to inform HW that
3550 QoS traffic parameters must be rest. Upon the call of
3551 this API the WLAN DAL will pack and send a HAL Del TS
3552 request message to the lower RIVA sub-system if DAL is
3553 in state STARTED.
3554
3555 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003556 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003557
3558 WDI_AddTSReq must have been called.
3559
3560 @param wdiDelTsReqParams: the del TS parameters as specified by
3561 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003562
Jeff Johnson295189b2012-06-20 16:38:30 -07003563 wdiDelTsRspCb: callback for passing back the response of
3564 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003565
Jeff Johnson295189b2012-06-20 16:38:30 -07003566 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 callback
3568
Jeff Johnson295189b2012-06-20 16:38:30 -07003569 @see WDI_AddTSReq
3570 @return Result of the function call
3571*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003572WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003573WDI_DelTSReq
3574(
3575 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3576 WDI_DelTsRspCb wdiDelTsRspCb,
3577 void* pUserData
3578)
3579{
3580 WDI_EventInfoType wdiEventData;
3581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3582
3583 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003585 ------------------------------------------------------------------------*/
3586 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3587 {
3588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3589 "WDI API call before module is initialized - Fail request");
3590
Jeff Johnsone7245742012-09-05 17:12:55 -07003591 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 }
3593
3594 /*------------------------------------------------------------------------
3595 Fill in Event data and post to the Main FSM
3596 ------------------------------------------------------------------------*/
3597 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003598 wdiEventData.pEventData = pwdiDelTsReqParams;
3599 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3600 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003601 wdiEventData.pUserData = pUserData;
3602
3603 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3604
3605}/*WDI_DelTSReq*/
3606
3607
3608
3609/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003611 wishes to update the EDCA parameters used by HW for QoS
3612 data traffic. Upon the call of this API the WLAN DAL
3613 will pack and send a HAL Update EDCA Params request
3614 message to the lower RIVA sub-system if DAL is in state
3615 STARTED.
3616
3617 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003618 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003619
3620 WDI_PostAssocReq must have been called.
3621
Jeff Johnsone7245742012-09-05 17:12:55 -07003622 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003623 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003624
Jeff Johnson295189b2012-06-20 16:38:30 -07003625 wdiUpdateEDCAParamsRspCb: callback for passing back the
3626 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003627
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003629 callback
3630
Jeff Johnson295189b2012-06-20 16:38:30 -07003631 @see WDI_PostAssocReq
3632 @return Result of the function call
3633*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003634WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003635WDI_UpdateEDCAParams
3636(
3637 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3638 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3639 void* pUserData
3640)
3641{
3642 WDI_EventInfoType wdiEventData;
3643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3644
3645 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003646 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003647 ------------------------------------------------------------------------*/
3648 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3649 {
3650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3651 "WDI API call before module is initialized - Fail request");
3652
Jeff Johnsone7245742012-09-05 17:12:55 -07003653 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003654 }
3655
3656 /*------------------------------------------------------------------------
3657 Fill in Event data and post to the Main FSM
3658 ------------------------------------------------------------------------*/
3659 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003660 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3661 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3662 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 wdiEventData.pUserData = pUserData;
3664
3665 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3666
3667}/*WDI_UpdateEDCAParams*/
3668
3669
3670/**
3671 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3672 successfully a BA session and needs to notify the HW for
3673 the appropriate settings to take place. Upon the call of
3674 this API the WLAN DAL will pack and send a HAL Add BA
3675 request message to the lower RIVA sub-system if DAL is
3676 in state STARTED.
3677
3678 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003680
3681 WDI_PostAssocReq must have been called.
3682
3683 @param wdiAddBAReqParams: the add BA parameters as specified by
3684 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003685
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 wdiAddBARspCb: callback for passing back the response of
3687 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003688
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003690 callback
3691
Jeff Johnson295189b2012-06-20 16:38:30 -07003692 @see WDI_PostAssocReq
3693 @return Result of the function call
3694*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003695WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003696WDI_AddBASessionReq
3697(
3698 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3699 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3700 void* pUserData
3701)
3702{
3703 WDI_EventInfoType wdiEventData;
3704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3705
3706 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 ------------------------------------------------------------------------*/
3709 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3710 {
3711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3712 "WDI API call before module is initialized - Fail request");
3713
Jeff Johnsone7245742012-09-05 17:12:55 -07003714 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003715 }
3716
3717 /*------------------------------------------------------------------------
3718 Fill in Event data and post to the Main FSM
3719 ------------------------------------------------------------------------*/
3720 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003721 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3722 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3723 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 wdiEventData.pUserData = pUserData;
3725
3726 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3727
3728}/*WDI_AddBASessionReq*/
3729
3730/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003731 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003732 inform HW that it has deleted a previously created BA
3733 session. Upon the call of this API the WLAN DAL will
3734 pack and send a HAL Del BA request message to the lower
3735 RIVA sub-system if DAL is in state STARTED.
3736
3737 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003738 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003739
3740 WDI_AddBAReq must have been called.
3741
3742 @param wdiDelBAReqParams: the del BA parameters as specified by
3743 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003744
Jeff Johnson295189b2012-06-20 16:38:30 -07003745 wdiDelBARspCb: callback for passing back the response of
3746 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003747
Jeff Johnson295189b2012-06-20 16:38:30 -07003748 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003749 callback
3750
Jeff Johnson295189b2012-06-20 16:38:30 -07003751 @see WDI_AddBAReq
3752 @return Result of the function call
3753*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003754WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003755WDI_DelBAReq
3756(
3757 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3758 WDI_DelBARspCb wdiDelBARspCb,
3759 void* pUserData
3760)
3761{
3762 WDI_EventInfoType wdiEventData;
3763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3764
3765 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 ------------------------------------------------------------------------*/
3768 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3769 {
3770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3771 "WDI API call before module is initialized - Fail request");
3772
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 }
3775
3776 /*------------------------------------------------------------------------
3777 Fill in Event data and post to the Main FSM
3778 ------------------------------------------------------------------------*/
3779 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003780 wdiEventData.pEventData = pwdiDelBAReqParams;
3781 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3782 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003783 wdiEventData.pUserData = pUserData;
3784
3785 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3786
3787}/*WDI_DelBAReq*/
3788
Jeff Johnsone7245742012-09-05 17:12:55 -07003789/*========================================================================
3790
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003792
Jeff Johnson295189b2012-06-20 16:38:30 -07003793==========================================================================*/
3794
3795/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003796 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 wants to set the power save related configurations of
3798 the WLAN Device. Upon the call of this API the WLAN DAL
3799 will pack and send a HAL Update CFG request message to
3800 the lower RIVA sub-system if DAL is in state STARTED.
3801
3802 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003803 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003804
3805 WDI_Start must have been called.
3806
Jeff Johnsone7245742012-09-05 17:12:55 -07003807 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003808 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003809
Jeff Johnson295189b2012-06-20 16:38:30 -07003810 wdiSetPwrSaveCfgCb: callback for passing back the
3811 response of the set power save cfg operation received
3812 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003813
Jeff Johnson295189b2012-06-20 16:38:30 -07003814 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 callback
3816
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003818 @return Result of the function call
3819*/
3820WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003821WDI_SetPwrSaveCfgReq
3822(
3823 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3824 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3825 void* pUserData
3826)
3827{
3828 WDI_EventInfoType wdiEventData;
3829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3830
3831 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003832 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 ------------------------------------------------------------------------*/
3834 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3835 {
3836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3837 "WDI API call before module is initialized - Fail request");
3838
Jeff Johnsone7245742012-09-05 17:12:55 -07003839 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 }
3841
3842 /*------------------------------------------------------------------------
3843 Fill in Event data and post to the Main FSM
3844 ------------------------------------------------------------------------*/
3845 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003846 wdiEventData.pEventData = pwdiPowerSaveCfg;
3847 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3848 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 wdiEventData.pUserData = pUserData;
3850
3851 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3852
3853}/*WDI_SetPwrSaveCfgReq*/
3854
3855/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003856 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003857 request the device to get into IMPS power state. Upon
3858 the call of this API the WLAN DAL will send a HAL Enter
3859 IMPS request message to the lower RIVA sub-system if DAL
3860 is in state STARTED.
3861
3862 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003863 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003864
Jeff Johnsone7245742012-09-05 17:12:55 -07003865
3866 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003867 response of the Enter IMPS operation received from the
3868 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003869
Jeff Johnson295189b2012-06-20 16:38:30 -07003870 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003871 callback
3872
Jeff Johnson295189b2012-06-20 16:38:30 -07003873 @see WDI_Start
3874 @return Result of the function call
3875*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003876WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003877WDI_EnterImpsReq
3878(
Mihir Shetea4306052014-03-25 00:02:54 +05303879 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3881 void* pUserData
3882)
3883{
3884 WDI_EventInfoType wdiEventData;
3885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3886
3887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003888 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 ------------------------------------------------------------------------*/
3890 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3891 {
3892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3893 "WDI API call before module is initialized - Fail request");
3894
Jeff Johnsone7245742012-09-05 17:12:55 -07003895 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003896 }
3897
3898 /*------------------------------------------------------------------------
3899 Fill in Event data and post to the Main FSM
3900 ------------------------------------------------------------------------*/
3901 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303902 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3903 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003904 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003905 wdiEventData.pUserData = pUserData;
3906
3907 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3908
3909}/*WDI_EnterImpsReq*/
3910
3911/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003912 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003913 request the device to get out of IMPS power state. Upon
3914 the call of this API the WLAN DAL will send a HAL Exit
3915 IMPS request message to the lower RIVA sub-system if DAL
3916 is in state STARTED.
3917
3918 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003919 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003920
Jeff Johnson295189b2012-06-20 16:38:30 -07003921
Jeff Johnsone7245742012-09-05 17:12:55 -07003922
3923 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003924 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003925
Jeff Johnson295189b2012-06-20 16:38:30 -07003926 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003927 callback
3928
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 @see WDI_Start
3930 @return Result of the function call
3931*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003932WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003933WDI_ExitImpsReq
3934(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303935 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3937 void* pUserData
3938)
3939{
3940 WDI_EventInfoType wdiEventData;
3941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3942
3943 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003944 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 ------------------------------------------------------------------------*/
3946 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3947 {
3948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3949 "WDI API call before module is initialized - Fail request");
3950
Jeff Johnsone7245742012-09-05 17:12:55 -07003951 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 }
3953
3954 /*------------------------------------------------------------------------
3955 Fill in Event data and post to the Main FSM
3956 ------------------------------------------------------------------------*/
3957 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303958 wdiEventData.pEventData = pwdiExitImpsReqParams;
3959 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003960 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003961 wdiEventData.pUserData = pUserData;
3962
3963 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3964
3965}/*WDI_ExitImpsReq*/
3966
3967/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 request the device to get into BMPS power state. Upon
3970 the call of this API the WLAN DAL will pack and send a
3971 HAL Enter BMPS request message to the lower RIVA
3972 sub-system if DAL is in state STARTED.
3973
3974 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003975 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003976
3977 WDI_PostAssocReq must have been called.
3978
Jeff Johnsone7245742012-09-05 17:12:55 -07003979 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003980 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003981
Jeff Johnson295189b2012-06-20 16:38:30 -07003982 wdiEnterBmpsRspCb: callback for passing back the
3983 response of the Enter BMPS operation received from the
3984 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003985
Jeff Johnson295189b2012-06-20 16:38:30 -07003986 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003987 callback
3988
Jeff Johnson295189b2012-06-20 16:38:30 -07003989 @see WDI_PostAssocReq
3990 @return Result of the function call
3991*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003992WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003993WDI_EnterBmpsReq
3994(
3995 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3996 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3997 void* pUserData
3998)
3999{
4000 WDI_EventInfoType wdiEventData;
4001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4002
4003 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004004 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 ------------------------------------------------------------------------*/
4006 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4007 {
4008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4009 "WDI API call before module is initialized - Fail request");
4010
Jeff Johnsone7245742012-09-05 17:12:55 -07004011 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004012 }
4013
4014 /*------------------------------------------------------------------------
4015 Fill in Event data and post to the Main FSM
4016 ------------------------------------------------------------------------*/
4017 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004018 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
4019 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
4020 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 wdiEventData.pUserData = pUserData;
4022
4023 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4024
4025}/*WDI_EnterBmpsReq*/
4026
4027/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 request the device to get out of BMPS power state. Upon
4030 the call of this API the WLAN DAL will pack and send a
4031 HAL Exit BMPS request message to the lower RIVA
4032 sub-system if DAL is in state STARTED.
4033
4034 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004036
4037 WDI_PostAssocReq must have been called.
4038
Jeff Johnsone7245742012-09-05 17:12:55 -07004039 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004040 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004041
Jeff Johnson295189b2012-06-20 16:38:30 -07004042 wdiExitBmpsRspCb: callback for passing back the response
4043 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004044
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004046 callback
4047
Jeff Johnson295189b2012-06-20 16:38:30 -07004048 @see WDI_PostAssocReq
4049 @return Result of the function call
4050*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004051WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004052WDI_ExitBmpsReq
4053(
4054 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
4055 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
4056 void* pUserData
4057)
4058{
4059 WDI_EventInfoType wdiEventData;
4060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4061
4062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004063 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 ------------------------------------------------------------------------*/
4065 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4066 {
4067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4068 "WDI API call before module is initialized - Fail request");
4069
Jeff Johnsone7245742012-09-05 17:12:55 -07004070 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 }
4072
4073 /*------------------------------------------------------------------------
4074 Fill in Event data and post to the Main FSM
4075 ------------------------------------------------------------------------*/
4076 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004077 wdiEventData.pEventData = pwdiExitBmpsReqParams;
4078 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
4079 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 wdiEventData.pUserData = pUserData;
4081
4082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4083
4084}/*WDI_ExitBmpsReq*/
4085
4086/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004087 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004088 request the device to get into UAPSD power state. Upon
4089 the call of this API the WLAN DAL will pack and send a
4090 HAL Enter UAPSD request message to the lower RIVA
4091 sub-system if DAL is in state STARTED.
4092
4093 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004094 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004095
4096 WDI_PostAssocReq must have been called.
4097 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004098
4099 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004100 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004101
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 wdiEnterUapsdRspCb: callback for passing back the
4103 response of the Enter UAPSD operation received from the
4104 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004105
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004107 callback
4108
Jeff Johnson295189b2012-06-20 16:38:30 -07004109 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4110 @return Result of the function call
4111*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004112WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004113WDI_EnterUapsdReq
4114(
4115 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4116 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4117 void* pUserData
4118)
4119{
4120 WDI_EventInfoType wdiEventData;
4121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4122
4123 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004124 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 ------------------------------------------------------------------------*/
4126 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4127 {
4128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4129 "WDI API call before module is initialized - Fail request");
4130
Jeff Johnsone7245742012-09-05 17:12:55 -07004131 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 }
4133
4134 /*------------------------------------------------------------------------
4135 Fill in Event data and post to the Main FSM
4136 ------------------------------------------------------------------------*/
4137 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4139 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4140 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004141 wdiEventData.pUserData = pUserData;
4142
4143 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4144
4145}/*WDI_EnterUapsdReq*/
4146
4147/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004148 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004149 request the device to get out of UAPSD power state. Upon
4150 the call of this API the WLAN DAL will send a HAL Exit
4151 UAPSD request message to the lower RIVA sub-system if
4152 DAL is in state STARTED.
4153
4154 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004155 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004156
4157 WDI_PostAssocReq must have been called.
4158
Jeff Johnsone7245742012-09-05 17:12:55 -07004159 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004160 response of the Exit UAPSD operation received from the
4161 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004162
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004164 callback
4165
Jeff Johnson295189b2012-06-20 16:38:30 -07004166 @see WDI_PostAssocReq
4167 @return Result of the function call
4168*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004169WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004170WDI_ExitUapsdReq
4171(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004172 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004173 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4174 void* pUserData
4175)
4176{
4177 WDI_EventInfoType wdiEventData;
4178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4179
4180 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004182 ------------------------------------------------------------------------*/
4183 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4184 {
4185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4186 "WDI API call before module is initialized - Fail request");
4187
Jeff Johnsone7245742012-09-05 17:12:55 -07004188 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004189 }
4190
4191 /*------------------------------------------------------------------------
4192 Fill in Event data and post to the Main FSM
4193 ------------------------------------------------------------------------*/
4194 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004195 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4196 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004197 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 wdiEventData.pUserData = pUserData;
4199
4200 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4201
4202}/*WDI_ExitUapsdReq*/
4203
4204/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004205 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004206 MAC wants to set the UAPSD related configurations
4207 of an associated STA (while acting as an AP) to the WLAN
4208 Device. Upon the call of this API the WLAN DAL will pack
4209 and send a HAL Update UAPSD params request message to
4210 the lower RIVA sub-system if DAL is in state STARTED.
4211
4212 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004214
4215 WDI_ConfigBSSReq must have been called.
4216
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004218 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004219
Jeff Johnson295189b2012-06-20 16:38:30 -07004220 wdiUpdateUapsdParamsCb: callback for passing back the
4221 response of the update UAPSD params operation received
4222 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004223
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004225 callback
4226
Jeff Johnson295189b2012-06-20 16:38:30 -07004227 @see WDI_ConfigBSSReq
4228 @return Result of the function call
4229*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004230WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004231WDI_UpdateUapsdParamsReq
4232(
4233 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4234 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4235 void* pUserData
4236)
4237{
4238 WDI_EventInfoType wdiEventData;
4239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4240
4241 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004242 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004243 ------------------------------------------------------------------------*/
4244 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4245 {
4246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4247 "WDI API call before module is initialized - Fail request");
4248
Jeff Johnsone7245742012-09-05 17:12:55 -07004249 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 }
4251
4252 /*------------------------------------------------------------------------
4253 Fill in Event data and post to the Main FSM
4254 ------------------------------------------------------------------------*/
4255 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004256 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004257 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004258 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 wdiEventData.pUserData = pUserData;
4260
4261 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4262
4263}/*WDI_UpdateUapsdParamsReq*/
4264
4265/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004266 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004267 MAC wants to set the UAPSD related configurations before
4268 requesting for enter UAPSD power state to the WLAN
4269 Device. Upon the call of this API the WLAN DAL will pack
4270 and send a HAL Set UAPSD params request message to
4271 the lower RIVA sub-system if DAL is in state STARTED.
4272
4273 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004275
4276 WDI_PostAssocReq must have been called.
4277
4278 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4279 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004280
Jeff Johnson295189b2012-06-20 16:38:30 -07004281 wdiSetUapsdAcParamsCb: callback for passing back the
4282 response of the set UAPSD params operation received from
4283 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004284
Jeff Johnson295189b2012-06-20 16:38:30 -07004285 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004286 callback
4287
Jeff Johnson295189b2012-06-20 16:38:30 -07004288 @see WDI_PostAssocReq
4289 @return Result of the function call
4290*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004291WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004292WDI_SetUapsdAcParamsReq
4293(
4294 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4295 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4296 void* pUserData
4297)
4298{
4299 WDI_EventInfoType wdiEventData;
4300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4301
4302 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 ------------------------------------------------------------------------*/
4305 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4306 {
4307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4308 "WDI API call before module is initialized - Fail request");
4309
Jeff Johnsone7245742012-09-05 17:12:55 -07004310 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004311 }
4312
4313 /*------------------------------------------------------------------------
4314 Fill in Event data and post to the Main FSM
4315 ------------------------------------------------------------------------*/
4316 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004317 wdiEventData.pEventData = pwdiUapsdInfo;
4318 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4319 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004320 wdiEventData.pUserData = pUserData;
4321
4322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4323
4324}/*WDI_SetUapsdAcParamsReq*/
4325
4326/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304327 @brief WDI_FWLoggingDXEdoneInd
4328
4329 FW Logging DXE done Indication from the upper layer will be sent
4330 down to HAL
4331
4332 @param WDI_FWLoggingDXEdoneIndInfoType
4333
4334 @see
4335
4336 @return Status of the request
4337*/
4338WDI_Status
4339WDI_FWLoggingDXEdoneInd
4340(
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304341 wpt_uint32 data
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304342)
4343{
4344
4345 WDI_EventInfoType wdiEventData;
4346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4347
4348 /*------------------------------------------------------------------------
4349 Sanity Check
4350 ------------------------------------------------------------------------*/
4351 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4352 {
4353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4354 "WDI API call before module is initialized - Fail request");
4355
4356 return WDI_STATUS_E_NOT_ALLOWED;
4357 }
4358
4359 /*------------------------------------------------------------------------
4360 Fill in Event data and post to the Main FSM
4361 ------------------------------------------------------------------------*/
4362 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304363 wdiEventData.pEventData = (void *)&data;
4364 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304365 wdiEventData.pCBfnc = NULL;
4366 wdiEventData.pUserData = NULL;
4367
4368 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4369
4370}/*WDI_FWLoggingDXEdoneInd*/
4371
4372/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304373 @brief WDI_GetFrameLogReq will be called when the upper
4374 MAC wants to initialize frame logging. Upon the call of
4375 this API the WLAN DAL will pack and send a HAL
4376 Frame logging init request message to
4377 the lower RIVA sub-system.
4378
4379 In state BUSY this request will be queued. Request won't
4380 be allowed in any other state.
4381
4382
4383 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4384 as specified by the Device Interface
4385
4386 wdiGetFrameLogRspCb: callback for passing back the
4387 response of the frame logging init operation received
4388 from the device
4389
4390 pUserData: user data will be passed back with the
4391 callback
4392
4393 @return Result of the function call
4394*/
4395WDI_Status
4396WDI_GetFrameLogReq
4397(
4398 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4399 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4400 void* pUserData
4401)
4402{
4403 WDI_EventInfoType wdiEventData;
4404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4405
4406 /*------------------------------------------------------------------------
4407 Sanity Check
4408 ------------------------------------------------------------------------*/
4409 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4410 {
4411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4412 "WDI API call before module is initialized - Fail request");
4413
4414 return WDI_STATUS_E_NOT_ALLOWED;
4415 }
4416
4417 /*------------------------------------------------------------------------
4418 Fill in Event data and post to the Main FSM
4419 ------------------------------------------------------------------------*/
4420 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4421 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4422 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4423 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4424 wdiEventData.pUserData = pUserData;
4425
4426 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4427}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304428
4429
4430/**
4431 @brief WDI_FatalEventLogsReq will be called when the upper
4432 MAC wants to send the flush command. Upon the call of
4433 this API the WLAN DAL will pack and send a HAL
4434 Fatal Event Req message to the lower RIVA sub-system.
4435
4436 In state BUSY this request will be queued. Request won't
4437 be allowed in any other state.
4438
4439
4440 @param pwdiFlushLogsReqInfo: the Flush Logs params
4441 as specified by the Device Interface
4442
4443 wdiFlushLogsRspCb: callback for passing back the
4444 response of the Flush Logs operation received
4445 from the device
4446
4447 pUserData: user data will be passed back with the
4448 callback
4449
4450 @return Result of the function call
4451*/
4452
4453WDI_Status
4454WDI_FatalEventLogsReq
4455(
4456 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4457 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4458 void* pUserData
4459)
4460{
4461 WDI_EventInfoType wdiEventData;
4462
4463 /*------------------------------------------------------------------------
4464 Sanity Check
4465 ------------------------------------------------------------------------*/
4466 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4467 {
4468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4469 "WDI API call before module is initialized - Fail request");
4470
4471 return WDI_STATUS_E_NOT_ALLOWED;
4472 }
4473
4474 /*------------------------------------------------------------------------
4475 Fill in Event data and post to the Main FSM
4476 ------------------------------------------------------------------------*/
4477 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4478 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4479 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4480 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4481 wdiEventData.pUserData = pUserData;
4482
4483 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4484
4485}
4486
4487
Siddharth Bhal64246172015-02-27 01:04:37 +05304488/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304489 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304490 MAC wants to initialize frame logging. Upon the call of
4491 this API the WLAN DAL will pack and send a HAL
4492 Frame logging init request message to
4493 the lower RIVA sub-system.
4494
4495 In state BUSY this request will be queued. Request won't
4496 be allowed in any other state.
4497
4498
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304499 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304500 as specified by the Device Interface
4501
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304502 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304503 response of the frame logging init operation received
4504 from the device
4505
4506 pUserData: user data will be passed back with the
4507 callback
4508
4509 @return Result of the function call
4510*/
4511WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304512WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304513(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304514 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4515 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304516 void* pUserData
4517)
4518{
4519 WDI_EventInfoType wdiEventData;
4520
4521 /*------------------------------------------------------------------------
4522 Sanity Check
4523 ------------------------------------------------------------------------*/
4524 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4525 {
4526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4527 "WDI API call before module is initialized - Fail request");
4528
4529 return WDI_STATUS_E_NOT_ALLOWED;
4530 }
4531
4532 /*------------------------------------------------------------------------
4533 Fill in Event data and post to the Main FSM
4534 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304535 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4536 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4537 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4538 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304539 wdiEventData.pUserData = pUserData;
4540
4541 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4542}
4543
c_manjeecfd1efb2015-09-25 19:32:34 +05304544
4545/**
4546 @brief WDI_FwrMemDumpReq will be called when the upper
4547 MAC wants to get fwr mem dump. Upon the call of
4548 this API the WLAN DAL will pack and send a HAL
4549 Frame logging init request message to
4550 the lower RIVA sub-system.
4551
4552 In state BUSY this request will be queued. Request won't
4553 be allowed in any other state.
4554
4555
4556 @param pWdiFwrMemDumpReq: the fwr mem dump req params
4557 as specified by the Device Interface
4558
4559 wdiFWLoggingInitReqCb: callback for passing back the
4560 response of the frame logging init operation received
4561 from the device
4562
4563 pUserData: user data will be passed back with the
4564 callback
4565
4566 @return Result of the function call
4567*/
4568
4569WDI_Status
4570WDI_FwrMemDumpReq
4571
4572(
4573 WDI_FwrMemDumpReqType *pwdiFwrMemDumpReqInfo,
4574 WDI_FwrMemDumpCb wdiFwrMemDumpRspCb,
4575 void* pUserData
4576)
4577{
4578 WDI_EventInfoType wdiEventData;
4579
4580 /*------------------------------------------------------------------------
4581 Sanity Check
4582 ------------------------------------------------------------------------*/
4583 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4584 {
4585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4586 "WDI API call before module is initialized - Fail request");
4587
4588 return WDI_STATUS_E_NOT_ALLOWED;
4589 }
4590
4591 /*------------------------------------------------------------------------
4592 Fill in Event data and post to the Main FSM
4593 ------------------------------------------------------------------------*/
4594 wdiEventData.wdiRequest = WDI_FWR_MEM_DUMP_REQ;
4595 wdiEventData.pEventData = pwdiFwrMemDumpReqInfo;
4596 wdiEventData.uEventDataSize = sizeof(WDI_FwrMemDumpReqType);
4597 wdiEventData.pCBfnc = wdiFwrMemDumpRspCb;
4598 wdiEventData.pUserData = pUserData;
4599
4600 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4601}
4602
4603
4604
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304605/**
Gupta, Kapil7c34b322015-09-30 13:12:35 +05304606 @brief WDI_StartRssiMonitorReq will be called when the upper
4607 MAC wants to initialize Rssi Monitor on a bssid.
4608 Upon the call of this API the WLAN DAL will pack and
4609 send a HAL Rssi Monitor init request message to
4610 the lower RIVA sub-system.
4611
4612 In state BUSY this request will be queued. Request won't
4613 be allowed in any other state.
4614
4615
4616 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4617 as specified by the Device Interface
4618
4619 wdiRssiMonitorStartRspCb: callback for passing back the
4620 response of the rssi monitor operation received
4621 from the device
4622
4623 pUserData: user data will be passed back with the
4624 callback
4625
4626 @return Result of the function call
4627*/
4628WDI_Status
4629WDI_StartRssiMonitorReq
4630(
4631 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4632 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb,
4633 void* pUserData
4634)
4635{
4636 WDI_EventInfoType wdiEventData;
4637
4638 /*------------------------------------------------------------------------
4639 Sanity Check
4640 ------------------------------------------------------------------------*/
4641 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4642 {
4643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4644 "WDI API call before module is initialized - Fail request");
4645
4646 return WDI_STATUS_E_NOT_ALLOWED;
4647 }
4648
4649 /*------------------------------------------------------------------------
4650 Fill in Event data and post to the Main FSM
4651 ------------------------------------------------------------------------*/
4652 wdiEventData.wdiRequest = WDI_START_RSSI_MONITOR_REQ;
4653 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4654 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4655 wdiEventData.pCBfnc = wdiRssiMonitorStartRspCb;
4656 wdiEventData.pUserData = pUserData;
4657
4658 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4659}
4660
4661/**
4662 @brief WDI_StopRssiMonitorReq will be called when the upper
4663 MAC wants to stop Rssi Monitor on a bssid.
4664 Upon the call of this API the WLAN DAL will pack and
4665 send a HAL Rssi Monitor stop request message to
4666 the lower RIVA sub-system.
4667
4668 In state BUSY this request will be queued. Request won't
4669 be allowed in any other state.
4670
4671
4672 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4673 as specified by the Device Interface
4674
4675 wdiRssiMonitorStopRspCb: callback for passing back the
4676 response of the rssi monitor operation received
4677 from the device
4678
4679 pUserData: user data will be passed back with the
4680 callback
4681
4682 @return Result of the function call
4683*/
4684WDI_Status
4685WDI_StopRssiMonitorReq
4686(
4687 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4688 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb,
4689 void* pUserData
4690)
4691{
4692 WDI_EventInfoType wdiEventData;
4693
4694 /*------------------------------------------------------------------------
4695 Sanity Check
4696 ------------------------------------------------------------------------*/
4697 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4698 {
4699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4700 "WDI API call before module is initialized - Fail request");
4701
4702 return WDI_STATUS_E_NOT_ALLOWED;
4703 }
4704
4705 /*------------------------------------------------------------------------
4706 Fill in Event data and post to the Main FSM
4707 ------------------------------------------------------------------------*/
4708 wdiEventData.wdiRequest = WDI_STOP_RSSI_MONITOR_REQ;
4709 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4710 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4711 wdiEventData.pCBfnc = wdiRssiMonitorStopRspCb;
4712 wdiEventData.pUserData = pUserData;
4713
4714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4715}
4716
4717
4718/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004719 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004720 MAC wants to set/reset the RXP filters for received pkts
4721 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4722 and send a HAL configure RXP filter request message to
4723 the lower RIVA sub-system.
4724
4725 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004726 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004727
Jeff Johnsone7245742012-09-05 17:12:55 -07004728
4729 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004730 filter as specified by the Device
4731 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004732
Jeff Johnson295189b2012-06-20 16:38:30 -07004733 wdiConfigureRxpFilterCb: callback for passing back the
4734 response of the configure RXP filter operation received
4735 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004736
Jeff Johnson295189b2012-06-20 16:38:30 -07004737 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004738 callback
4739
Jeff Johnson295189b2012-06-20 16:38:30 -07004740 @return Result of the function call
4741*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004742WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004743WDI_ConfigureRxpFilterReq
4744(
4745 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4746 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4747 void* pUserData
4748)
4749{
4750 WDI_EventInfoType wdiEventData;
4751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4752
4753 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004754 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004755 ------------------------------------------------------------------------*/
4756 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4757 {
4758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4759 "WDI API call before module is initialized - Fail request");
4760
Jeff Johnsone7245742012-09-05 17:12:55 -07004761 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004762 }
4763
4764 /*------------------------------------------------------------------------
4765 Fill in Event data and post to the Main FSM
4766 ------------------------------------------------------------------------*/
4767 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004768 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4769 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4770 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004771 wdiEventData.pUserData = pUserData;
4772
4773 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4774}/*WDI_ConfigureRxpFilterReq*/
4775
4776/**
4777 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4778 wants to set the beacon filters while in power save.
4779 Upon the call of this API the WLAN DAL will pack and
4780 send a Beacon filter request message to the
4781 lower RIVA sub-system.
4782
4783 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004784 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004785
Jeff Johnsone7245742012-09-05 17:12:55 -07004786
4787 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004788 filter as specified by the Device
4789 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004790
Jeff Johnson295189b2012-06-20 16:38:30 -07004791 wdiBeaconFilterCb: callback for passing back the
4792 response of the set beacon filter operation received
4793 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004794
Jeff Johnson295189b2012-06-20 16:38:30 -07004795 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004796 callback
4797
Jeff Johnson295189b2012-06-20 16:38:30 -07004798 @return Result of the function call
4799*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004800WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004801WDI_SetBeaconFilterReq
4802(
4803 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4804 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4805 void* pUserData
4806)
4807{
4808 WDI_EventInfoType wdiEventData;
4809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4810
4811 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004812 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004813 ------------------------------------------------------------------------*/
4814 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4815 {
4816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4817 "WDI API call before module is initialized - Fail request");
4818
Jeff Johnsone7245742012-09-05 17:12:55 -07004819 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004820 }
4821
4822 /*------------------------------------------------------------------------
4823 Fill in Event data and post to the Main FSM
4824 ------------------------------------------------------------------------*/
4825 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004826 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004827 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004828 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004829 wdiEventData.pUserData = pUserData;
4830
4831 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4832}/*WDI_SetBeaconFilterReq*/
4833
4834/**
4835 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4836 wants to remove the beacon filter for particular IE
4837 while in power save. Upon the call of this API the WLAN
4838 DAL will pack and send a remove Beacon filter request
4839 message to the lower RIVA sub-system.
4840
4841 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004843
Jeff Johnsone7245742012-09-05 17:12:55 -07004844
4845 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004846 filter as specified by the Device
4847 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004848
Jeff Johnson295189b2012-06-20 16:38:30 -07004849 wdiBeaconFilterCb: callback for passing back the
4850 response of the remove beacon filter operation received
4851 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004852
Jeff Johnson295189b2012-06-20 16:38:30 -07004853 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004854 callback
4855
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 @return Result of the function call
4857*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004858WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004859WDI_RemBeaconFilterReq
4860(
4861 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4862 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4863 void* pUserData
4864)
4865{
4866 WDI_EventInfoType wdiEventData;
4867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4868
4869 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004870 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004871 ------------------------------------------------------------------------*/
4872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4873 {
4874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4875 "WDI API call before module is initialized - Fail request");
4876
Jeff Johnsone7245742012-09-05 17:12:55 -07004877 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 }
4879
4880 /*------------------------------------------------------------------------
4881 Fill in Event data and post to the Main FSM
4882 ------------------------------------------------------------------------*/
4883 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004885 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004886 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004887 wdiEventData.pUserData = pUserData;
4888
4889 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4890}/*WDI_RemBeaconFilterReq*/
4891
4892/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004893 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004894 MAC wants to set the RSSI thresholds related
4895 configurations while in power save. Upon the call of
4896 this API the WLAN DAL will pack and send a HAL Set RSSI
4897 thresholds request message to the lower RIVA
4898 sub-system if DAL is in state STARTED.
4899
4900 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004901 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004902
4903 WDI_PostAssocReq must have been called.
4904
4905 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4906 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004907
Jeff Johnson295189b2012-06-20 16:38:30 -07004908 wdiSetUapsdAcParamsCb: callback for passing back the
4909 response of the set UAPSD params operation received from
4910 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004911
Jeff Johnson295189b2012-06-20 16:38:30 -07004912 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004913 callback
4914
Jeff Johnson295189b2012-06-20 16:38:30 -07004915 @see WDI_PostAssocReq
4916 @return Result of the function call
4917*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004918WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004919WDI_SetRSSIThresholdsReq
4920(
4921 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4922 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4923 void* pUserData
4924)
4925{
4926 WDI_EventInfoType wdiEventData;
4927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4928
4929 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004930 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 ------------------------------------------------------------------------*/
4932 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4933 {
4934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4935 "WDI API call before module is initialized - Fail request");
4936
Jeff Johnsone7245742012-09-05 17:12:55 -07004937 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004938 }
4939
4940 /*------------------------------------------------------------------------
4941 Fill in Event data and post to the Main FSM
4942 ------------------------------------------------------------------------*/
4943 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004944 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004945 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004946 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004947 wdiEventData.pUserData = pUserData;
4948
4949 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4950}/* WDI_SetRSSIThresholdsReq*/
4951
4952/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004953 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004954 wants to set the filter to minimize unnecessary host
4955 wakeup due to broadcast traffic while in power save.
4956 Upon the call of this API the WLAN DAL will pack and
4957 send a HAL host offload request message to the
4958 lower RIVA sub-system if DAL is in state STARTED.
4959
4960 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004962
4963 WDI_PostAssocReq must have been called.
4964
Jeff Johnsone7245742012-09-05 17:12:55 -07004965 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004966 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004967
Jeff Johnson295189b2012-06-20 16:38:30 -07004968 wdiHostOffloadCb: callback for passing back the response
4969 of the host offload operation received from the
4970 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004971
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 callback
4974
Jeff Johnson295189b2012-06-20 16:38:30 -07004975 @see WDI_PostAssocReq
4976 @return Result of the function call
4977*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004978WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004979WDI_HostOffloadReq
4980(
4981 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4982 WDI_HostOffloadCb wdiHostOffloadCb,
4983 void* pUserData
4984)
4985{
4986 WDI_EventInfoType wdiEventData;
4987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4988
4989 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004990 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004991 ------------------------------------------------------------------------*/
4992 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4993 {
4994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4995 "WDI API call before module is initialized - Fail request");
4996
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 }
4999
5000 /*------------------------------------------------------------------------
5001 Fill in Event data and post to the Main FSM
5002 ------------------------------------------------------------------------*/
5003 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005005 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005006 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005007 wdiEventData.pUserData = pUserData;
5008
5009 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5010}/*WDI_HostOffloadReq*/
5011
5012/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005013 @brief WDI_KeepAliveReq will be called when the upper MAC
5014 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07005015 and minimize unnecessary host wakeups due to while in power save.
5016 Upon the call of this API the WLAN DAL will pack and
5017 send a HAL Keep Alive request message to the
5018 lower RIVA sub-system if DAL is in state STARTED.
5019
5020 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005021 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005022
5023 WDI_PostAssocReq must have been called.
5024
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005026 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005027
Jeff Johnson295189b2012-06-20 16:38:30 -07005028 wdiKeepAliveCb: callback for passing back the response
5029 of the Keep Alive operation received from the
5030 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005031
Jeff Johnson295189b2012-06-20 16:38:30 -07005032 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005033 callback
5034
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 @see WDI_PostAssocReq
5036 @return Result of the function call
5037*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005038WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005039WDI_KeepAliveReq
5040(
5041 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
5042 WDI_KeepAliveCb wdiKeepAliveCb,
5043 void* pUserData
5044)
5045{
5046 WDI_EventInfoType wdiEventData;
5047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5048
5049 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005050 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005051 ------------------------------------------------------------------------*/
5052 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5053 {
5054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5055 "WDI_KeepAliveReq: WDI API call before module "
5056 "is initialized - Fail request");
5057
Jeff Johnsone7245742012-09-05 17:12:55 -07005058 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005059 }
5060
5061 /*------------------------------------------------------------------------
5062 Fill in Event data and post to the Main FSM
5063 ------------------------------------------------------------------------*/
5064 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005065 wdiEventData.pEventData = pwdiKeepAliveParams;
5066 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
5067 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005068 wdiEventData.pUserData = pUserData;
5069
5070 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5071}/*WDI_KeepAliveReq*/
5072
5073/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005075 wants to set the Wowl Bcast ptrn to minimize unnecessary
5076 host wakeup due to broadcast traffic while in power
5077 save. Upon the call of this API the WLAN DAL will pack
5078 and send a HAL Wowl Bcast ptrn request message to the
5079 lower RIVA sub-system if DAL is in state STARTED.
5080
5081 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005082 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005083
5084 WDI_PostAssocReq must have been called.
5085
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005088
Jeff Johnson295189b2012-06-20 16:38:30 -07005089 wdiWowlAddBcPtrnCb: callback for passing back the
5090 response of the add Wowl bcast ptrn operation received
5091 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005092
Jeff Johnson295189b2012-06-20 16:38:30 -07005093 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 callback
5095
Jeff Johnson295189b2012-06-20 16:38:30 -07005096 @see WDI_PostAssocReq
5097 @return Result of the function call
5098*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005099WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005100WDI_WowlAddBcPtrnReq
5101(
5102 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
5103 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
5104 void* pUserData
5105)
5106{
5107 WDI_EventInfoType wdiEventData;
5108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5109
5110 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005111 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 ------------------------------------------------------------------------*/
5113 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5114 {
5115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5116 "WDI API call before module is initialized - Fail request");
5117
Jeff Johnsone7245742012-09-05 17:12:55 -07005118 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 }
5120
5121 /*------------------------------------------------------------------------
5122 Fill in Event data and post to the Main FSM
5123 ------------------------------------------------------------------------*/
5124 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005125 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005126 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005127 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005128 wdiEventData.pUserData = pUserData;
5129
5130 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5131}/*WDI_WowlAddBcPtrnReq*/
5132
5133/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005135 wants to clear the Wowl Bcast ptrn. Upon the call of
5136 this API the WLAN DAL will pack and send a HAL delete
5137 Wowl Bcast ptrn request message to the lower RIVA
5138 sub-system if DAL is in state STARTED.
5139
5140 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005142
5143 WDI_WowlAddBcPtrnReq must have been called.
5144
Jeff Johnsone7245742012-09-05 17:12:55 -07005145 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005147
Jeff Johnson295189b2012-06-20 16:38:30 -07005148 wdiWowlDelBcPtrnCb: callback for passing back the
5149 response of the del Wowl bcast ptrn operation received
5150 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005151
Jeff Johnson295189b2012-06-20 16:38:30 -07005152 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005153 callback
5154
Jeff Johnson295189b2012-06-20 16:38:30 -07005155 @see WDI_WowlAddBcPtrnReq
5156 @return Result of the function call
5157*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005158WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005159WDI_WowlDelBcPtrnReq
5160(
5161 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
5162 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
5163 void* pUserData
5164)
5165{
5166 WDI_EventInfoType wdiEventData;
5167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5168
5169 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005170 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005171 ------------------------------------------------------------------------*/
5172 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5173 {
5174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5175 "WDI API call before module is initialized - Fail request");
5176
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005178 }
5179
5180 /*------------------------------------------------------------------------
5181 Fill in Event data and post to the Main FSM
5182 ------------------------------------------------------------------------*/
5183 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005184 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005185 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005186 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005187 wdiEventData.pUserData = pUserData;
5188
5189 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5190}/*WDI_WowlDelBcPtrnReq*/
5191
5192/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005193 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005194 wants to enter the Wowl state to minimize unnecessary
5195 host wakeup while in power save. Upon the call of this
5196 API the WLAN DAL will pack and send a HAL Wowl enter
5197 request message to the lower RIVA sub-system if DAL is
5198 in state STARTED.
5199
5200 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005201 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005202
5203 WDI_PostAssocReq must have been called.
5204
Jeff Johnsone7245742012-09-05 17:12:55 -07005205 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005206 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005207
Jeff Johnson295189b2012-06-20 16:38:30 -07005208 wdiWowlEnterReqCb: callback for passing back the
5209 response of the enter Wowl operation received from the
5210 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005211
Jeff Johnson295189b2012-06-20 16:38:30 -07005212 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005213 callback
5214
Jeff Johnson295189b2012-06-20 16:38:30 -07005215 @see WDI_PostAssocReq
5216 @return Result of the function call
5217*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005218WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005219WDI_WowlEnterReq
5220(
5221 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
5222 WDI_WowlEnterReqCb wdiWowlEnterCb,
5223 void* pUserData
5224)
5225{
5226 WDI_EventInfoType wdiEventData;
5227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5228
5229 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005230 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005231 ------------------------------------------------------------------------*/
5232 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5233 {
5234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5235 "WDI API call before module is initialized - Fail request");
5236
Jeff Johnsone7245742012-09-05 17:12:55 -07005237 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005238 }
5239
5240 /*------------------------------------------------------------------------
5241 Fill in Event data and post to the Main FSM
5242 ------------------------------------------------------------------------*/
5243 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005244 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005245 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005246 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005247 wdiEventData.pUserData = pUserData;
5248
5249 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5250}/*WDI_WowlEnterReq*/
5251
5252/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005253 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005254 wants to exit the Wowl state. Upon the call of this API
5255 the WLAN DAL will pack and send a HAL Wowl exit request
5256 message to the lower RIVA sub-system if DAL is in state
5257 STARTED.
5258
5259 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005260 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005261
5262 WDI_WowlEnterReq must have been called.
5263
Jeff Johnsone7245742012-09-05 17:12:55 -07005264 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005265 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005266
Jeff Johnson295189b2012-06-20 16:38:30 -07005267 wdiWowlExitReqCb: callback for passing back the response
5268 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005269
Jeff Johnson295189b2012-06-20 16:38:30 -07005270 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005271 callback
5272
Jeff Johnson295189b2012-06-20 16:38:30 -07005273 @see WDI_WowlEnterReq
5274 @return Result of the function call
5275*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005276WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005277WDI_WowlExitReq
5278(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005279 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005280 WDI_WowlExitReqCb wdiWowlExitCb,
5281 void* pUserData
5282)
5283{
5284 WDI_EventInfoType wdiEventData;
5285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5286
5287 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005288 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005289 ------------------------------------------------------------------------*/
5290 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5291 {
5292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5293 "WDI API call before module is initialized - Fail request");
5294
Jeff Johnsone7245742012-09-05 17:12:55 -07005295 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005296 }
5297
5298 /*------------------------------------------------------------------------
5299 Fill in Event data and post to the Main FSM
5300 ------------------------------------------------------------------------*/
5301 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005302 wdiEventData.pEventData = pwdiWowlExitParams;
5303 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005304 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005305 wdiEventData.pUserData = pUserData;
5306
5307 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5308}/*WDI_WowlExitReq*/
5309
5310/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005311 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005312 the upper MAC wants to dynamically adjusts the listen
5313 interval based on the WLAN/MSM activity. Upon the call
5314 of this API the WLAN DAL will pack and send a HAL
5315 configure Apps Cpu Wakeup State request message to the
5316 lower RIVA sub-system.
5317
5318 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005319 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005320
Jeff Johnsone7245742012-09-05 17:12:55 -07005321
5322 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005323 Apps Cpu Wakeup State as specified by the
5324 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005325
Jeff Johnson295189b2012-06-20 16:38:30 -07005326 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5327 back the response of the configure Apps Cpu Wakeup State
5328 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005329
Jeff Johnson295189b2012-06-20 16:38:30 -07005330 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005331 callback
5332
Jeff Johnson295189b2012-06-20 16:38:30 -07005333 @return Result of the function call
5334*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005335WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005336WDI_ConfigureAppsCpuWakeupStateReq
5337(
5338 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5339 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5340 void* pUserData
5341)
5342{
5343 WDI_EventInfoType wdiEventData;
5344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5345
5346 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005347 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005348 ------------------------------------------------------------------------*/
5349 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5350 {
5351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5352 "WDI API call before module is initialized - Fail request");
5353
Jeff Johnsone7245742012-09-05 17:12:55 -07005354 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005355 }
5356
5357 /*------------------------------------------------------------------------
5358 Fill in Event data and post to the Main FSM
5359 ------------------------------------------------------------------------*/
5360 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005361 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5362 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5363 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005364 wdiEventData.pUserData = pUserData;
5365
5366 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5367}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5368/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005369 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005370 to to perform a flush operation on a given AC. Upon the
5371 call of this API the WLAN DAL will pack and send a HAL
5372 Flush AC request message to the lower RIVA sub-system if
5373 DAL is in state STARTED.
5374
5375 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005376 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005377
5378 WDI_AddBAReq must have been called.
5379
Jeff Johnsone7245742012-09-05 17:12:55 -07005380 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005382
Jeff Johnson295189b2012-06-20 16:38:30 -07005383 wdiFlushAcRspCb: callback for passing back the response
5384 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005385
Jeff Johnson295189b2012-06-20 16:38:30 -07005386 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005387 callback
5388
Jeff Johnson295189b2012-06-20 16:38:30 -07005389 @see WDI_AddBAReq
5390 @return Result of the function call
5391*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005392WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005393WDI_FlushAcReq
5394(
5395 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5396 WDI_FlushAcRspCb wdiFlushAcRspCb,
5397 void* pUserData
5398)
5399{
5400 WDI_EventInfoType wdiEventData;
5401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5402
5403 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005404 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005405 ------------------------------------------------------------------------*/
5406 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5407 {
5408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5409 "WDI API call before module is initialized - Fail request");
5410
Jeff Johnsone7245742012-09-05 17:12:55 -07005411 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005412 }
5413
5414 /*------------------------------------------------------------------------
5415 Fill in Event data and post to the Main FSM
5416 ------------------------------------------------------------------------*/
5417 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005418 wdiEventData.pEventData = pwdiFlushAcReqParams;
5419 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5420 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005421 wdiEventData.pUserData = pUserData;
5422
5423 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5424
5425}/*WDI_FlushAcReq*/
5426
5427/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005428 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 wants to notify the lower mac on a BT AMP event. This is
5430 to inform BTC-SLM that some BT AMP event occurred. Upon
5431 the call of this API the WLAN DAL will pack and send a
5432 HAL BT AMP event request message to the lower RIVA
5433 sub-system if DAL is in state STARTED.
5434
5435 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005436 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005437
Jeff Johnsone7245742012-09-05 17:12:55 -07005438
5439 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005440 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005441
Jeff Johnson295189b2012-06-20 16:38:30 -07005442 wdiBtAmpEventRspCb: callback for passing back the
5443 response of the BT AMP event operation received from the
5444 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005445
Jeff Johnson295189b2012-06-20 16:38:30 -07005446 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005447 callback
5448
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 @return Result of the function call
5450*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005451WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005452WDI_BtAmpEventReq
5453(
5454 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5455 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5456 void* pUserData
5457)
5458{
5459 WDI_EventInfoType wdiEventData;
5460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5461
5462 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005464 ------------------------------------------------------------------------*/
5465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5466 {
5467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5468 "WDI API call before module is initialized - Fail request");
5469
Jeff Johnsone7245742012-09-05 17:12:55 -07005470 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 }
5472
5473 /*------------------------------------------------------------------------
5474 Fill in Event data and post to the Main FSM
5475 ------------------------------------------------------------------------*/
5476 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005477 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5478 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5479 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005480 wdiEventData.pUserData = pUserData;
5481
5482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5483
5484}/*WDI_BtAmpEventReq*/
5485
Jeff Johnsone7245742012-09-05 17:12:55 -07005486#ifdef FEATURE_OEM_DATA_SUPPORT
5487/**
5488 @brief WDI_Start Oem Data Req will be called when the upper MAC
5489 wants to notify the lower mac on a oem data Req event.Upon
5490 the call of this API the WLAN DAL will pack and send a
5491 HAL OEM Data Req event request message to the lower RIVA
5492 sub-system if DAL is in state STARTED.
5493
5494 In state BUSY this request will be queued. Request won't
5495 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005496
5497
Jeff Johnsone7245742012-09-05 17:12:55 -07005498
5499 @param pwdiOemDataReqParams: the Oem Data Req as
5500 specified by the Device Interface
5501
5502 wdiStartOemDataRspCb: callback for passing back the
5503 response of the Oem Data Req received from the
5504 device
5505
5506 pUserData: user data will be passed back with the
5507 callback
5508
5509 @return Result of the function call
5510*/
5511WDI_Status
5512WDI_StartOemDataReq
5513(
5514 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5515 WDI_oemDataRspCb wdiOemDataRspCb,
5516 void* pUserData
5517)
5518{
5519 WDI_EventInfoType wdiEventData;
5520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5521
5522 /*------------------------------------------------------------------------
5523 Sanity Check
5524 ------------------------------------------------------------------------*/
5525 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5526 {
5527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5528 "WDI API call before module is initialized - Fail request");
5529
5530 return WDI_STATUS_E_NOT_ALLOWED;
5531 }
5532
5533 /*------------------------------------------------------------------------
5534 Fill in Event data and post to the Main FSM
5535 ------------------------------------------------------------------------*/
5536 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5537 wdiEventData.pEventData = pwdiOemDataReqParams;
5538 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5539 wdiEventData.pCBfnc = wdiOemDataRspCb;
5540 wdiEventData.pUserData = pUserData;
5541
5542 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5543
5544
5545}
5546
5547#endif
5548
5549
5550/*========================================================================
5551
Jeff Johnson295189b2012-06-20 16:38:30 -07005552 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005553
Jeff Johnson295189b2012-06-20 16:38:30 -07005554==========================================================================*/
5555/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005556 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005557 the WLAN HW to change the current channel of operation.
5558 Upon the call of this API the WLAN DAL will pack and
5559 send a HAL Start request message to the lower RIVA
5560 sub-system if DAL is in state STARTED.
5561
5562 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005563 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005564
5565 WDI_Start must have been called.
5566
Jeff Johnsone7245742012-09-05 17:12:55 -07005567 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005568 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005569
Jeff Johnson295189b2012-06-20 16:38:30 -07005570 wdiSwitchChRspCb: callback for passing back the response
5571 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005572
Jeff Johnson295189b2012-06-20 16:38:30 -07005573 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005574 callback
5575
Jeff Johnson295189b2012-06-20 16:38:30 -07005576 @see WDI_Start
5577 @return Result of the function call
5578*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005579WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005580WDI_SwitchChReq
5581(
5582 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5583 WDI_SwitchChRspCb wdiSwitchChRspCb,
5584 void* pUserData
5585)
5586{
5587 WDI_EventInfoType wdiEventData;
5588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5589
5590 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005591 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005592 ------------------------------------------------------------------------*/
5593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5594 {
5595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5596 "WDI API call before module is initialized - Fail request");
5597
Jeff Johnsone7245742012-09-05 17:12:55 -07005598 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005599 }
5600
5601 /*------------------------------------------------------------------------
5602 Fill in Event data and post to the Main FSM
5603 ------------------------------------------------------------------------*/
5604 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005605 wdiEventData.pEventData = pwdiSwitchChReqParams;
5606 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5607 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005608 wdiEventData.pUserData = pUserData;
5609
5610 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5611
5612}/*WDI_SwitchChReq*/
5613
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005614/**
5615 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5616 the WLAN HW to change the current channel of operation.
5617 Upon the call of this API the WLAN DAL will pack and
5618 send a HAL Start request message to the lower RIVA
5619 sub-system if DAL is in state STARTED.
5620 This request message also includes source of channel switch,
5621 like CSA,
5622
5623 In state BUSY this request will be queued. Request won't
5624 be allowed in any other state.
5625
5626 WDI_Start must have been called.
5627
5628 @param wdiSwitchChReqParams: the switch ch parameters as
5629 specified by the Device Interface
5630
5631 wdiSwitchChRspCb: callback for passing back the response
5632 of the switch ch operation received from the device
5633
5634 pUserData: user data will be passed back with the
5635 callback
5636
5637 @see WDI_Start
5638 @return Result of the function call
5639*/
5640WDI_Status
5641WDI_SwitchChReq_V1
5642(
5643 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5644 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5645 void* pUserData
5646)
5647{
5648 WDI_EventInfoType wdiEventData;
5649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5651 "WDI API call WDI_SwitchChReq_V1");
5652 /*------------------------------------------------------------------------
5653 Sanity Check
5654 ------------------------------------------------------------------------*/
5655 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5656 {
5657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5658 "WDI API call before module is initialized - Fail request");
5659
5660 return WDI_STATUS_E_NOT_ALLOWED;
5661 }
5662
5663 /*------------------------------------------------------------------------
5664 Fill in Event data and post to the Main FSM
5665 ------------------------------------------------------------------------*/
5666 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5667 wdiEventData.pEventData = pwdiSwitchChReqParams;
5668 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5669 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5670 wdiEventData.pUserData = pUserData;
5671
5672 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5673
5674}/*WDI_SwitchChReq_V1*/
5675
Jeff Johnson295189b2012-06-20 16:38:30 -07005676
5677/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005678 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 wishes to add or update a STA in HW. Upon the call of
5680 this API the WLAN DAL will pack and send a HAL Start
5681 message request message to the lower RIVA sub-system if
5682 DAL is in state STARTED.
5683
5684 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005685 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005686
5687 WDI_Start must have been called.
5688
Jeff Johnsone7245742012-09-05 17:12:55 -07005689 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005690 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005691
Jeff Johnson295189b2012-06-20 16:38:30 -07005692 wdiConfigSTARspCb: callback for passing back the
5693 response of the config STA operation received from the
5694 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005695
Jeff Johnson295189b2012-06-20 16:38:30 -07005696 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005697 callback
5698
Jeff Johnson295189b2012-06-20 16:38:30 -07005699 @see WDI_Start
5700 @return Result of the function call
5701*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005702WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005703WDI_ConfigSTAReq
5704(
5705 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5706 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5707 void* pUserData
5708)
5709{
5710 WDI_EventInfoType wdiEventData;
5711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5712
5713 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005714 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005715 ------------------------------------------------------------------------*/
5716 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5717 {
5718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5719 "WDI API call before module is initialized - Fail request");
5720
Jeff Johnsone7245742012-09-05 17:12:55 -07005721 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005722 }
5723
5724 /*------------------------------------------------------------------------
5725 Fill in Event data and post to the Main FSM
5726 ------------------------------------------------------------------------*/
5727 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005728 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5729 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5730 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005731 wdiEventData.pUserData = pUserData;
5732
5733 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5734
5735}/*WDI_ConfigSTAReq*/
5736
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005737 /**
5738 @brief WDI_UpdateChannelReq will be called when the upper MAC
5739 wants to update the channel list on change in country code.
5740
5741 In state BUSY this request will be queued. Request won't
5742 be allowed in any other state.
5743
5744 WDI_UpdateChannelReq must have been called.
5745
5746 @param wdiUpdateChannelReqParams: the updated channel parameters
5747 as specified by the Device Interface
5748
5749 wdiUpdateChannelRspCb: callback for passing back the
5750 response of the update channel operation received from
5751 the device
5752
5753 pUserData: user data will be passed back with the
5754 callback
5755
5756 @return Result of the function call
5757*/
5758WDI_Status
5759WDI_UpdateChannelReq
5760(
5761 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5762 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5763 void* pUserData
5764)
5765{
5766 WDI_EventInfoType wdiEventData = {{0}};
5767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5768
5769 /*------------------------------------------------------------------------
5770 Sanity Check
5771 ------------------------------------------------------------------------*/
5772 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5773 {
5774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5775 "WDI API call before module is initialized - Fail request");
5776
5777 return WDI_STATUS_E_NOT_ALLOWED;
5778 }
5779
5780 /*------------------------------------------------------------------------
5781 Fill in Event data and post to the Main FSM
5782 ------------------------------------------------------------------------*/
5783 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5784 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5785 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5786 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5787 wdiEventData.pUserData = pUserData;
5788
5789 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5790
5791}/*WDI_UpdateChannelReq*/
5792
Jeff Johnson295189b2012-06-20 16:38:30 -07005793/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005794 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005795 wants to change the state of an ongoing link. Upon the
5796 call of this API the WLAN DAL will pack and send a HAL
5797 Start message request message to the lower RIVA
5798 sub-system if DAL is in state STARTED.
5799
5800 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005801 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005802
5803 WDI_JoinStartReq must have been called.
5804
Jeff Johnsone7245742012-09-05 17:12:55 -07005805 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005806 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005807
Jeff Johnson295189b2012-06-20 16:38:30 -07005808 wdiSetLinkStateRspCb: callback for passing back the
5809 response of the set link state operation received from
5810 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005811
Jeff Johnson295189b2012-06-20 16:38:30 -07005812 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005813 callback
5814
Jeff Johnson295189b2012-06-20 16:38:30 -07005815 @see WDI_JoinStartReq
5816 @return Result of the function call
5817*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005818WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005819WDI_SetLinkStateReq
5820(
5821 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5822 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5823 void* pUserData
5824)
5825{
5826 WDI_EventInfoType wdiEventData;
5827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5828
5829 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005831 ------------------------------------------------------------------------*/
5832 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5833 {
5834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5835 "WDI API call before module is initialized - Fail request");
5836
Jeff Johnsone7245742012-09-05 17:12:55 -07005837 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 }
5839
5840 /*------------------------------------------------------------------------
5841 Fill in Event data and post to the Main FSM
5842 ------------------------------------------------------------------------*/
5843 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005844 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5845 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5846 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005847 wdiEventData.pUserData = pUserData;
5848
5849 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5850
5851}/*WDI_SetLinkStateReq*/
5852
5853
5854/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005855 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005856 to get statistics (MIB counters) from the device. Upon
5857 the call of this API the WLAN DAL will pack and send a
5858 HAL Start request message to the lower RIVA sub-system
5859 if DAL is in state STARTED.
5860
5861 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005862 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005863
5864 WDI_Start must have been called.
5865
Jeff Johnsone7245742012-09-05 17:12:55 -07005866 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005867 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005868
Jeff Johnson295189b2012-06-20 16:38:30 -07005869 wdiGetStatsRspCb: callback for passing back the response
5870 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005871
Jeff Johnson295189b2012-06-20 16:38:30 -07005872 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005873 callback
5874
Jeff Johnson295189b2012-06-20 16:38:30 -07005875 @see WDI_Start
5876 @return Result of the function call
5877*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005878WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005879WDI_GetStatsReq
5880(
5881 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5882 WDI_GetStatsRspCb wdiGetStatsRspCb,
5883 void* pUserData
5884)
5885{
5886 WDI_EventInfoType wdiEventData;
5887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5888
5889 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005890 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005891 ------------------------------------------------------------------------*/
5892 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5893 {
5894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5895 "WDI API call before module is initialized - Fail request");
5896
Jeff Johnsone7245742012-09-05 17:12:55 -07005897 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005898 }
5899
5900 /*------------------------------------------------------------------------
5901 Fill in Event data and post to the Main FSM
5902 ------------------------------------------------------------------------*/
5903 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005904 wdiEventData.pEventData = pwdiGetStatsReqParams;
5905 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5906 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005907 wdiEventData.pUserData = pUserData;
5908
5909 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5910
5911}/*WDI_GetStatsReq*/
5912
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005913#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005914/**
5915 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5916 to get roam rssi from the device. Upon
5917 the call of this API the WLAN DAL will pack and send a
5918 HAL Start request message to the lower RIVA sub-system
5919 if DAL is in state STARTED.
5920
5921 In state BUSY this request will be queued. Request won't
5922 be allowed in any other state.
5923
5924 WDI_Start must have been called.
5925
5926 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5927 specified by the Device Interface
5928
5929 wdiGetRoamRssiRspCb: callback for passing back the response
5930 of the get stats operation received from the device
5931
5932 pUserData: user data will be passed back with the
5933 callback
5934
5935 @see WDI_Start
5936 @return Result of the function call
5937*/
5938WDI_Status
5939WDI_GetRoamRssiReq
5940(
5941 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5942 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5943 void* pUserData
5944)
5945{
5946 WDI_EventInfoType wdiEventData;
5947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5948
5949 /*------------------------------------------------------------------------
5950 Sanity Check
5951 ------------------------------------------------------------------------*/
5952 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5953 {
5954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5955 "WDI API call before module is initialized - Fail request");
5956
5957 return WDI_STATUS_E_NOT_ALLOWED;
5958 }
5959 /*------------------------------------------------------------------------
5960 Fill in Event data and post to the Main FSM
5961 ------------------------------------------------------------------------*/
5962 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5963 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5964 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5965 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5966 wdiEventData.pUserData = pUserData;
5967
5968 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5969
5970}/*WDI_GetRoamRssiReq*/
5971#endif
5972
Jeff Johnson295189b2012-06-20 16:38:30 -07005973
5974/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 it wishes to change the configuration of the WLAN
5977 Device. Upon the call of this API the WLAN DAL will pack
5978 and send a HAL Update CFG request message to the lower
5979 RIVA sub-system if DAL is in state STARTED.
5980
5981 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005982 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005983
5984 WDI_Start must have been called.
5985
Jeff Johnsone7245742012-09-05 17:12:55 -07005986 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005987 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005988
Jeff Johnson295189b2012-06-20 16:38:30 -07005989 wdiUpdateCfgsRspCb: callback for passing back the
5990 response of the update cfg operation received from the
5991 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005992
Jeff Johnson295189b2012-06-20 16:38:30 -07005993 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005994 callback
5995
Jeff Johnson295189b2012-06-20 16:38:30 -07005996 @see WDI_Start
5997 @return Result of the function call
5998*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005999WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006000WDI_UpdateCfgReq
6001(
6002 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
6003 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
6004 void* pUserData
6005)
6006{
6007 WDI_EventInfoType wdiEventData;
6008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6009
6010 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006011 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006012 ------------------------------------------------------------------------*/
6013 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6014 {
6015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6016 "WDI API call before module is initialized - Fail request");
6017
Jeff Johnsone7245742012-09-05 17:12:55 -07006018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006019 }
6020
6021 /*------------------------------------------------------------------------
6022 Fill in Event data and post to the Main FSM
6023 ------------------------------------------------------------------------*/
6024 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006025 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
6026 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
6027 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006028 wdiEventData.pUserData = pUserData;
6029
6030 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6031
6032}/*WDI_UpdateCfgReq*/
6033
6034
6035
6036/**
6037 @brief WDI_AddBAReq will be called when the upper MAC has setup
6038 successfully a BA session and needs to notify the HW for
6039 the appropriate settings to take place. Upon the call of
6040 this API the WLAN DAL will pack and send a HAL Add BA
6041 request message to the lower RIVA sub-system if DAL is
6042 in state STARTED.
6043
6044 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006045 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006046
6047 WDI_PostAssocReq must have been called.
6048
6049 @param wdiAddBAReqParams: the add BA parameters as specified by
6050 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006051
Jeff Johnson295189b2012-06-20 16:38:30 -07006052 wdiAddBARspCb: callback for passing back the response of
6053 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006054
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006056 callback
6057
Jeff Johnson295189b2012-06-20 16:38:30 -07006058 @see WDI_PostAssocReq
6059 @return Result of the function call
6060*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006061WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006062WDI_AddBAReq
6063(
6064 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
6065 WDI_AddBARspCb wdiAddBARspCb,
6066 void* pUserData
6067)
6068{
6069 WDI_EventInfoType wdiEventData;
6070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6071
6072 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006073 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006074 ------------------------------------------------------------------------*/
6075 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6076 {
6077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6078 "WDI API call before module is initialized - Fail request");
6079
Jeff Johnsone7245742012-09-05 17:12:55 -07006080 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006081 }
6082
6083 /*------------------------------------------------------------------------
6084 Fill in Event data and post to the Main FSM
6085 ------------------------------------------------------------------------*/
6086 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006087 wdiEventData.pEventData = pwdiAddBAReqParams;
6088 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
6089 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006090 wdiEventData.pUserData = pUserData;
6091
6092 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6093
6094}/*WDI_AddBAReq*/
6095
6096
6097/**
6098 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
6099 successfully a BA session and needs to notify the HW for
6100 the appropriate settings to take place. Upon the call of
6101 this API the WLAN DAL will pack and send a HAL Add BA
6102 request message to the lower RIVA sub-system if DAL is
6103 in state STARTED.
6104
6105 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006106 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006107
6108 WDI_PostAssocReq must have been called.
6109
6110 @param wdiAddBAReqParams: the add BA parameters as specified by
6111 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006112
Jeff Johnson295189b2012-06-20 16:38:30 -07006113 wdiAddBARspCb: callback for passing back the response of
6114 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006115
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006117 callback
6118
Jeff Johnson295189b2012-06-20 16:38:30 -07006119 @see WDI_PostAssocReq
6120 @return Result of the function call
6121*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006122WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006123WDI_TriggerBAReq
6124(
6125 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
6126 WDI_TriggerBARspCb wdiTriggerBARspCb,
6127 void* pUserData
6128)
6129{
6130 WDI_EventInfoType wdiEventData;
6131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6132
6133 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006134 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006135 ------------------------------------------------------------------------*/
6136 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6137 {
6138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6139 "WDI API call before module is initialized - Fail request");
6140
Jeff Johnsone7245742012-09-05 17:12:55 -07006141 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006142 }
6143
6144 /*------------------------------------------------------------------------
6145 Fill in Event data and post to the Main FSM
6146 ------------------------------------------------------------------------*/
6147 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006148 wdiEventData.pEventData = pwdiTriggerBAReqParams;
6149 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
6150 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006151 wdiEventData.pUserData = pUserData;
6152
6153 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6154
6155}/*WDI_AddBAReq*/
6156
6157/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006158 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006159 wishes to update any of the Beacon parameters used by HW.
6160 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
6161 message to the lower RIVA sub-system if DAL is in state
6162 STARTED.
6163
6164 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006165 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006166
6167 WDI_PostAssocReq must have been called.
6168
Jeff Johnsone7245742012-09-05 17:12:55 -07006169 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006170 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006171
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 wdiUpdateBeaconParamsRspCb: callback for passing back the
6173 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006174
Jeff Johnson295189b2012-06-20 16:38:30 -07006175 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 callback
6177
Jeff Johnson295189b2012-06-20 16:38:30 -07006178 @see WDI_PostAssocReq
6179 @return Result of the function call
6180*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006181WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006182WDI_UpdateBeaconParamsReq
6183(
6184 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
6185 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
6186 void* pUserData
6187)
6188{
6189 WDI_EventInfoType wdiEventData;
6190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6191
6192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006193 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006194 ------------------------------------------------------------------------*/
6195 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6196 {
6197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6198 "WDI API call before module is initialized - Fail request");
6199
Jeff Johnsone7245742012-09-05 17:12:55 -07006200 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 }
6202
6203 /*------------------------------------------------------------------------
6204 Fill in Event data and post to the Main FSM
6205 ------------------------------------------------------------------------*/
6206 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006207 wdiEventData.pEventData = pwdiUpdateBeaconParams;
6208 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
6209 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 wdiEventData.pUserData = pUserData;
6211
6212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6213
6214}/*WDI_UpdateBeaconParamsReq*/
6215
6216/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 wishes to update the Beacon template used by HW.
6219 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
6220 message to the lower RIVA sub-system if DAL is in state
6221 STARTED.
6222
6223 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006224 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006225
6226 WDI_PostAssocReq must have been called.
6227
Jeff Johnsone7245742012-09-05 17:12:55 -07006228 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006229 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006230
Jeff Johnson295189b2012-06-20 16:38:30 -07006231 wdiSendBeaconParamsRspCb: callback for passing back the
6232 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006233
Jeff Johnson295189b2012-06-20 16:38:30 -07006234 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006235 callback
6236
Jeff Johnson295189b2012-06-20 16:38:30 -07006237 @see WDI_PostAssocReq
6238 @return Result of the function call
6239*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006240WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006241WDI_SendBeaconParamsReq
6242(
6243 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
6244 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
6245 void* pUserData
6246)
6247{
6248 WDI_EventInfoType wdiEventData;
6249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6250
6251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006252 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006253 ------------------------------------------------------------------------*/
6254 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6255 {
6256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6257 "WDI API call before module is initialized - Fail request");
6258
Jeff Johnsone7245742012-09-05 17:12:55 -07006259 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006260 }
6261
6262 /*------------------------------------------------------------------------
6263 Fill in Event data and post to the Main FSM
6264 ------------------------------------------------------------------------*/
6265 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006266 wdiEventData.pEventData = pwdiSendBeaconParams;
6267 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6268 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 wdiEventData.pUserData = pUserData;
6270
6271 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6272
6273}/*WDI_SendBeaconParamsReq*/
6274
6275/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006276 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006277 upper MAC wants to update the probe response template to
6278 be transmitted as Soft AP
6279 Upon the call of this API the WLAN DAL will
6280 pack and send the probe rsp template message to the
6281 lower RIVA sub-system if DAL is in state STARTED.
6282
6283 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006284 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006285
6286
Jeff Johnsone7245742012-09-05 17:12:55 -07006287 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006288 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006289
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 wdiSendBeaconParamsRspCb: callback for passing back the
6291 response of the Send Beacon Params operation received
6292 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006293
Jeff Johnson295189b2012-06-20 16:38:30 -07006294 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006295 callback
6296
Jeff Johnson295189b2012-06-20 16:38:30 -07006297 @see WDI_AddBAReq
6298 @return Result of the function call
6299*/
6300
Jeff Johnsone7245742012-09-05 17:12:55 -07006301WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006302WDI_UpdateProbeRspTemplateReq
6303(
6304 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6305 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6306 void* pUserData
6307)
6308{
6309 WDI_EventInfoType wdiEventData;
6310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6311
6312 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006313 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006314 ------------------------------------------------------------------------*/
6315 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6316 {
6317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6318 "WDI API call before module is initialized - Fail request");
6319
Jeff Johnsone7245742012-09-05 17:12:55 -07006320 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006321 }
6322
6323 /*------------------------------------------------------------------------
6324 Fill in Event data and post to the Main FSM
6325 ------------------------------------------------------------------------*/
6326 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006327 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6328 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6329 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006330 wdiEventData.pUserData = pUserData;
6331
6332 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6333
6334}/*WDI_UpdateProbeRspTemplateReq*/
6335
6336/**
6337 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6338 to the NV memory.
6339
6340
6341 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6342 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006343
Jeff Johnson295189b2012-06-20 16:38:30 -07006344 wdiNvDownloadRspCb: callback for passing back the response of
6345 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006346
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006348 callback
6349
Jeff Johnson295189b2012-06-20 16:38:30 -07006350 @see WDI_PostAssocReq
6351 @return Result of the function call
6352*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006353WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006354WDI_NvDownloadReq
6355(
6356 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6357 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6358 void* pUserData
6359)
6360{
6361 WDI_EventInfoType wdiEventData;
6362
6363 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006364 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006365 ------------------------------------------------------------------------*/
6366 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6367 {
6368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6369 "WDI API call before module is initialized - Fail request");
6370
Jeff Johnsone7245742012-09-05 17:12:55 -07006371 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006372 }
6373
6374 /*------------------------------------------------------------------------
6375 Fill in Event data and post to the Main FSM
6376 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006377 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6378 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6379 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6380 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 wdiEventData.pUserData = pUserData;
6382
6383 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6384
6385}/*WDI_NVDownloadReq*/
6386
Jeff Johnson295189b2012-06-20 16:38:30 -07006387/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006388 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006389 upper MAC wants to send Notice of Absence
6390 Upon the call of this API the WLAN DAL will
6391 pack and send the probe rsp template message to the
6392 lower RIVA sub-system if DAL is in state STARTED.
6393
6394 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006395 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006396
6397
Jeff Johnsone7245742012-09-05 17:12:55 -07006398 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006399 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006400
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 wdiSendBeaconParamsRspCb: callback for passing back the
6402 response of the Send Beacon Params operation received
6403 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006404
Jeff Johnson295189b2012-06-20 16:38:30 -07006405 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006406 callback
6407
Jeff Johnson295189b2012-06-20 16:38:30 -07006408 @see WDI_AddBAReq
6409 @return Result of the function call
6410*/
6411WDI_Status
6412WDI_SetP2PGONOAReq
6413(
6414 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6415 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6416 void* pUserData
6417)
6418{
6419 WDI_EventInfoType wdiEventData;
6420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6421
6422 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006423 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006424 ------------------------------------------------------------------------*/
6425 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6426 {
6427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6428 "WDI API call before module is initialized - Fail request");
6429
Jeff Johnsone7245742012-09-05 17:12:55 -07006430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006431 }
6432
6433 /*------------------------------------------------------------------------
6434 Fill in Event data and post to the Main FSM
6435 ------------------------------------------------------------------------*/
6436 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006437 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6438 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6439 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006440 wdiEventData.pUserData = pUserData;
6441
6442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6443
6444}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006445
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306446#ifdef FEATURE_WLAN_TDLS
6447/**
6448 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6449 upper MAC wants to send TDLS Link Establish Request Parameters
6450 Upon the call of this API the WLAN DAL will
6451 pack and send the TDLS Link Establish Request message to the
6452 lower RIVA sub-system if DAL is in state STARTED.
6453
6454 In state BUSY this request will be queued. Request won't
6455 be allowed in any other state.
6456
6457
6458 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6459 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6460
6461 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6462 response of the TDLS Link Establish request received
6463 from the device
6464
6465 pUserData: user data will be passed back with the
6466 callback
6467
6468 @see
6469 @return Result of the function call
6470*/
6471WDI_Status
6472WDI_SetTDLSLinkEstablishReq
6473(
6474 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6475 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6476 void* pUserData
6477)
6478{
6479 WDI_EventInfoType wdiEventData;
6480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6481
6482 /*------------------------------------------------------------------------
6483 Sanity Check
6484 ------------------------------------------------------------------------*/
6485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6486 {
6487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6488 "WDI API call before module is initialized - Fail request");
6489
6490 return WDI_STATUS_E_NOT_ALLOWED;
6491 }
6492
6493 /*------------------------------------------------------------------------
6494 Fill in Event data and post to the Main FSM
6495 ------------------------------------------------------------------------*/
6496 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6497 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6498 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6499 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6500 wdiEventData.pUserData = pUserData;
6501
6502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6503
6504}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306505
6506//tdlsoffchan
6507/**
6508 @brief WDI_SetTDLSChanSwitchReq will be called when the
6509 upper MAC wants to send TDLS Chan Switch Request Parameters
6510 Upon the call of this API the WLAN DAL will
6511 pack and send the TDLS Link Establish Request message to the
6512 lower RIVA sub-system if DAL is in state STARTED.
6513
6514 In state BUSY this request will be queued. Request won't
6515 be allowed in any other state.
6516
6517
6518 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6519 for Link Establishment (Used for TDLS Off Channel ...)
6520
6521 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6522 response of the TDLS Chan Switch request received
6523 from the device
6524
6525 pUserData: user data will be passed back with the
6526 callback
6527
6528 @see
6529 @return Result of the function call
6530*/
6531WDI_Status
6532WDI_SetTDLSChanSwitchReq
6533(
6534 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6535 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6536 void* pUserData
6537)
6538{
6539 WDI_EventInfoType wdiEventData;
6540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6541
6542 /*------------------------------------------------------------------------
6543 Sanity Check
6544 ------------------------------------------------------------------------*/
6545 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6546 {
6547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6548 "WDI API call before module is initialized - Fail request");
6549
6550 return WDI_STATUS_E_NOT_ALLOWED;
6551 }
6552
6553 /*------------------------------------------------------------------------
6554 Fill in Event data and post to the Main FSM
6555 ------------------------------------------------------------------------*/
6556 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6557 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6558 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6559 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6560 wdiEventData.pUserData = pUserData;
6561
6562 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6563
6564}/*WDI_SetTDLSChanSwitchReq*/
6565
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306566#endif
6567
Jeff Johnson295189b2012-06-20 16:38:30 -07006568/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006569 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 UMAC wanted to add STA self while opening any new session
6571 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006572 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006573
6574
Jeff Johnsone7245742012-09-05 17:12:55 -07006575 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006576 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006577
Jeff Johnson295189b2012-06-20 16:38:30 -07006578 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006579 callback
6580
6581 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006582 @return Result of the function call
6583*/
6584WDI_Status
6585WDI_AddSTASelfReq
6586(
6587 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6588 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6589 void* pUserData
6590)
6591{
6592 WDI_EventInfoType wdiEventData;
6593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6594
6595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006597 ------------------------------------------------------------------------*/
6598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6599 {
6600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6601 "WDI API call before module is initialized - Fail request");
6602
Jeff Johnsone7245742012-09-05 17:12:55 -07006603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006604 }
6605
6606 /*------------------------------------------------------------------------
6607 Fill in Event data and post to the Main FSM
6608 ------------------------------------------------------------------------*/
6609 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006610 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6611 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6612 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 wdiEventData.pUserData = pUserData;
6614
6615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6616
6617}/*WDI_AddSTASelfReq*/
6618
6619
Jeff Johnsone7245742012-09-05 17:12:55 -07006620#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006621/**
6622 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6623 the device of a successful add TSpec negotiation. HW
6624 needs to receive the TSpec Info from the UMAC in order
6625 to configure properly the QoS data traffic. Upon the
6626 call of this API the WLAN DAL will pack and send a HAL
6627 Add TS request message to the lower RIVA sub-system if
6628 DAL is in state STARTED.
6629
6630 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006631 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006632
6633 WDI_PostAssocReq must have been called.
6634
6635 @param wdiAddTsReqParams: the add TS parameters as specified by
6636 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006637
Jeff Johnson295189b2012-06-20 16:38:30 -07006638 wdiAddTsRspCb: callback for passing back the response of
6639 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006640
Jeff Johnson295189b2012-06-20 16:38:30 -07006641 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006642 callback
6643
Jeff Johnson295189b2012-06-20 16:38:30 -07006644 @see WDI_PostAssocReq
6645 @return Result of the function call
6646*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006647WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006648WDI_AggrAddTSReq
6649(
6650 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6651 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6652 void* pUserData
6653)
6654{
6655 WDI_EventInfoType wdiEventData;
6656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6657
6658 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006659 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006660 ------------------------------------------------------------------------*/
6661 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6662 {
6663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6664 "WDI API call before module is initialized - Fail request");
6665
Jeff Johnsone7245742012-09-05 17:12:55 -07006666 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006667 }
6668
6669 /*------------------------------------------------------------------------
6670 Fill in Event data and post to the Main FSM
6671 ------------------------------------------------------------------------*/
6672 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006673 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6674 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6675 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006676 wdiEventData.pUserData = pUserData;
6677
6678 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6679
6680}/*WDI_AggrAddTSReq*/
6681
6682#endif /* WLAN_FEATURE_VOWIFI_11R */
6683
Jeff Johnson295189b2012-06-20 16:38:30 -07006684/**
6685 @brief WDI_FTMCommandReq
6686 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006687
6688 @param ftmCommandReq: FTM Command Body
6689 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006691
Jeff Johnson295189b2012-06-20 16:38:30 -07006692 @see
6693 @return Result of the function call
6694*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006695WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006696WDI_FTMCommandReq
6697(
6698 WDI_FTMCommandReqType *ftmCommandReq,
6699 WDI_FTMCommandRspCb ftmCommandRspCb,
6700 void *pUserData
6701)
6702{
6703 WDI_EventInfoType wdiEventData;
6704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6705
6706 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006707 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006708 ------------------------------------------------------------------------*/
6709 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6710 {
6711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6712 "WDI API call before module is initialized - Fail request");
6713
Jeff Johnsone7245742012-09-05 17:12:55 -07006714 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006715 }
6716
6717 /*------------------------------------------------------------------------
6718 Fill in Event data and post to the Main FSM
6719 ------------------------------------------------------------------------*/
6720 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6721 wdiEventData.pEventData = (void *)ftmCommandReq;
6722 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6723 wdiEventData.pCBfnc = ftmCommandRspCb;
6724 wdiEventData.pUserData = pUserData;
6725
6726 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6727}
Jeff Johnson295189b2012-06-20 16:38:30 -07006728/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006729 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006730
6731 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006732 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006733
6734
6735 @param pwdiResumeReqParams: as specified by
6736 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006737
Jeff Johnson295189b2012-06-20 16:38:30 -07006738 wdiResumeReqRspCb: callback for passing back the response of
6739 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006740
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006742 callback
6743
6744 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 @return Result of the function call
6746*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006747WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006748WDI_HostResumeReq
6749(
6750 WDI_ResumeParamsType* pwdiResumeReqParams,
6751 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6752 void* pUserData
6753)
6754{
6755 WDI_EventInfoType wdiEventData;
6756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6757
6758 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006759 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006760 ------------------------------------------------------------------------*/
6761 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6762 {
6763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6764 "WDI API call before module is initialized - Fail request");
6765
Jeff Johnsone7245742012-09-05 17:12:55 -07006766 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006767 }
6768
6769 /*------------------------------------------------------------------------
6770 Fill in Event data and post to the Main FSM
6771 ------------------------------------------------------------------------*/
6772 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 wdiEventData.pEventData = pwdiResumeReqParams;
6774 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6775 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006776 wdiEventData.pUserData = pUserData;
6777
6778 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6779
6780}/*WDI_HostResumeReq*/
6781
6782/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006783 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006784
6785 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006786 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006787
6788
6789 @param pwdiDelStaSelfReqParams: as specified by
6790 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006791
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 wdiDelStaSelfRspCb: callback for passing back the response of
6793 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006794
Jeff Johnson295189b2012-06-20 16:38:30 -07006795 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006796 callback
6797
Jeff Johnson295189b2012-06-20 16:38:30 -07006798 @see WDI_PostAssocReq
6799 @return Result of the function call
6800*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006801WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006802WDI_DelSTASelfReq
6803(
6804 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6805 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6806 void* pUserData
6807)
6808{
6809 WDI_EventInfoType wdiEventData;
6810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6811
6812 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006813 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006814 ------------------------------------------------------------------------*/
6815 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6816 {
6817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6818 "WDI API call before module is initialized - Fail request");
6819
Jeff Johnsone7245742012-09-05 17:12:55 -07006820 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006821 }
6822
6823 /*------------------------------------------------------------------------
6824 Fill in Event data and post to the Main FSM
6825 ------------------------------------------------------------------------*/
6826 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006827 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6828 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6829 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006830 wdiEventData.pUserData = pUserData;
6831
6832 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6833
6834}/*WDI_AggrAddTSReq*/
6835
6836/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006837 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6838 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006839 Upon the call of this API the WLAN DAL will pack
6840 and send a HAL Set Tx Per Tracking request message to the
6841 lower RIVA sub-system if DAL is in state STARTED.
6842
6843 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006844 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006845
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006848
Jeff Johnson295189b2012-06-20 16:38:30 -07006849 pwdiSetTxPerTrackingRspCb: callback for passing back the
6850 response of the set Tx PER Tracking configurations operation received
6851 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006852
Jeff Johnson295189b2012-06-20 16:38:30 -07006853 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006854 callback
6855
Jeff Johnson295189b2012-06-20 16:38:30 -07006856 @return Result of the function call
6857*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006858WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006859WDI_SetTxPerTrackingReq
6860(
6861 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6862 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6863 void* pUserData
6864)
6865{
6866 WDI_EventInfoType wdiEventData;
6867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6868
6869 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006870 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006871 ------------------------------------------------------------------------*/
6872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6873 {
6874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6875 "WDI API call before module is initialized - Fail request");
6876
Jeff Johnsone7245742012-09-05 17:12:55 -07006877 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006878 }
6879
6880 /*------------------------------------------------------------------------
6881 Fill in Event data and post to the Main FSM
6882 ------------------------------------------------------------------------*/
6883 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006884 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006885 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006886 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 wdiEventData.pUserData = pUserData;
6888
6889 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6890
6891}/*WDI_SetTxPerTrackingReq*/
6892
6893/**
6894 @brief WDI_SetTmLevelReq
6895 If HW Thermal condition changed, driver should react based on new
6896 HW thermal condition.
6897
6898 @param pwdiSetTmLevelReq: New thermal condition information
6899
6900 pwdiSetTmLevelRspCb: callback
6901
6902 usrData: user data will be passed back with the
6903 callback
6904
6905 @return Result of the function call
6906*/
6907WDI_Status
6908WDI_SetTmLevelReq
6909(
6910 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6911 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6912 void *usrData
6913)
6914{
6915 WDI_EventInfoType wdiEventData;
6916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6917
6918 /*------------------------------------------------------------------------
6919 Sanity Check
6920 ------------------------------------------------------------------------*/
6921 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6922 {
6923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6924 "WDI API call before module is initialized - Fail request");
6925
6926 return WDI_STATUS_E_NOT_ALLOWED;
6927 }
6928
6929 /*------------------------------------------------------------------------
6930 Fill in Event data and post to the Main FSM
6931 ------------------------------------------------------------------------*/
6932 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6933 wdiEventData.pEventData = pwdiSetTmLevelReq;
6934 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6935 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6936 wdiEventData.pUserData = usrData;
6937
6938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6939}
6940
6941/**
6942 @brief WDI_HostSuspendInd
6943
6944 Suspend Indication from the upper layer will be sent
6945 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006946
Jeff Johnson295189b2012-06-20 16:38:30 -07006947 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006948
6949 @see
6950
Jeff Johnson295189b2012-06-20 16:38:30 -07006951 @return Status of the request
6952*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006953WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006954WDI_HostSuspendInd
6955(
6956 WDI_SuspendParamsType* pwdiSuspendIndParams
6957)
6958{
6959
6960 WDI_EventInfoType wdiEventData;
6961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6962
6963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006964 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006965 ------------------------------------------------------------------------*/
6966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6967 {
6968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6969 "WDI API call before module is initialized - Fail request");
6970
Jeff Johnsone7245742012-09-05 17:12:55 -07006971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006972 }
6973
6974 /*------------------------------------------------------------------------
6975 Fill in Event data and post to the Main FSM
6976 ------------------------------------------------------------------------*/
6977 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006978 wdiEventData.pEventData = pwdiSuspendIndParams;
6979 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6980 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006981 wdiEventData.pUserData = NULL;
6982
6983 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6984
6985}/*WDI_HostSuspendInd*/
6986
6987/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006988 @brief WDI_TrafficStatsInd
6989 Traffic Stats from the upper layer will be sent
6990 down to HAL
6991
6992 @param WDI_TrafficStatsIndType
6993
6994 @see
6995
6996 @return Status of the request
6997*/
6998WDI_Status
6999WDI_TrafficStatsInd
7000(
7001 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
7002)
7003{
7004
7005 WDI_EventInfoType wdiEventData;
7006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7007
7008 /*------------------------------------------------------------------------
7009 Sanity Check
7010 ------------------------------------------------------------------------*/
7011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7012 {
7013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7014 "WDI API call before module is initialized - Fail request");
7015
7016 return WDI_STATUS_E_NOT_ALLOWED;
7017 }
7018
7019 /*------------------------------------------------------------------------
7020 Fill in Event data and post to the Main FSM
7021 ------------------------------------------------------------------------*/
7022 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
7023 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
7024 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
7025 wdiEventData.pCBfnc = NULL;
7026 wdiEventData.pUserData = NULL;
7027
7028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7029
7030}/*WDI_TrafficStatsInd*/
7031
Chet Lanctot186b5732013-03-18 10:26:30 -07007032#ifdef WLAN_FEATURE_11W
7033/**
7034 @brief WDI_ExcludeUnencryptedInd
7035 Register with HAL to receive/drop unencrypted frames
7036
7037 @param WDI_ExcludeUnencryptIndType
7038
7039 @see
7040
7041 @return Status of the request
7042*/
7043WDI_Status
7044WDI_ExcludeUnencryptedInd
7045(
7046 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
7047)
7048{
7049
7050 WDI_EventInfoType wdiEventData;
7051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7052
7053 /*------------------------------------------------------------------------
7054 Sanity Check
7055 ------------------------------------------------------------------------*/
7056 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7057 {
7058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7059 "WDI API call before module is initialized - Fail request");
7060
7061 return WDI_STATUS_E_NOT_ALLOWED;
7062 }
7063
7064 /*------------------------------------------------------------------------
7065 Fill in Event data and post to the Main FSM
7066 ------------------------------------------------------------------------*/
7067 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
7068 wdiEventData.pEventData = pWdiExcUnencParams;
7069 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
7070 wdiEventData.pCBfnc = NULL;
7071 wdiEventData.pUserData = NULL;
7072
7073 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7074
7075}/*WDI_TrafficStatsInd*/
7076#endif
7077
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007078/**
Yue Mab9c86f42013-08-14 15:59:08 -07007079 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
7080
7081 @param addPeriodicTxPtrnParams: Add Pattern parameters
7082
7083 @see
7084
7085 @return Status of the request
7086*/
7087WDI_Status
7088WDI_AddPeriodicTxPtrnInd
7089(
7090 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
7091)
7092{
7093 WDI_EventInfoType wdiEventData;
7094
7095 /*-------------------------------------------------------------------------
7096 Sanity Check
7097 ------------------------------------------------------------------------*/
7098 if (eWLAN_PAL_FALSE == gWDIInitialized)
7099 {
7100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7101 "WDI API call before module is initialized - Fail request!");
7102
7103 return WDI_STATUS_E_NOT_ALLOWED;
7104 }
7105
7106 /*-------------------------------------------------------------------------
7107 Fill in Event data and post to the Main FSM
7108 ------------------------------------------------------------------------*/
7109 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
7110 wdiEventData.pEventData = addPeriodicTxPtrnParams;
7111 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
7112 wdiEventData.pCBfnc = NULL;
7113 wdiEventData.pUserData = NULL;
7114
7115 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7116}
7117
7118/**
7119 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
7120
7121 @param delPeriodicTxPtrnParams: Delete Pattern parameters
7122
7123 @see
7124
7125 @return Status of the request
7126*/
7127WDI_Status
7128WDI_DelPeriodicTxPtrnInd
7129(
7130 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
7131)
7132{
7133 WDI_EventInfoType wdiEventData;
7134
7135 /*-------------------------------------------------------------------------
7136 Sanity Check
7137 ------------------------------------------------------------------------*/
7138 if (eWLAN_PAL_FALSE == gWDIInitialized)
7139 {
7140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7141 "WDI API call before module is initialized - Fail request!");
7142
7143 return WDI_STATUS_E_NOT_ALLOWED;
7144 }
7145
7146 /*-------------------------------------------------------------------------
7147 Fill in Event data and post to the Main FSM
7148 ------------------------------------------------------------------------*/
7149 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
7150 wdiEventData.pEventData = delPeriodicTxPtrnParams;
7151 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
7152 wdiEventData.pCBfnc = NULL;
7153 wdiEventData.pUserData = NULL;
7154
7155 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7156}
7157
7158/**
Jeff Johnson295189b2012-06-20 16:38:30 -07007159 @brief WDI_HALDumpCmdReq
7160 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007161
7162 @param halDumpCmdReqParams: Hal Dump Command Body
7163 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007165
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 @see
7167 @return Result of the function call
7168*/
7169WDI_Status WDI_HALDumpCmdReq
7170(
7171 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
7172 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
7173 void *pUserData
7174)
7175{
7176 WDI_EventInfoType wdiEventData;
7177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7178
7179 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 ------------------------------------------------------------------------*/
7182 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7183 {
7184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7185 "WDI API call before module is initialized - Fail request");
7186
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 }
7189
7190 /*------------------------------------------------------------------------
7191 Fill in Event data and post to the Main FSM
7192 ------------------------------------------------------------------------*/
7193 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
7194 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
7195 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
7196 wdiEventData.pCBfnc = halDumpCmdRspCb;
7197 wdiEventData.pUserData = pUserData;
7198
7199 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7200}
7201
Jeff Johnsone7245742012-09-05 17:12:55 -07007202/*============================================================================
7203
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07007205
Jeff Johnson295189b2012-06-20 16:38:30 -07007206 ============================================================================*/
7207
7208/**
7209 @brief Main FSM Start function for all states except BUSY
7210
Jeff Johnsone7245742012-09-05 17:12:55 -07007211
7212 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007213 wdiEV: event posted to the main DAL FSM
7214 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07007215 structure
7216
Jeff Johnson295189b2012-06-20 16:38:30 -07007217 @see
7218 @return Result of the function call
7219*/
7220WDI_Status
7221WDI_PostMainEvent
7222(
Jeff Johnsone7245742012-09-05 17:12:55 -07007223 WDI_ControlBlockType* pWDICtx,
7224 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07007226)
7227{
Jeff Johnsone7245742012-09-05 17:12:55 -07007228 WDI_Status wdiStatus;
7229 WDI_MainFuncType pfnWDIMainEvHdlr;
7230 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05307231 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7233
7234 /*-------------------------------------------------------------------------
7235 Sanity check
7236 -------------------------------------------------------------------------*/
7237 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
7238 ( wdiEV >= WDI_MAX_EVENT ))
7239 {
7240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7241 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
7242 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07007243 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 }
7245
7246 /*Access to the global state must be locked */
7247 wpalMutexAcquire(&pWDICtx->wptMutex);
7248
7249 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007250 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07007251
7252 wdiOldState = pWDICtx->uGlobalState;
7253
7254 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007255 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
7256 response comes from CCPU for the request sent by host:
7257 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 -07007258 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 -07007259 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 CCPU:
7261 don't change the state */
7262 if ( WDI_RESPONSE_EVENT != wdiEV)
7263 {
7264 /*Transition to BUSY State - the request is now being processed by the FSM,
7265 if the request fails we shall transition back to the old state, if not
7266 the request will manage its own state transition*/
7267 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7268 }
7269 /* If the state function associated with the EV is NULL it means that this
7270 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007271 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007272 {
7273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007274 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007275 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 }
7278 else
7279 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307280 if (!(failCnt & 0xF))
7281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007282 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007283 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307284 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007285 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007286 }
7287
7288 /* If a request handles itself well it will end up in a success or in a
7289 pending
7290 Success - means that the request was processed and the proper state
7291 transition already occurred or will occur when the resp is received
7292 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007293
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 Pending - means the request could not be processed at this moment in time
7295 because the FSM was already busy so no state transition or dequeueing
7296 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007297
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 Success for synchronous case means that the transition may occur and
7299 processing of pending requests may continue - so it should go through
7300 and restores the state and continue processing queued requests*/
7301 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7302 ( WDI_STATUS_PENDING != wdiStatus ))
7303 {
7304 if ( WDI_RESPONSE_EVENT != wdiEV)
7305 {
7306 /*The request has failed or could not be processed - transition back to
7307 the old state - check to see if anything was queued and try to execute
7308 The dequeue logic should post a message to a thread and return - no
7309 actual processing can occur */
7310 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7311 }
7312 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007313
Jeff Johnson295189b2012-06-20 16:38:30 -07007314 }
7315
7316 /* we have completed processing the event */
7317 wpalMutexRelease(&pWDICtx->wptMutex);
7318
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007320
7321}/*WDI_PostMainEvent*/
7322
7323
7324/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007326--------------------------------------------------------------------------*/
7327/**
7328 @brief Main FSM Start function for all states except BUSY
7329
Jeff Johnsone7245742012-09-05 17:12:55 -07007330
7331 @param pWDICtx: pointer to the WLAN DAL context
7332 pEventData: pointer to the event information structure
7333
Jeff Johnson295189b2012-06-20 16:38:30 -07007334 @see
7335 @return Result of the function call
7336*/
7337WDI_Status
7338WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007339(
Jeff Johnson295189b2012-06-20 16:38:30 -07007340 WDI_ControlBlockType* pWDICtx,
7341 WDI_EventInfoType* pEventData
7342)
7343{
7344
7345 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007346 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007347 ----------------------------------------------------------------------*/
7348 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7349 {
7350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007351 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007352 pWDICtx, pEventData);
7353 return WDI_STATUS_E_FAILURE;
7354 }
7355
7356 wpalMutexAcquire(&pWDICtx->wptMutex);
7357
7358 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007359 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007360 ----------------------------------------------------------------------*/
7361 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7362 {
7363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7364 "Control Transport not yet Open - queueing the request");
7365
7366 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007368
7369 wpalMutexRelease(&pWDICtx->wptMutex);
7370 return WDI_STATUS_PENDING;
7371 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007372
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 wpalMutexRelease(&pWDICtx->wptMutex);
7374
7375 /*Return Success*/
7376 return WDI_ProcessRequest( pWDICtx, pEventData );
7377
7378}/*WDI_MainStart*/
7379
7380/**
7381 @brief Main FSM Response function for state INIT
7382
Jeff Johnsone7245742012-09-05 17:12:55 -07007383
7384 @param pWDICtx: pointer to the WLAN DAL context
7385 pEventData: pointer to the event information structure
7386
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 @see
7388 @return Result of the function call
7389*/
7390WDI_Status
7391WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007392(
Jeff Johnson295189b2012-06-20 16:38:30 -07007393 WDI_ControlBlockType* pWDICtx,
7394 WDI_EventInfoType* pEventData
7395)
7396{
7397 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007398 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007399 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007400 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007401
7402 /*Return Success*/
7403 return WDI_STATUS_E_NOT_ALLOWED;
7404}/* WDI_MainRspInit */
7405
7406/**
7407 @brief Main FSM Close function for all states except BUSY
7408
Jeff Johnsone7245742012-09-05 17:12:55 -07007409
7410 @param pWDICtx: pointer to the WLAN DAL context
7411 pEventData: pointer to the event information structure
7412
Jeff Johnson295189b2012-06-20 16:38:30 -07007413 @see
7414 @return Result of the function call
7415*/
7416WDI_Status
7417WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007418(
Jeff Johnson295189b2012-06-20 16:38:30 -07007419 WDI_ControlBlockType* pWDICtx,
7420 WDI_EventInfoType* pEventData
7421)
7422{
7423
7424 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 ----------------------------------------------------------------------*/
7427 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7428 {
7429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007430 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 pWDICtx, pEventData);
7432 return WDI_STATUS_E_FAILURE;
7433 }
7434
7435 /*Return Success*/
7436 return WDI_ProcessRequest( pWDICtx, pEventData );
7437
7438}/*WDI_MainClose*/
7439/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007440 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007441--------------------------------------------------------------------------*/
7442/**
7443 @brief Main FSM Start function for state STARTED
7444
Jeff Johnsone7245742012-09-05 17:12:55 -07007445
7446 @param pWDICtx: pointer to the WLAN DAL context
7447 pEventData: pointer to the event information structure
7448
Jeff Johnson295189b2012-06-20 16:38:30 -07007449 @see
7450 @return Result of the function call
7451*/
7452WDI_Status
7453WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007454(
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 WDI_ControlBlockType* pWDICtx,
7456 WDI_EventInfoType* pEventData
7457)
7458{
7459 WDI_StartRspCb wdiStartRspCb = NULL;
7460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7461
7462 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007464 ----------------------------------------------------------------------*/
7465 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7466 {
7467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007468 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 pWDICtx, pEventData);
7470 return WDI_STATUS_E_FAILURE;
7471 }
7472
7473 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007474 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007475 ----------------------------------------------------------------------*/
7476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007478
7479 wpalMutexAcquire(&pWDICtx->wptMutex);
7480
7481 /*Transition back to started because the post function transitioned us to
7482 busy*/
7483 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7484
7485 /*Check to see if any request is pending*/
7486 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007487
Jeff Johnson295189b2012-06-20 16:38:30 -07007488 wpalMutexRelease(&pWDICtx->wptMutex);
7489
7490 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007491 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7492
Jeff Johnson295189b2012-06-20 16:38:30 -07007493 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307494 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007495
7496 /*Return Success*/
7497 return WDI_STATUS_SUCCESS;
7498
7499}/*WDI_MainStartStarted*/
7500
7501/**
7502 @brief Main FSM Stop function for state STARTED
7503
Jeff Johnsone7245742012-09-05 17:12:55 -07007504
7505 @param pWDICtx: pointer to the WLAN DAL context
7506 pEventData: pointer to the event information structure
7507
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 @see
7509 @return Result of the function call
7510*/
7511WDI_Status
7512WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007513(
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 WDI_ControlBlockType* pWDICtx,
7515 WDI_EventInfoType* pEventData
7516)
7517{
7518 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007519 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 ----------------------------------------------------------------------*/
7521 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7522 {
7523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007524 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 pWDICtx, pEventData);
7526 return WDI_STATUS_E_FAILURE;
7527 }
7528
7529 /*State at this point is BUSY - because we enter this state before posting
7530 an event to the FSM in order to prevent potential race conditions*/
7531
7532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7533 "Processing stop request in FSM");
7534
7535 /*Return Success*/
7536 return WDI_ProcessRequest( pWDICtx, pEventData );
7537
7538}/*WDI_MainStopStarted*/
7539/**
7540 @brief Main FSM Request function for state started
7541
Jeff Johnsone7245742012-09-05 17:12:55 -07007542
7543 @param pWDICtx: pointer to the WLAN DAL context
7544 pEventData: pointer to the event information structure
7545
Jeff Johnson295189b2012-06-20 16:38:30 -07007546 @see
7547 @return Result of the function call
7548*/
7549WDI_Status
7550WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007551(
Jeff Johnson295189b2012-06-20 16:38:30 -07007552 WDI_ControlBlockType* pWDICtx,
7553 WDI_EventInfoType* pEventData
7554)
7555{
7556
7557 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007558 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007559 ----------------------------------------------------------------------*/
7560 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7561 {
7562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007563 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 pWDICtx, pEventData);
7565 return WDI_STATUS_E_FAILURE;
7566 }
7567
7568 /*State at this point is BUSY - because we enter this state before posting
7569 an event to the FSM in order to prevent potential race conditions*/
7570
7571 /*Return Success*/
7572 return WDI_ProcessRequest( pWDICtx, pEventData );
7573
7574}/*WDI_MainReqStarted*/
7575
7576/**
7577 @brief Main FSM Response function for all states except INIT
7578
Jeff Johnsone7245742012-09-05 17:12:55 -07007579
7580 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007582
Jeff Johnson295189b2012-06-20 16:38:30 -07007583 @see
7584 @return Result of the function call
7585*/
7586WDI_Status
7587WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007588(
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 WDI_ControlBlockType* pWDICtx,
7590 WDI_EventInfoType* pEventData
7591)
7592{
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 wpt_boolean expectedResponse;
7595
7596 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007597 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 ----------------------------------------------------------------------*/
7599 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7600 {
7601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007602 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 pWDICtx, pEventData);
7604 return WDI_STATUS_E_FAILURE;
7605 }
7606
7607 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7608 {
7609 /* we received an expected response */
7610 expectedResponse = eWLAN_PAL_TRUE;
7611
7612 /*We expect that we will transition to started after this processing*/
7613 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7614
7615 /* we are no longer expecting a response */
7616 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7617 }
7618 else
7619 {
7620 /* we received an indication or unexpected response */
7621 expectedResponse = eWLAN_PAL_FALSE;
7622 /* for indications no need to update state from what it is right
7623 now, unless it explicitly does it in the indication handler (say
7624 for device failure ind) */
7625 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7626 }
7627
7628 /*Process the response and indication */
7629 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7630
7631 /*Lock the CB as we are about to do a state transition*/
7632 wpalMutexAcquire(&pWDICtx->wptMutex);
7633
7634 /*Transition to the expected state after the response processing
7635 - this should always be started state with the following exceptions:
7636 1. processing of a failed start response
7637 2. device failure detected while processing response
7638 3. stop response received*/
7639 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007640
Jeff Johnson295189b2012-06-20 16:38:30 -07007641 /*Dequeue request that may have been queued while we were waiting for the
7642 response */
7643 if ( expectedResponse )
7644 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007645 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 }
7647
7648 wpalMutexRelease(&pWDICtx->wptMutex);
7649
7650 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007651 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007652
7653}/*WDI_MainRsp*/
7654
7655/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007656 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007657--------------------------------------------------------------------------*/
7658/**
7659 @brief Main FSM Stop function for state STOPPED
7660
Jeff Johnsone7245742012-09-05 17:12:55 -07007661
7662 @param pWDICtx: pointer to the WLAN DAL context
7663 pEventData: pointer to the event information structure
7664
Jeff Johnson295189b2012-06-20 16:38:30 -07007665 @see
7666 @return Result of the function call
7667*/
7668WDI_Status
7669WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007670(
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 WDI_ControlBlockType* pWDICtx,
7672 WDI_EventInfoType* pEventData
7673)
7674{
7675 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007676 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007677 ----------------------------------------------------------------------*/
7678 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7679 {
7680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007681 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007682 pWDICtx, pEventData);
7683 return WDI_STATUS_E_FAILURE;
7684 }
7685
7686 /*We should normally not get a STOP request if we are already stopped
7687 since we should normally be stopped by the UMAC. However in some
7688 error situations we put ourselves in the stopped state without the
7689 UMAC knowing, so when we get a STOP request in this state we still
7690 process it since we need to clean up the underlying state */
7691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7692 "Processing stop request while stopped in FSM");
7693
7694 /*Return Success*/
7695 return WDI_ProcessRequest( pWDICtx, pEventData );
7696
7697}/*WDI_MainStopStopped*/
7698
7699/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007701--------------------------------------------------------------------------*/
7702/**
7703 @brief Main FSM Start function for state BUSY
7704
Jeff Johnsone7245742012-09-05 17:12:55 -07007705
7706 @param pWDICtx: pointer to the WLAN DAL context
7707 pEventData: pointer to the event information structure
7708
Jeff Johnson295189b2012-06-20 16:38:30 -07007709 @see
7710 @return Result of the function call
7711*/
7712WDI_Status
7713WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007714(
Jeff Johnson295189b2012-06-20 16:38:30 -07007715 WDI_ControlBlockType* pWDICtx,
7716 WDI_EventInfoType* pEventData
7717)
7718{
7719 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 ----------------------------------------------------------------------*/
7722 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7723 {
7724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007725 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 pWDICtx, pEventData);
7727 return WDI_STATUS_E_FAILURE;
7728 }
7729
7730 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 ----------------------------------------------------------------------*/
7733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7734 "WDI Busy state - queue start request");
7735
7736 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007738
7739 /*Return Success*/
7740 return WDI_STATUS_PENDING;
7741}/*WDI_MainStartBusy*/
7742
7743/**
7744 @brief Main FSM Stop function for state BUSY
7745
Jeff Johnsone7245742012-09-05 17:12:55 -07007746
7747 @param pWDICtx: pointer to the WLAN DAL context
7748 pEventData: pointer to the event information structure
7749
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 @see
7751 @return Result of the function call
7752*/
7753WDI_Status
7754WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007755(
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 WDI_ControlBlockType* pWDICtx,
7757 WDI_EventInfoType* pEventData
7758)
7759{
7760 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007761 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007762 ----------------------------------------------------------------------*/
7763 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7764 {
7765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007766 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007767 pWDICtx, pEventData);
7768 return WDI_STATUS_E_FAILURE;
7769 }
7770
7771 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 ----------------------------------------------------------------------*/
7774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7775 "WDI Busy state - queue stop request");
7776
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007778 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007779
Jeff Johnson295189b2012-06-20 16:38:30 -07007780}/*WDI_MainStopBusy*/
7781
7782/**
7783 @brief Main FSM Request function for state BUSY
7784
Jeff Johnsone7245742012-09-05 17:12:55 -07007785
7786 @param pWDICtx: pointer to the WLAN DAL context
7787 pEventData: pointer to the event information structure
7788
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 @see
7790 @return Result of the function call
7791*/
7792WDI_Status
7793WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007794(
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 WDI_ControlBlockType* pWDICtx,
7796 WDI_EventInfoType* pEventData
7797)
7798{
7799 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 ----------------------------------------------------------------------*/
7802 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7803 {
7804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007805 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 pWDICtx, pEventData);
7807 return WDI_STATUS_E_FAILURE;
7808 }
7809
7810 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 ----------------------------------------------------------------------*/
7813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7814 "WDI Busy state - queue request %d because waiting for response %d",
7815 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7816
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007819
Jeff Johnson295189b2012-06-20 16:38:30 -07007820}/*WDI_MainReqBusy*/
7821/**
7822 @brief Main FSM Close function for state BUSY
7823
Jeff Johnsone7245742012-09-05 17:12:55 -07007824
7825 @param pWDICtx: pointer to the WLAN DAL context
7826 pEventData: pointer to the event information structure
7827
Jeff Johnson295189b2012-06-20 16:38:30 -07007828 @see
7829 @return Result of the function call
7830*/
7831WDI_Status
7832WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007833(
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 WDI_ControlBlockType* pWDICtx,
7835 WDI_EventInfoType* pEventData
7836)
7837{
7838 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007839 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 ----------------------------------------------------------------------*/
7841 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7842 {
7843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007844 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 pWDICtx, pEventData);
7846 return WDI_STATUS_E_FAILURE;
7847 }
7848
7849 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007850 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007851 ----------------------------------------------------------------------*/
7852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7853 "WDI Busy state - queue close request");
7854
Jeff Johnsone7245742012-09-05 17:12:55 -07007855 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007857
Jeff Johnson295189b2012-06-20 16:38:30 -07007858}/*WDI_MainCloseBusy*/
7859
7860/**
7861 @brief Main FSM Shutdown function for INIT & STARTED states
7862
7863
7864 @param pWDICtx: pointer to the WLAN DAL context
7865 pEventData: pointer to the event information structure
7866
7867 @see
7868 @return Result of the function call
7869*/
7870WDI_Status
7871WDI_MainShutdown
7872(
7873 WDI_ControlBlockType* pWDICtx,
7874 WDI_EventInfoType* pEventData
7875)
7876{
7877 /*--------------------------------------------------------------------
7878 Sanity Check
7879 ----------------------------------------------------------------------*/
7880 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7881 {
7882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007883 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 pWDICtx, pEventData);
7885 return WDI_STATUS_E_FAILURE;
7886 }
7887
7888 /*State at this point is BUSY - because we enter this state before posting
7889 an event to the FSM in order to prevent potential race conditions*/
7890
7891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7892 "Processing shutdown request in FSM");
7893
7894 /*Return Success*/
7895 return WDI_ProcessRequest( pWDICtx, pEventData );
7896
7897}/*WDI_MainShutdown*/
7898
7899/**
7900 @brief Main FSM Shutdown function for BUSY state
7901
7902
7903 @param pWDICtx: pointer to the WLAN DAL context
7904 pEventData: pointer to the event information structure
7905
7906 @see
7907 @return Result of the function call
7908*/
7909WDI_Status
7910WDI_MainShutdownBusy
7911(
7912 WDI_ControlBlockType* pWDICtx,
7913 WDI_EventInfoType* pEventData
7914)
7915{
7916 /*--------------------------------------------------------------------
7917 Sanity Check
7918 ----------------------------------------------------------------------*/
7919 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7920 {
7921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007922 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 pWDICtx, pEventData);
7924 return WDI_STATUS_E_FAILURE;
7925 }
7926
7927 /* If you are waiting for a HAL response at this stage, you are not
7928 * going to get it. Riva is already shutdown/crashed.
7929 */
7930 wpalTimerStop(&gWDICb.wptResponseTimer);
7931
7932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7933 "Processing shutdown request in FSM: Busy state ");
7934
7935 return WDI_ProcessRequest( pWDICtx, pEventData );
7936
7937}/*WDI_MainShutdownBusy*/
7938
7939
Jeff Johnsone7245742012-09-05 17:12:55 -07007940/*=======================================================================
7941
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007943
Jeff Johnson295189b2012-06-20 16:38:30 -07007944*=======================================================================*/
7945
7946/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007948========================================================================*/
7949/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007952
7953 @param pWDICtx: pointer to the WLAN DAL context
7954 pEventData: pointer to the event information structure
7955
Jeff Johnson295189b2012-06-20 16:38:30 -07007956 @see
7957 @return Result of the function call
7958*/
7959WDI_Status
7960WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007961(
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 WDI_ControlBlockType* pWDICtx,
7963 WDI_EventInfoType* pEventData
7964)
7965{
7966 WDI_StartReqParamsType* pwdiStartParams = NULL;
7967 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007968 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007969 wpt_uint16 usDataOffset = 0;
7970 wpt_uint16 usSendSize = 0;
7971
Jeff Johnsone7245742012-09-05 17:12:55 -07007972 tHalMacStartReqMsg halStartReq;
7973 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7975
7976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007977 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007978 -------------------------------------------------------------------------*/
7979 if (( NULL == pEventData ) ||
7980 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7981 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7982 {
7983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 }
7988
7989 /*-----------------------------------------------------------------------
7990 Get message buffer
7991 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 pwdiStartParams->usConfigBufferLen;
7994
Jeff Johnsone7245742012-09-05 17:12:55 -07007995 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007996 usLen,
7997 &pSendBuffer, &usDataOffset, &usSendSize))||
7998 ( usSendSize < (usDataOffset + usLen )))
7999 {
8000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008001 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 pEventData, pwdiStartParams, wdiStartRspCb);
8003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 }
8006
8007 /*-----------------------------------------------------------------------
8008 Fill in the message
8009 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 halStartReq.startReqParams.driverType =
8011 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07008012
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 halStartReq.startReqParams.uConfigBufferLen =
8014 pwdiStartParams->usConfigBufferLen;
8015 wpalMemoryCopy( pSendBuffer+usDataOffset,
8016 &halStartReq.startReqParams,
8017 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008018
Jeff Johnsone7245742012-09-05 17:12:55 -07008019 usDataOffset += sizeof(halStartReq.startReqParams);
8020 wpalMemoryCopy( pSendBuffer+usDataOffset,
8021 pwdiStartParams->pConfigBuffer,
8022 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07008023
8024 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008026
8027 /*Save Low Level Ind CB and associated user data - it will be used further
8028 on when an indication is coming from the lower MAC*/
8029 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008031
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
8038
Jeff Johnsone7245742012-09-05 17:12:55 -07008039
Jeff Johnson295189b2012-06-20 16:38:30 -07008040}/*WDI_ProcessStartReq*/
8041
8042/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008045
8046 @param pWDICtx: pointer to the WLAN DAL context
8047 pEventData: pointer to the event information structure
8048
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 @see
8050 @return Result of the function call
8051*/
8052WDI_Status
8053WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008054(
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 WDI_ControlBlockType* pWDICtx,
8056 WDI_EventInfoType* pEventData
8057)
8058{
8059 WDI_StopReqParamsType* pwdiStopParams = NULL;
8060 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008061 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 wpt_uint16 usDataOffset = 0;
8063 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07008064 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8067
8068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008070 -------------------------------------------------------------------------*/
8071 if (( NULL == pEventData ) ||
8072 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
8073 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
8074 {
8075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008077 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008078 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 }
8080
8081 /*-----------------------------------------------------------------------
8082 Get message buffer
8083 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008084 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008085 sizeof(halStopReq.stopReqParams),
8086 &pSendBuffer, &usDataOffset, &usSendSize))||
8087 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
8088 {
8089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008090 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 pEventData, pwdiStopParams, wdiStopRspCb);
8092 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008093 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 }
8095
8096 /*-----------------------------------------------------------------------
8097 Fill in the message
8098 -----------------------------------------------------------------------*/
8099 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
8100 pwdiStopParams->wdiStopReason);
8101
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 wpalMemoryCopy( pSendBuffer+usDataOffset,
8103 &halStopReq.stopReqParams,
8104 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008105
8106 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008108
8109 /*! TO DO: stop the data services */
8110 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8111 {
8112 /*Stop the STA Table !UT- check this logic again
8113 It is safer to do it here than on the response - because a stop is imminent*/
8114 WDI_STATableStop(pWDICtx);
8115
8116 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07008117 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
8118 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008119 {
8120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8121 "WDI Init failed to reset power state event");
8122
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008124 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 }
8126 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08008127 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
8128 if( eWLAN_PAL_STATUS_SUCCESS != status )
8129 {
8130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008131 "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 -08008132 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008133 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08008134 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 */
Jeff Johnson43971f52012-07-17 12:26:56 -07008138 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
8139 WDI_SET_POWER_STATE_TIMEOUT);
8140 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008141 {
8142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8143 "WDI Init failed to wait on an event");
8144
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008146 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 }
8148 }
8149
8150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
8155
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008156fail:
8157 // Release the message buffer so we don't leak
8158 wpalMemoryFree(pSendBuffer);
8159
8160failRequest:
8161 //WDA should have failure check to avoid the memory leak
8162 return WDI_STATUS_E_FAILURE;
8163
Jeff Johnson295189b2012-06-20 16:38:30 -07008164}/*WDI_ProcessStopReq*/
8165
8166/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008169
8170 @param pWDICtx: pointer to the WLAN DAL context
8171 pEventData: pointer to the event information structure
8172
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 @see
8174 @return Result of the function call
8175*/
8176WDI_Status
8177WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008178(
Jeff Johnson295189b2012-06-20 16:38:30 -07008179 WDI_ControlBlockType* pWDICtx,
8180 WDI_EventInfoType* pEventData
8181)
8182{
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8185
8186 /*Lock control block for cleanup*/
8187 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008188
Jeff Johnson295189b2012-06-20 16:38:30 -07008189 /*Clear all pending request*/
8190 WDI_ClearPendingRequests(pWDICtx);
8191
8192 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07008194
8195 /* Close Data transport*/
8196 /* FTM mode does not open Data Path */
8197 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8198 {
8199 WDTS_Close(pWDICtx);
8200 }
8201
8202 /*Close the STA Table !UT- check this logic again*/
8203 WDI_STATableClose(pWDICtx);
8204
8205 /*close the PAL */
8206 wptStatus = wpalClose(pWDICtx->pPALContext);
8207 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8208 {
8209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8210 "Failed to wpal Close %d", wptStatus);
8211 WDI_ASSERT(0);
8212 }
8213
8214 /*Transition back to init state*/
8215 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
8216
8217 wpalMutexRelease(&pWDICtx->wptMutex);
8218
8219 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008221
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008223}/*WDI_ProcessCloseReq*/
8224
8225
8226/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008228===========================================================================*/
8229
8230/**
8231 @brief Process Init Scan Request function (called when Main FSM
8232 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008233
8234 @param pWDICtx: pointer to the WLAN DAL context
8235 pEventData: pointer to the event information structure
8236
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 @see
8238 @return Result of the function call
8239*/
8240WDI_Status
8241WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008242(
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 WDI_ControlBlockType* pWDICtx,
8244 WDI_EventInfoType* pEventData
8245)
8246{
8247 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
8248 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008249 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 wpt_uint16 usDataOffset = 0;
8251 wpt_uint16 usSendSize = 0;
8252 wpt_uint8 i = 0;
8253
8254 tHalInitScanReqMsg halInitScanReqMsg;
8255
Jeff Johnsone7245742012-09-05 17:12:55 -07008256 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 * It shold be removed once host and riva changes are in sync*/
8258 tHalInitScanConReqMsg halInitScanConReqMsg;
8259
8260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8261
8262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008264 -------------------------------------------------------------------------*/
8265 if (( NULL == pEventData ) ||
8266 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8267 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8268 {
8269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008273 }
8274
8275#if 0
8276 wpalMutexAcquire(&pWDICtx->wptMutex);
8277 /*-----------------------------------------------------------------------
8278 Check to see if SCAN is already in progress - if so reject the req
8279 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008280 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008281 -----------------------------------------------------------------------*/
8282 if ( pWDICtx->bScanInProgress )
8283 {
8284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8285 "Scan is already in progress - subsequent scan is not allowed"
8286 " until the first scan completes");
8287
8288 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 }
8291
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8293 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008294
8295 wpalMutexRelease(&pWDICtx->wptMutex);
8296#endif
Viral Modid86bde22012-12-10 13:09:21 -08008297 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 * It shold be removed once host and riva changes are in sync*/
8301 /*-----------------------------------------------------------------------
8302 Get message buffer
8303 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 sizeof(halInitScanConReqMsg.initScanParams),
8306 &pSendBuffer, &usDataOffset, &usSendSize))||
8307 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8308 {
8309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008310 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008314 }
8315
8316
8317 /*-----------------------------------------------------------------------
8318 Fill in the message
8319 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008320 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008321 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8322
8323 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8324 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8325
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008331 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8332
8333 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8334 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8335
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8337 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008338
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8341
8342 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8343 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008344 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008345 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8346 }
8347
Jeff Johnsone7245742012-09-05 17:12:55 -07008348 wpalMemoryCopy( pSendBuffer+usDataOffset,
8349 &halInitScanConReqMsg.initScanParams,
8350 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 }
8352 else
8353 {
8354 /*-----------------------------------------------------------------------
8355 Get message buffer
8356 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 sizeof(halInitScanReqMsg.initScanParams),
8359 &pSendBuffer, &usDataOffset, &usSendSize))||
8360 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8361 {
8362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008363 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 }
8368
8369
8370 /*-----------------------------------------------------------------------
8371 Fill in the message
8372 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8375
8376 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8377 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8378
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8385
8386 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8387 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8388
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8391
8392 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8393 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8396 }
8397
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 wpalMemoryCopy( pSendBuffer+usDataOffset,
8399 &halInitScanReqMsg.initScanParams,
8400 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 }
8402
8403 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008405
8406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8411
8412}/*WDI_ProcessInitScanReq*/
8413
8414/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008415 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008417
8418 @param pWDICtx: pointer to the WLAN DAL context
8419 pEventData: pointer to the event information structure
8420
Jeff Johnson295189b2012-06-20 16:38:30 -07008421 @see
8422 @return Result of the function call
8423*/
8424WDI_Status
8425WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008426(
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 WDI_ControlBlockType* pWDICtx,
8428 WDI_EventInfoType* pEventData
8429)
8430{
8431 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8432 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008434 wpt_uint16 usDataOffset = 0;
8435 wpt_uint16 usSendSize = 0;
8436
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8439
8440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 -------------------------------------------------------------------------*/
8443 if (( NULL == pEventData ) ||
8444 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8445 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8446 {
8447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 }
8452
8453#if 0
8454 wpalMutexAcquire(&pWDICtx->wptMutex);
8455 /*-----------------------------------------------------------------------
8456 Check to see if SCAN is already in progress - start scan is only
8457 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008461 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8462 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8463 {
8464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8465 "Scan start not allowed in this state %d %d",
8466 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008467
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 }
8471
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008473
8474 wpalMutexRelease(&pWDICtx->wptMutex);
8475#endif
8476
8477 /*-----------------------------------------------------------------------
8478 Get message buffer
8479 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 sizeof(halStartScanReqMsg.startScanParams),
8482 &pSendBuffer, &usDataOffset, &usSendSize))||
8483 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8484 {
8485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008486 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 }
8491
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008494 wpalMemoryCopy( pSendBuffer+usDataOffset,
8495 &halStartScanReqMsg.startScanParams,
8496 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008497
8498 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008500
8501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8506}/*WDI_ProcessStartScanReq*/
8507
8508
8509/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008512
8513 @param pWDICtx: pointer to the WLAN DAL context
8514 pEventData: pointer to the event information structure
8515
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 @see
8517 @return Result of the function call
8518*/
8519WDI_Status
8520WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008521(
Jeff Johnson295189b2012-06-20 16:38:30 -07008522 WDI_ControlBlockType* pWDICtx,
8523 WDI_EventInfoType* pEventData
8524)
8525{
8526 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8527 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008529 wpt_uint16 usDataOffset = 0;
8530 wpt_uint16 usSendSize = 0;
8531
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8534
8535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008537 -------------------------------------------------------------------------*/
8538 if (( NULL == pEventData ) ||
8539 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8540 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8541 {
8542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008546 }
8547
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8549 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 * forwarded to HAL and result in hang*/
8551#if 0
8552 wpalMutexAcquire(&pWDICtx->wptMutex);
8553 /*-----------------------------------------------------------------------
8554 Check to see if SCAN is already in progress - end scan is only
8555 allowed when a scan is ongoing and the state of the scan procedure
8556 is started
8557 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8560 {
8561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8562 "End start not allowed in this state %d %d",
8563 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008564
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 }
8568
Jeff Johnsone7245742012-09-05 17:12:55 -07008569 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008570
8571 wpalMutexRelease(&pWDICtx->wptMutex);
8572#endif
8573
8574 /*-----------------------------------------------------------------------
8575 Get message buffer
8576 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008577 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008578 sizeof(halEndScanReqMsg.endScanParams),
8579 &pSendBuffer, &usDataOffset, &usSendSize))||
8580 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8581 {
8582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008583 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 }
8588
8589 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8590
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 wpalMemoryCopy( pSendBuffer+usDataOffset,
8592 &halEndScanReqMsg.endScanParams,
8593 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008594
8595 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008597
8598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008602 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8603}/*WDI_ProcessEndScanReq*/
8604
8605
8606/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008607 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008608 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008609
8610 @param pWDICtx: pointer to the WLAN DAL context
8611 pEventData: pointer to the event information structure
8612
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 @see
8614 @return Result of the function call
8615*/
8616WDI_Status
8617WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008618(
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 WDI_ControlBlockType* pWDICtx,
8620 WDI_EventInfoType* pEventData
8621)
8622{
8623 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8624 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008625 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008626 wpt_uint16 usDataOffset = 0;
8627 wpt_uint16 usSendSize = 0;
8628 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008629 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008630 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8632
8633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008634 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 -------------------------------------------------------------------------*/
8636 if (( NULL == pEventData ) ||
8637 ( NULL == pEventData->pEventData) ||
8638 ( NULL == pEventData->pCBfnc))
8639 {
8640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008641 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008644 }
8645
8646 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8647 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8649 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 * forwarded to HAL and result in hang*/
8651#if 0
8652 wpalMutexAcquire(&pWDICtx->wptMutex);
8653 /*-----------------------------------------------------------------------
8654 Check to see if SCAN is already in progress
8655 Finish scan gets invoked any scan states. ie. abort scan
8656 It should be allowed in any states.
8657 -----------------------------------------------------------------------*/
8658 if ( !pWDICtx->bScanInProgress )
8659 {
8660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8661 "Finish start not allowed in this state %d",
8662 pWDICtx->bScanInProgress );
8663
8664 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 }
8667
8668 /*-----------------------------------------------------------------------
8669 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8673 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 wpalMutexRelease(&pWDICtx->wptMutex);
8675#endif
8676
8677 if ( pWDICtx->bInBmps )
8678 {
8679 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008680 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8681 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8682 {
8683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008684 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008685 WDI_ASSERT(0);
8686 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008687 }
8688
8689 /*-----------------------------------------------------------------------
8690 Get message buffer
8691 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 sizeof(halFinishScanReqMsg.finishScanParams),
8694 &pSendBuffer, &usDataOffset, &usSendSize))||
8695 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8696 {
8697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008698 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008702 }
8703
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8706
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8709
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8712
8713 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8714 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8715
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008718 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008719 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008720 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008721 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8722
Jeff Johnsone7245742012-09-05 17:12:55 -07008723 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008724 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8725
8726 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8727 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8730 }
8731
8732 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8733 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8734
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 wpalMemoryCopy( pSendBuffer+usDataOffset,
8736 &halFinishScanReqMsg.finishScanParams,
8737 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008738
8739 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008741
8742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8747}/*WDI_ProcessFinishScanReq*/
8748
8749
8750/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008752==========================================================================*/
8753/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 @brief Process BSS Join for a given Session
8755
8756 @param pWDICtx: pointer to the WLAN DAL context
8757 pEventData: pointer to the event information structure
8758
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 @see
8760 @return Result of the function call
8761*/
8762WDI_Status
8763WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008764(
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 WDI_ControlBlockType* pWDICtx,
8766 WDI_JoinReqParamsType* pwdiJoinParams,
8767 WDI_JoinRspCb wdiJoinRspCb,
8768 void* pUserData
8769)
8770{
8771 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008772 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008773 wpt_uint16 usDataOffset = 0;
8774 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008776
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8779
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008780 wpalMutexAcquire(&pWDICtx->wptMutex);
8781
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 /*------------------------------------------------------------------------
8783 Check to see if we have any session with this BSSID already stored, we
8784 should not
8785 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8787 pwdiJoinParams->wdiReqInfo.macBSSID,
8788 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008789
8790 if ( NULL != pBSSSes )
8791 {
8792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008793 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8794 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008795
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008796 /*reset the bAssociationInProgress otherwise the next
8797 *join request will be queued*/
8798 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8799 wpalMutexRelease(&pWDICtx->wptMutex);
8800 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 }
8802
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008804 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 if ( NULL == pBSSSes )
8808 {
8809
8810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8811 "DAL has no free sessions - cannot run another join");
8812
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008813 /*reset the bAssociationInProgress otherwise the next
8814 *join request will be queued*/
8815 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 }
8819
8820 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8822 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008823 WDI_MAC_ADDR_LEN);
8824
8825 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008828
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 wpalMutexRelease(&pWDICtx->wptMutex);
8830
8831 /*-----------------------------------------------------------------------
8832 Get message buffer
8833 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 sizeof(halJoinReqMsg.joinReqParams),
8836 &pSendBuffer, &usDataOffset, &usSendSize))||
8837 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8838 {
8839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008840 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 pUserData, pwdiJoinParams, wdiJoinRspCb);
8842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 }
8845
8846 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008848
8849 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 pwdiJoinParams->wdiReqInfo.macSTASelf,
8851 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008852
Jeff Johnsone7245742012-09-05 17:12:55 -07008853 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8855
8856 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8857
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008858#ifdef WLAN_FEATURE_VOWIFI
8859 halJoinReqMsg.joinReqParams.maxTxPower =
8860 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8861#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8864#endif
8865
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8868 wdiSecondaryChannelOffset);
8869
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 wpalMemoryCopy( pSendBuffer+usDataOffset,
8871 &halJoinReqMsg.joinReqParams,
8872 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008873
8874 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008876
8877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008878 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008879 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008880 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8881 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008882
8883}/*WDI_ProcessBSSSessionJoinReq*/
8884
8885/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008886 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008888
8889 @param pWDICtx: pointer to the WLAN DAL context
8890 pEventData: pointer to the event information structure
8891
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 @see
8893 @return Result of the function call
8894*/
8895WDI_Status
8896WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008897(
Jeff Johnson295189b2012-06-20 16:38:30 -07008898 WDI_ControlBlockType* pWDICtx,
8899 WDI_EventInfoType* pEventData
8900)
8901{
8902 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8903 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8904 WDI_JoinRspCb wdiJoinRspCb = NULL;
8905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8906
8907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 -------------------------------------------------------------------------*/
8910 if (( NULL == pEventData ) ||
8911 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8912 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8913 {
8914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008918 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008919
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 /*-------------------------------------------------------------------------
8921 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008922 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 -------------------------------------------------------------------------*/
8924 wpalMutexAcquire(&pWDICtx->wptMutex);
8925
8926 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8927 {
8928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8929 "Association is currently in progress, queueing new join req");
8930
8931 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 pwdiJoinParams->wdiReqInfo.macBSSID);
8934
8935 wpalMutexRelease(&pWDICtx->wptMutex);
8936
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 }
8939
8940 /*Starting a new association */
8941 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8942 wpalMutexRelease(&pWDICtx->wptMutex);
8943
8944 /*Process the Join Request*/
8945 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8946 wdiJoinRspCb,pEventData->pUserData);
8947
8948}/*WDI_ProcessJoinReq*/
8949
8950
8951/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008954
8955 @param pWDICtx: pointer to the WLAN DAL context
8956 pEventData: pointer to the event information structure
8957
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 @see
8959 @return Result of the function call
8960*/
8961WDI_Status
8962WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008963(
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 WDI_ControlBlockType* pWDICtx,
8965 WDI_EventInfoType* pEventData
8966)
8967{
8968 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8969 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 wpt_uint16 uMsgSize = 0;
8973 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 wpt_uint16 usDataOffset = 0;
8975 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008977
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8980
8981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008982 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 -------------------------------------------------------------------------*/
8984 if (( NULL == pEventData ) ||
8985 ( NULL == pEventData->pEventData ) ||
8986 ( NULL == pEventData->pCBfnc ))
8987 {
8988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008989 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008992 }
8993
Abhishek Singh6927fa02014-06-27 17:19:55 +05308994 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8996 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8997 /*-------------------------------------------------------------------------
8998 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008999 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009000 -------------------------------------------------------------------------*/
9001 wpalMutexAcquire(&pWDICtx->wptMutex);
9002
9003 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009004 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9007 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
9008 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009009
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 {
9012#ifdef WLAN_FEATURE_VOWIFI_11R
9013 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 if ( NULL == pBSSSes )
9018 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009019
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9021 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009022
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009026
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9029 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009031
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9035#else
Jeff Johnsone7245742012-09-05 17:12:55 -07009036 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 * Request in case of IBSS*/
9038 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
9039 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
9040 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
9041 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
9042 {
9043 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009044 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009045 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009046 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009047 if ( NULL == pBSSSes )
9048 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009049
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9051 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009052
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009054 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009055 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009056
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009058 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9059 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009061
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009063 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009064 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9065 }
9066 else
9067 {
9068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
9070 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9071 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
9072
Jeff Johnson295189b2012-06-20 16:38:30 -07009073 /* for IBSS testing */
9074 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 }
9077#endif
9078 }
9079
9080 /*------------------------------------------------------------------------
9081 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 ------------------------------------------------------------------------*/
9084 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9085 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9087 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
9088 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9089 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009090
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009092
9093 wpalMutexRelease(&pWDICtx->wptMutex);
9094
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 }
9097
9098 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
9100 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009101 sizeof(pWDICtx->wdiCachedConfigBssReq));
9102
9103 wpalMutexRelease(&pWDICtx->wptMutex);
9104
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
9106#ifdef WLAN_FEATURE_11AC
9107 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009108 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 else
9110#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009111 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07009112
9113 /*-----------------------------------------------------------------------
9114 Get message buffer
9115 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009117 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
9118 ( usSendSize < (usDataOffset + uMsgSize )))
9119 {
9120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009121 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
9123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 }
9126
9127 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07009128#ifdef WLAN_FEATURE_11AC
9129 if (WDI_getFwWlanFeatCaps(DOT11AC))
9130 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
9131 &pwdiConfigBSSParams->wdiReqInfo);
9132 else
9133#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 &pwdiConfigBSSParams->wdiReqInfo);
9136
9137 /* Need to fill in the STA Index to invalid, since at this point we have not
9138 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07009140
9141 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
9143
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009144#ifdef WLAN_FEATURE_11AC
9145 if (WDI_getFwWlanFeatCaps(DOT11AC)){
9146 wpalMemoryCopy( pSendBuffer+usDataOffset,
9147 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
9148 uMsgSize);
9149 }else
9150#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009151 {
9152 if ( uMsgSize <= sizeof(tConfigBssParams) )
9153 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07009154 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009155 &halConfigBssReqMsg.uBssParams.configBssParams,
9156 uMsgSize);
9157 }
9158 else
9159 {
9160 return WDI_STATUS_E_FAILURE;
9161 }
9162 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009163
9164 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309166 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009170 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9171 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 WDI_CONFIG_BSS_RESP);
9173
9174}/*WDI_ProcessConfigBSSReq*/
9175
9176
9177/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009180
9181 @param pWDICtx: pointer to the WLAN DAL context
9182 pEventData: pointer to the event information structure
9183
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 @see
9185 @return Result of the function call
9186*/
9187WDI_Status
9188WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009189(
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 WDI_ControlBlockType* pWDICtx,
9191 WDI_EventInfoType* pEventData
9192)
9193{
9194 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
9195 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009198 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 wpt_uint16 usDataOffset = 0;
9200 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009202
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9205
9206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 -------------------------------------------------------------------------*/
9209 if (( NULL == pEventData ) ||
9210 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
9211 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
9212 {
9213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009214 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 }
9218
9219 /*-------------------------------------------------------------------------
9220 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009222 -------------------------------------------------------------------------*/
9223 wpalMutexAcquire(&pWDICtx->wptMutex);
9224
9225 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009227 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9229 pwdiDelBSSParams->ucBssIdx,
9230 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009231
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009233 {
9234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 "%s: BSS does not yet exist. ucBssIdx %d",
9236 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009237
9238 wpalMutexRelease(&pWDICtx->wptMutex);
9239
9240 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009242
9243 /*------------------------------------------------------------------------
9244 Check if this BSS is being currently processed or queued,
9245 if queued - queue the new request as well
9246 ------------------------------------------------------------------------*/
9247 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9250 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9251 __func__, pwdiDelBSSParams->ucBssIdx);
9252
9253 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9254
9255 wpalMutexRelease(&pWDICtx->wptMutex);
9256
9257 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009258 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009259
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 /*-----------------------------------------------------------------------
9261 If we receive a Del BSS request for an association that is already in
9262 progress, it indicates that the assoc has failed => we no longer have
9263 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 -----------------------------------------------------------------------*/
9266 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9267 {
9268 /*We can switch to false here because even if a subsequent Join comes in
9269 it will only be processed when DAL transitions out of BUSY state which
9270 happens when the Del BSS request comes */
9271 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9272
9273 /*Former association is complete - prepare next pending assoc for
9274 processing */
9275 WDI_DequeueAssocRequest(pWDICtx);
9276 }
9277
9278 wpalMutexRelease(&pWDICtx->wptMutex);
9279 /*-----------------------------------------------------------------------
9280 Get message buffer
9281 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 sizeof(halBssReqMsg.deleteBssParams),
9284 &pSendBuffer, &usDataOffset, &usSendSize))||
9285 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9286 {
9287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009288 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 }
9293
9294 /*Fill in the message request structure*/
9295
9296 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009297 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009298
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 wpalMemoryCopy( pSendBuffer+usDataOffset,
9300 &halBssReqMsg.deleteBssParams,
9301 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009302
9303 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009304 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009305
Jeff Johnsone7245742012-09-05 17:12:55 -07009306
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9312
Jeff Johnsone7245742012-09-05 17:12:55 -07009313
Jeff Johnson295189b2012-06-20 16:38:30 -07009314}/*WDI_ProcessDelBSSReq*/
9315
9316/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009319
9320 @param pWDICtx: pointer to the WLAN DAL context
9321 pEventData: pointer to the event information structure
9322
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 @see
9324 @return Result of the function call
9325*/
9326WDI_Status
9327WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009328(
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 WDI_ControlBlockType* pWDICtx,
9330 WDI_EventInfoType* pEventData
9331)
9332{
9333 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9334 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 wpt_uint16 usDataOffset = 0;
9339 wpt_uint16 usSendSize = 0;
9340 wpt_uint16 uMsgSize = 0;
9341 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009343
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9346
9347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009349 -------------------------------------------------------------------------*/
9350 if (( NULL == pEventData ) ||
9351 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9352 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9353 {
9354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 }
9359
9360 /*-------------------------------------------------------------------------
9361 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009362 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 -------------------------------------------------------------------------*/
9364 wpalMutexAcquire(&pWDICtx->wptMutex);
9365
9366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9370 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9371 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009372
9373 if ( NULL == pBSSSes )
9374 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9376 "%s: Association sequence for this BSS does not yet exist - "
9377 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9378 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009379
9380 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 }
9383
9384 /*------------------------------------------------------------------------
9385 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 ------------------------------------------------------------------------*/
9388 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9389 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9391 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9392 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009393
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009395
9396 wpalMutexRelease(&pWDICtx->wptMutex);
9397
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 }
9400
9401 /*-----------------------------------------------------------------------
9402 If Post Assoc was not yet received - the current association must
9403 be in progress
9404 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9407 {
9408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9409 "Association sequence for this BSS association no longer in "
9410 "progress - not allowed");
9411
9412 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 }
9415
9416 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009417 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 -----------------------------------------------------------------------*/
9419 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9420 {
9421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9422 "Post Assoc not allowed before JOIN - failing request");
9423
9424 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 }
9427
9428 wpalMutexRelease(&pWDICtx->wptMutex);
9429
9430 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9431 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9432 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009435 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009436 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9437 ( usSendSize < (usDataOffset + uMsgSize )))
9438 {
9439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009440 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009444 }
9445
9446 /*Copy the STA parameters */
9447 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9448 &pwdiPostAssocParams->wdiSTAParams );
9449
9450 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 WDI_STATableFindStaidByAddr(pWDICtx,
9453 pwdiPostAssocParams->wdiSTAParams.macSTA,
9454 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9455 {
9456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009457 MAC_ADDRESS_STR
9458 ": This station does not exist in the WDI Station Table",
9459 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009461 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 }
9464
9465 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 pBSSSes->ucBSSIdx;
9468
9469 /*Copy the BSS parameters */
9470 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9471 &pwdiPostAssocParams->wdiBSSParams);
9472
9473 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009474 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009475 WDI_STATableFindStaidByAddr(pWDICtx,
9476 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 {
9479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009480 MAC_ADDRESS_STR
9481 ": This station does not exist in the WDI Station Table",
9482 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009483 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009484 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 }
9487
9488 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 pBSSSes->ucBSSIdx;
9491
Jeff Johnsone7245742012-09-05 17:12:55 -07009492
9493 wpalMemoryCopy( pSendBuffer+usDataOffset,
9494 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9495 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009496
9497 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9498
Jeff Johnsone7245742012-09-05 17:12:55 -07009499 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9500 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9501 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009502
Jeff Johnsone7245742012-09-05 17:12:55 -07009503
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009506
Jeff Johnsone7245742012-09-05 17:12:55 -07009507
9508 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009511
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309512 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009514 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009515 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9518
Jeff Johnsone7245742012-09-05 17:12:55 -07009519
Jeff Johnson295189b2012-06-20 16:38:30 -07009520}/*WDI_ProcessPostAssocReq*/
9521
9522/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009525
9526 @param pWDICtx: pointer to the WLAN DAL context
9527 pEventData: pointer to the event information structure
9528
Jeff Johnson295189b2012-06-20 16:38:30 -07009529 @see
9530 @return Result of the function call
9531*/
9532WDI_Status
9533WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009534(
Jeff Johnson295189b2012-06-20 16:38:30 -07009535 WDI_ControlBlockType* pWDICtx,
9536 WDI_EventInfoType* pEventData
9537)
9538{
9539 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9540 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009541 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009542 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 wpt_uint16 usDataOffset = 0;
9545 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009547 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9548
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9551
9552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 -------------------------------------------------------------------------*/
9555 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9556 ( NULL == pEventData->pCBfnc ))
9557 {
9558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009559 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009560 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 }
9563
9564 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9565 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9566 /*-------------------------------------------------------------------------
9567 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 -------------------------------------------------------------------------*/
9570 wpalMutexAcquire(&pWDICtx->wptMutex);
9571
9572 /*------------------------------------------------------------------------
9573 Find the BSS for which the request is made and identify WDI session
9574 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009575 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9576 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 &macBSSID))
9578 {
9579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009580 "This station does not exist in the WDI Station Table %d",
9581 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 }
9585
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9587 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9590 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9591 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009592
9593 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 }
9596
9597 /*------------------------------------------------------------------------
9598 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 ------------------------------------------------------------------------*/
9601 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9602 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9604 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9605 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009606
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 }
9611
9612 wpalMutexRelease(&pWDICtx->wptMutex);
9613 /*-----------------------------------------------------------------------
9614 Get message buffer
9615 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 sizeof(halDelStaReqMsg.delStaParams),
9618 &pSendBuffer, &usDataOffset, &usSendSize))||
9619 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9620 {
9621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009622 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 }
9627
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9629 wpalMemoryCopy( pSendBuffer+usDataOffset,
9630 &halDelStaReqMsg.delStaParams,
9631 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009632
9633 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009635
9636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9641
9642}/*WDI_ProcessDelSTAReq*/
9643
9644
9645/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009646 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009647==========================================================================*/
9648/**
9649 @brief Process Set BSS Key Request function (called when Main FSM
9650 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009651
9652 @param pWDICtx: pointer to the WLAN DAL context
9653 pEventData: pointer to the event information structure
9654
Jeff Johnson295189b2012-06-20 16:38:30 -07009655 @see
9656 @return Result of the function call
9657*/
9658WDI_Status
9659WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009660(
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 WDI_ControlBlockType* pWDICtx,
9662 WDI_EventInfoType* pEventData
9663)
9664{
9665 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9666 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009667 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009668 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 wpt_uint16 usDataOffset = 0;
9671 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9674 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309675 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009676
9677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9678
9679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 -------------------------------------------------------------------------*/
9682 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9683 ( NULL == pEventData->pCBfnc ))
9684 {
9685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009686 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 }
9690
9691 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9692 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9693 /*-------------------------------------------------------------------------
9694 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 -------------------------------------------------------------------------*/
9697 wpalMutexAcquire(&pWDICtx->wptMutex);
9698
9699 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9703 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9704 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009705
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 {
9708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9710 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009711
9712 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009714 }
9715
9716 /*------------------------------------------------------------------------
9717 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 ------------------------------------------------------------------------*/
9720 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9721 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9723 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9724 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009725
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009728 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009729 }
9730
9731
9732 wpalMutexRelease(&pWDICtx->wptMutex);
9733 /*-----------------------------------------------------------------------
9734 Get message buffer
9735 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009736 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009737 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9738 &pSendBuffer, &usDataOffset, &usSendSize))||
9739 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9740 {
9741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009742 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009743 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 }
9747
9748 /*-----------------------------------------------------------------------
9749 Copy the Key parameters into the HAL message
9750 -----------------------------------------------------------------------*/
9751
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009753
Jeff Johnsone7245742012-09-05 17:12:55 -07009754 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9756
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9759
9760 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9761 keyIndex++)
9762 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9765 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9766 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9767 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9768 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309769
9770 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9771 {
9772 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9773 {
9774 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9775 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9776 }
9777
9778 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9779 {
9780 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9781 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9782 }
9783
9784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9785 "%s: Negated Keys", __func__);
9786 }
9787 else
9788 {
9789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9790 "%s: No change in Keys", __func__);
9791 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309794 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9795 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9796 WDI_MAX_KEY_LENGTH);
9797 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309802 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009803
9804 wpalMemoryCopy( pSendBuffer+usDataOffset,
9805 &halSetBssKeyReqMsg.setBssKeyParams,
9806 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009807
9808 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009809 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009810
9811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9815 wdiSetBSSKeyRspCb, pEventData->pUserData,
9816 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009817
9818}/*WDI_ProcessSetBssKeyReq*/
9819
9820/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009823
9824 @param pWDICtx: pointer to the WLAN DAL context
9825 pEventData: pointer to the event information structure
9826
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 @see
9828 @return Result of the function call
9829*/
9830WDI_Status
9831WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009832(
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 WDI_ControlBlockType* pWDICtx,
9834 WDI_EventInfoType* pEventData
9835)
9836{
9837 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9838 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009842 wpt_uint16 usDataOffset = 0;
9843 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009845 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9847
9848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009850 -------------------------------------------------------------------------*/
9851 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9852 ( NULL == pEventData->pCBfnc ))
9853 {
9854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009858 }
9859
9860 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9861 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9862 /*-------------------------------------------------------------------------
9863 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 -------------------------------------------------------------------------*/
9866 wpalMutexAcquire(&pWDICtx->wptMutex);
9867
9868 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009871 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9872 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9873 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009874
Jeff Johnsone7245742012-09-05 17:12:55 -07009875 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009876 {
9877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9879 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009880
9881 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009883 }
9884
9885 /*------------------------------------------------------------------------
9886 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009888 ------------------------------------------------------------------------*/
9889 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9890 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9892 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9893 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009894
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 }
9899
9900
9901 wpalMutexRelease(&pWDICtx->wptMutex);
9902
9903 /*-----------------------------------------------------------------------
9904 Get message buffer
9905 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9908 &pSendBuffer, &usDataOffset, &usSendSize))||
9909 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9910 {
9911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009912 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009913 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 }
9917 /*-----------------------------------------------------------------------
9918 Copy the Key parameters into the HAL message
9919 -----------------------------------------------------------------------*/
9920 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9921
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9924
9925 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9926
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9929
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 wpalMemoryCopy( pSendBuffer+usDataOffset,
9931 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9932 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009933
9934 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009936
9937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009939 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009940 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009941 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009943}/*WDI_ProcessRemoveBssKeyReq*/
9944
9945/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009948
9949 @param pWDICtx: pointer to the WLAN DAL context
9950 pEventData: pointer to the event information structure
9951
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 @see
9953 @return Result of the function call
9954*/
9955WDI_Status
9956WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009957(
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 WDI_ControlBlockType* pWDICtx,
9959 WDI_EventInfoType* pEventData
9960)
9961{
9962 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9963 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9964 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 wpt_uint16 usDataOffset = 0;
9967 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009970 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9972 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309973 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009974
9975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9976
9977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009979 -------------------------------------------------------------------------*/
9980 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9981 ( NULL == pEventData->pCBfnc ))
9982 {
9983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 }
9988
9989 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9990 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9991 /*-------------------------------------------------------------------------
9992 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009993 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009994 -------------------------------------------------------------------------*/
9995 wpalMutexAcquire(&pWDICtx->wptMutex);
9996
9997 /*------------------------------------------------------------------------
9998 Find the BSS for which the request is made and identify WDI session
9999 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010000 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10001 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 &macBSSID))
10003 {
10004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010005 "This station does not exist in the WDI Station Table %d",
10006 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010007 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 }
10010
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10012 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10015 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10016 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010017
10018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010020 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010021
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 /*------------------------------------------------------------------------
10023 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 ------------------------------------------------------------------------*/
10026 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10027 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10029 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10030 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010031
Jeff Johnsone7245742012-09-05 17:12:55 -070010032 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010033 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010035 }
10036
10037
10038 wpalMutexRelease(&pWDICtx->wptMutex);
10039 /*-----------------------------------------------------------------------
10040 Get message buffer
10041 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010043 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10044 &pSendBuffer, &usDataOffset, &usSendSize))||
10045 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10046 {
10047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010048 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 }
10053 /*-----------------------------------------------------------------------
10054 Copy the STA Key parameters into the HAL message
10055 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010056 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10058
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10061
10062 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10063
10064 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10065
10066 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10067
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10069 keyIndex++)
10070 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010072 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10073 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10074 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10075 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10076 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010077
10078 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10079 {
10080 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10081 {
10082 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10083 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10084 }
10085
10086 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10087 {
10088 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10089 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10090 }
10091
10092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10093 "%s: Negated Keys", __func__);
10094 }
10095 else
10096 {
10097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10098 "%s: No change in Keys", __func__);
10099 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010102 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10103 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10104 WDI_MAX_KEY_LENGTH);
10105 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010106 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010107 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010109 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010110 }
Jeff Johnson295189b2012-06-20 16:38:30 -070010111
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 wpalMemoryCopy( pSendBuffer+usDataOffset,
10113 &halSetStaKeyReqMsg.setStaKeyParams,
10114 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010115
10116 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010118 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10123 wdiSetSTAKeyRspCb, pEventData->pUserData,
10124 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010125
10126}/*WDI_ProcessSetSTAKeyReq*/
10127
10128/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010130 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010131
10132 @param pWDICtx: pointer to the WLAN DAL context
10133 pEventData: pointer to the event information structure
10134
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 @see
10136 @return Result of the function call
10137*/
10138WDI_Status
10139WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010140(
Jeff Johnson295189b2012-06-20 16:38:30 -070010141 WDI_ControlBlockType* pWDICtx,
10142 WDI_EventInfoType* pEventData
10143)
10144{
10145 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
10146 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10147 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 wpt_uint16 usDataOffset = 0;
10150 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010151 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 wpt_macAddr macBSSID;
10153 wpt_uint8 ucCurrentBSSSesIdx;
10154 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
10155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10156
10157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 -------------------------------------------------------------------------*/
10160 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10161 ( NULL == pEventData->pCBfnc ))
10162 {
10163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 }
10168
10169 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10170 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10171 /*-------------------------------------------------------------------------
10172 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 -------------------------------------------------------------------------*/
10175 wpalMutexAcquire(&pWDICtx->wptMutex);
10176
10177 /*------------------------------------------------------------------------
10178 Find the BSS for which the request is made and identify WDI session
10179 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10181 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 &macBSSID))
10183 {
10184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010185 "This station does not exist in the WDI Station Table %d",
10186 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 }
10190
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10192 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10195 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10196 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010197
10198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010201
Jeff Johnson295189b2012-06-20 16:38:30 -070010202 /*------------------------------------------------------------------------
10203 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010204 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 ------------------------------------------------------------------------*/
10206 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10207 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10209 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10210 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010211
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010215 }
10216
10217
10218
10219 wpalMutexRelease(&pWDICtx->wptMutex);
10220 /*-----------------------------------------------------------------------
10221 Get message buffer
10222 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010223 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010224 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
10225 &pSendBuffer, &usDataOffset, &usSendSize))||
10226 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
10227 {
10228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010229 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
10231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 }
10234
10235 /*-----------------------------------------------------------------------
10236 Copy the Key parameters into the HAL message
10237 -----------------------------------------------------------------------*/
10238
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10241
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
10244
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010246 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
10247
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
10250
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 wpalMemoryCopy( pSendBuffer+usDataOffset,
10252 &halRemoveStaKeyReqMsg.removeStaKeyParams,
10253 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010254
10255 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010256 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010257
10258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010261 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010264
10265}/*WDI_ProcessRemoveSTAKeyReq*/
10266
10267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010269 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010270
10271 @param pWDICtx: pointer to the WLAN DAL context
10272 pEventData: pointer to the event information structure
10273
Jeff Johnson295189b2012-06-20 16:38:30 -070010274 @see
10275 @return Result of the function call
10276*/
10277WDI_Status
10278WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010279(
Jeff Johnson295189b2012-06-20 16:38:30 -070010280 WDI_ControlBlockType* pWDICtx,
10281 WDI_EventInfoType* pEventData
10282)
10283{
10284 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10285 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10286 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 wpt_uint16 usDataOffset = 0;
10289 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010292 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010293 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10294 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010295 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010296
10297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10298
10299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 -------------------------------------------------------------------------*/
10302 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10303 ( NULL == pEventData->pCBfnc ))
10304 {
10305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010309 }
10310
10311 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10312 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10313 /*-------------------------------------------------------------------------
10314 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010315 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010316 -------------------------------------------------------------------------*/
10317 wpalMutexAcquire(&pWDICtx->wptMutex);
10318
10319 /*------------------------------------------------------------------------
10320 Find the BSS for which the request is made and identify WDI session
10321 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10323 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 &macBSSID))
10325 {
10326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010327 "This station does not exist in the WDI Station Table %d",
10328 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 }
10332
Jeff Johnsone7245742012-09-05 17:12:55 -070010333 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10334 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 {
10336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010337 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010339
10340 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010343
Jeff Johnson295189b2012-06-20 16:38:30 -070010344 /*------------------------------------------------------------------------
10345 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 ------------------------------------------------------------------------*/
10348 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10349 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10351 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10352 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010353
Jeff Johnsone7245742012-09-05 17:12:55 -070010354 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 }
10358
10359
10360 wpalMutexRelease(&pWDICtx->wptMutex);
10361 /*-----------------------------------------------------------------------
10362 Get message buffer
10363 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010365 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10366 &pSendBuffer, &usDataOffset, &usSendSize))||
10367 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10368 {
10369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010370 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 }
10375 /*-----------------------------------------------------------------------
10376 Copy the STA Key parameters into the HAL message
10377 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10380
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10383
10384 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10385
10386 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10387
10388 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10389
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10391 keyIndex++)
10392 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10395 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10396 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10397 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10398 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010399
10400 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10401 {
10402 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10403 {
10404 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10405 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10406 }
10407
10408 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10409 {
10410 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10411 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10412 }
10413
10414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10415 "%s: Negated Keys", __func__);
10416 }
10417 else
10418 {
10419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10420 "%s: No change in Keys", __func__);
10421 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010422 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010423 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010424 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10425 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10426 WDI_MAX_KEY_LENGTH);
10427 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010430 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010431 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010432 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 wpalMemoryCopy( pSendBuffer+usDataOffset,
10434 &halSetStaKeyReqMsg.setStaKeyParams,
10435 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010436
10437 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010439
10440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10444 wdiSetSTAKeyRspCb, pEventData->pUserData,
10445 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010446
10447}/*WDI_ProcessSetSTABcastKeyReq*/
10448
10449/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010452
10453 @param pWDICtx: pointer to the WLAN DAL context
10454 pEventData: pointer to the event information structure
10455
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 @see
10457 @return Result of the function call
10458*/
10459WDI_Status
10460WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010461(
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 WDI_ControlBlockType* pWDICtx,
10463 WDI_EventInfoType* pEventData
10464)
10465{
10466 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10467 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10468 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 wpt_uint16 usDataOffset = 0;
10471 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 wpt_macAddr macBSSID;
10474 wpt_uint8 ucCurrentBSSSesIdx;
10475 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10477
10478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 -------------------------------------------------------------------------*/
10481 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10482 ( NULL == pEventData->pCBfnc ))
10483 {
10484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010485 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 }
10489
10490 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10491 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10492 /*-------------------------------------------------------------------------
10493 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 -------------------------------------------------------------------------*/
10496 wpalMutexAcquire(&pWDICtx->wptMutex);
10497
10498 /*------------------------------------------------------------------------
10499 Find the BSS for which the request is made and identify WDI session
10500 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10502 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 &macBSSID))
10504 {
10505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010506 "This station does not exist in the WDI Station Table %d",
10507 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 }
10511
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10513 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010514 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10516 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10517 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010518
10519 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010522
Jeff Johnson295189b2012-06-20 16:38:30 -070010523 /*------------------------------------------------------------------------
10524 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010525 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 ------------------------------------------------------------------------*/
10527 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10528 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10530 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10531 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010532
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010534 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 }
10537
10538
10539
10540 wpalMutexRelease(&pWDICtx->wptMutex);
10541 /*-----------------------------------------------------------------------
10542 Get message buffer
10543 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010544 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010545 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10546 &pSendBuffer, &usDataOffset, &usSendSize))||
10547 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10548 {
10549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010550 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 }
10555
10556 /*-----------------------------------------------------------------------
10557 Copy the Key parameters into the HAL message
10558 -----------------------------------------------------------------------*/
10559
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10562
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10565
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10568
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10571
Jeff Johnsone7245742012-09-05 17:12:55 -070010572 wpalMemoryCopy( pSendBuffer+usDataOffset,
10573 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10574 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010575
10576 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010577 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010578
10579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010584 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010585
10586}/*WDI_ProcessRemoveSTABcastKeyReq*/
10587
10588/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010590==========================================================================*/
10591/**
10592 @brief Process Add TSpec Request function (called when Main FSM
10593 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010594
10595 @param pWDICtx: pointer to the WLAN DAL context
10596 pEventData: pointer to the event information structure
10597
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 @see
10599 @return Result of the function call
10600*/
10601WDI_Status
10602WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010603(
Jeff Johnson295189b2012-06-20 16:38:30 -070010604 WDI_ControlBlockType* pWDICtx,
10605 WDI_EventInfoType* pEventData
10606)
10607{
10608 WDI_AddTSReqParamsType* pwdiAddTSParams;
10609 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010611 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 wpt_uint16 usDataOffset = 0;
10614 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 wpt_macAddr macBSSID;
10617 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010618
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10620
10621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010623 -------------------------------------------------------------------------*/
10624 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10625 ( NULL == pEventData->pCBfnc ))
10626 {
10627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 }
10632
10633 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10634 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10635 /*-------------------------------------------------------------------------
10636 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 -------------------------------------------------------------------------*/
10639 wpalMutexAcquire(&pWDICtx->wptMutex);
10640
10641 /*------------------------------------------------------------------------
10642 Find the BSS for which the request is made and identify WDI session
10643 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10645 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 &macBSSID))
10647 {
10648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010649 "This station does not exist in the WDI Station Table %d",
10650 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010651 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010653 }
10654
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10656 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010657 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10659 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10660 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010661
10662 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010663 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010664 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010665
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 /*------------------------------------------------------------------------
10667 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010668 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010669 ------------------------------------------------------------------------*/
10670 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10671 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10673 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10674 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010675
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010679 }
10680
10681 wpalMutexRelease(&pWDICtx->wptMutex);
10682 /*-----------------------------------------------------------------------
10683 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10687 sizeof(halAddTsParams),
10688 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 &usSendSize))||
10690 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10691 {
10692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010693 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010697 }
10698
10699 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10700 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10701
10702 //TSPEC IE
10703 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10704 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010705 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010706 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010707 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010709 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010710 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010715 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010716 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010725 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010731 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010732 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010733 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010734 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10735
10736 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010739 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010740 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010742 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010743 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010750 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10751
10752 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10757
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 wpalMemoryCopy( pSendBuffer+usDataOffset,
10759 &halAddTsParams,
10760 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010761
10762 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010764
10765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010766 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010768 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010771}/*WDI_ProcessAddTSpecReq*/
10772
10773
10774/**
10775 @brief Process Del TSpec Request function (called when Main FSM
10776 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010777
10778 @param pWDICtx: pointer to the WLAN DAL context
10779 pEventData: pointer to the event information structure
10780
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 @see
10782 @return Result of the function call
10783*/
10784WDI_Status
10785WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010786(
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 WDI_ControlBlockType* pWDICtx,
10788 WDI_EventInfoType* pEventData
10789)
10790{
10791 WDI_DelTSReqParamsType* pwdiDelTSParams;
10792 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010793 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010794 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 wpt_uint16 usDataOffset = 0;
10797 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10800
10801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 -------------------------------------------------------------------------*/
10804 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10805 ( NULL == pEventData->pCBfnc ))
10806 {
10807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 }
10812
10813 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10814 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10815
10816 /*-------------------------------------------------------------------------
10817 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010818 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010819 -------------------------------------------------------------------------*/
10820 wpalMutexAcquire(&pWDICtx->wptMutex);
10821
10822 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010823 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010824 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10826 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10827 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010828
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10832 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10833 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10834
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010836 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010837 }
10838
10839 /*------------------------------------------------------------------------
10840 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 ------------------------------------------------------------------------*/
10843 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10844 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10846 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10847 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010848
Jeff Johnsone7245742012-09-05 17:12:55 -070010849 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010851 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010852 }
10853
10854
10855 wpalMutexRelease(&pWDICtx->wptMutex);
10856 /*-----------------------------------------------------------------------
10857 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010858 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010859 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10862 &pSendBuffer, &usDataOffset, &usSendSize))||
10863 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10864 {
10865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010866 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010867 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010870 }
10871
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 wpalMemoryCopy( pSendBuffer+usDataOffset,
10873 &pwdiDelTSParams->wdiDelTSInfo,
10874 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010875
10876 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010877 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010878
10879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010882 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10883 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010884}/*WDI_ProcessDelTSpecReq*/
10885
10886/**
10887 @brief Process Update EDCA Params Request function (called when
10888 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010889
10890 @param pWDICtx: pointer to the WLAN DAL context
10891 pEventData: pointer to the event information structure
10892
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 @see
10894 @return Result of the function call
10895*/
10896WDI_Status
10897WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010898(
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 WDI_ControlBlockType* pWDICtx,
10900 WDI_EventInfoType* pEventData
10901)
10902{
10903 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10904 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010905 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 wpt_uint16 usDataOffset = 0;
10909 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010910 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10912
10913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010915 -------------------------------------------------------------------------*/
10916 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10917 ( NULL == pEventData->pCBfnc ))
10918 {
10919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 }
10924
10925 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10926 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10927 /*-------------------------------------------------------------------------
10928 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010930 -------------------------------------------------------------------------*/
10931 wpalMutexAcquire(&pWDICtx->wptMutex);
10932
10933 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010934 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010935 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010936 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10937 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10938 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010939
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 {
10942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10944 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010945
10946 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010947 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010948 }
10949
10950 /*------------------------------------------------------------------------
10951 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010952 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010953 ------------------------------------------------------------------------*/
10954 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10955 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10957 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10958 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010959
Jeff Johnsone7245742012-09-05 17:12:55 -070010960 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010961 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 }
10964
10965
10966 wpalMutexRelease(&pWDICtx->wptMutex);
10967 /*-----------------------------------------------------------------------
10968 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010969 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010970 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10973 &pSendBuffer, &usDataOffset, &usSendSize))||
10974 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10975 {
10976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010977 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010978 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010981 }
10982
Jeff Johnsone7245742012-09-05 17:12:55 -070010983 wpalMemoryCopy( pSendBuffer+usDataOffset,
10984 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10985 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010986
10987 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010988 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010989
10990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010992 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10994 wdiUpdateEDCARspCb, pEventData->pUserData,
10995 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010996}/*WDI_ProcessUpdateEDCAParamsReq*/
10997
10998/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010999 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011000 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011001
11002 @param pWDICtx: pointer to the WLAN DAL context
11003 pEventData: pointer to the event information structure
11004
Jeff Johnson295189b2012-06-20 16:38:30 -070011005 @see
11006 @return Result of the function call
11007*/
11008WDI_Status
11009WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011010(
Jeff Johnson295189b2012-06-20 16:38:30 -070011011 WDI_ControlBlockType* pWDICtx,
11012 WDI_EventInfoType* pEventData
11013)
11014{
11015 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
11016 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011017 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011018 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011019 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011020 wpt_uint16 usDataOffset = 0;
11021 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011022 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011023 wpt_macAddr macBSSID;
11024
11025 tAddBASessionReqMsg halAddBASessionReq;
11026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11027
11028 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011029 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011030 -------------------------------------------------------------------------*/
11031 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11032 ( NULL == pEventData->pCBfnc ))
11033 {
11034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011038 }
11039
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011041 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011043 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
11044 /*-------------------------------------------------------------------------
11045 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011047 -------------------------------------------------------------------------*/
11048 wpalMutexAcquire(&pWDICtx->wptMutex);
11049
11050 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011052 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011053 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11054 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 &macBSSID))
11056 {
11057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011058 "This station does not exist in the WDI Station Table %d",
11059 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011060 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011062 }
11063
11064
Jeff Johnsone7245742012-09-05 17:12:55 -070011065 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011066
Jeff Johnsone7245742012-09-05 17:12:55 -070011067 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011068 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11070 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11071 __func__, MAC_ADDR_ARRAY(macBSSID));
11072
Jeff Johnson295189b2012-06-20 16:38:30 -070011073 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011075 }
11076
11077 /*------------------------------------------------------------------------
11078 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 ------------------------------------------------------------------------*/
11081 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11082 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11084 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11085 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011086
Jeff Johnsone7245742012-09-05 17:12:55 -070011087 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 }
11091
11092
11093 wpalMutexRelease(&pWDICtx->wptMutex);
11094 /*-----------------------------------------------------------------------
11095 Get message buffer
11096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11098 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011099 sizeof(halAddBASessionReq.addBASessionParams),
11100 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011101 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011102 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
11103 {
11104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011105 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011106 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
11107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011109 }
11110
11111 halAddBASessionReq.addBASessionParams.staIdx =
11112 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
11113 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
11114 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
11115 WDI_MAC_ADDR_LEN);
11116 halAddBASessionReq.addBASessionParams.baTID =
11117 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
11118 halAddBASessionReq.addBASessionParams.baPolicy =
11119 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
11120 halAddBASessionReq.addBASessionParams.baBufferSize =
11121 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
11122 halAddBASessionReq.addBASessionParams.baTimeout =
11123 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
11124 halAddBASessionReq.addBASessionParams.baSSN =
11125 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
11126 halAddBASessionReq.addBASessionParams.baDirection =
11127 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
11128
Jeff Johnsone7245742012-09-05 17:12:55 -070011129 wpalMemoryCopy( pSendBuffer+usDataOffset,
11130 &halAddBASessionReq.addBASessionParams,
11131 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011132
11133 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011134 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011135
11136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011137 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011138 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11140 wdiAddBASessionRspCb, pEventData->pUserData,
11141 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011142}/*WDI_ProcessAddBASessionReq*/
11143
11144/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011145 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011146 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011147
11148 @param pWDICtx: pointer to the WLAN DAL context
11149 pEventData: pointer to the event information structure
11150
Jeff Johnson295189b2012-06-20 16:38:30 -070011151 @see
11152 @return Result of the function call
11153*/
11154WDI_Status
11155WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011156(
Jeff Johnson295189b2012-06-20 16:38:30 -070011157 WDI_ControlBlockType* pWDICtx,
11158 WDI_EventInfoType* pEventData
11159)
11160{
11161 WDI_DelBAReqParamsType* pwdiDelBAParams;
11162 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011164 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011165 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011166 wpt_uint16 usDataOffset = 0;
11167 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 wpt_macAddr macBSSID;
11170 tDelBAParams halDelBAparam;
11171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11172
11173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011175 -------------------------------------------------------------------------*/
11176 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11177 ( NULL == pEventData->pCBfnc ))
11178 {
11179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011183 }
11184
11185 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
11186 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
11187 /*-------------------------------------------------------------------------
11188 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011189 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 -------------------------------------------------------------------------*/
11191 wpalMutexAcquire(&pWDICtx->wptMutex);
11192
11193 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011195 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11197 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 &macBSSID))
11199 {
11200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011201 "This station does not exist in the WDI Station Table %d",
11202 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011203 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011205 }
11206
Jeff Johnsone7245742012-09-05 17:12:55 -070011207 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011208
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11212 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11213 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011214
11215 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011217 }
11218
11219 /*------------------------------------------------------------------------
11220 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011221 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011222 ------------------------------------------------------------------------*/
11223 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11224 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11226 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11227 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011228
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011230 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011232 }
11233
11234 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 sizeof(halDelBAparam),
11237 &pSendBuffer, &usDataOffset, &usSendSize))||
11238 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
11239 {
11240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011241 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011242 pEventData, pwdiDelBAParams, wdiDelBARspCb);
11243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 }
11246
11247 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
11248 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
11249 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
11250
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 wpalMemoryCopy( pSendBuffer+usDataOffset,
11252 &halDelBAparam,
11253 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011254
11255 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011256 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011257
11258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11262 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011263}/*WDI_ProcessDelBAReq*/
11264
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011265#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070011266
11267WDI_Status
11268WDI_ProcessTSMStatsReq
11269(
11270 WDI_ControlBlockType* pWDICtx,
11271 WDI_EventInfoType* pEventData
11272)
11273{
11274 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11275 WDI_TsmRspCb wdiTSMRspCb;
11276 wpt_uint8 ucCurrentBSSSesIdx = 0;
11277 WDI_BSSSessionType* pBSSSes = NULL;
11278 wpt_uint8* pSendBuffer = NULL;
11279 wpt_uint16 usDataOffset = 0;
11280 wpt_uint16 usSendSize = 0;
11281 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11282 tTsmStatsParams halTsmStatsReqParams = {0};
11283
11284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11285
11286 /*-------------------------------------------------------------------------
11287 Sanity check
11288 -------------------------------------------------------------------------*/
11289 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11290 ( NULL == pEventData->pCBfnc ))
11291 {
11292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011293 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 WDI_ASSERT(0);
11295 return WDI_STATUS_E_FAILURE;
11296 }
11297
11298 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11299 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11300 /*-------------------------------------------------------------------------
11301 Check to see if we are in the middle of an association, if so queue, if
11302 not it means it is free to process request
11303 -------------------------------------------------------------------------*/
11304 wpalMutexAcquire(&pWDICtx->wptMutex);
11305
11306 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11307 if ( NULL == pBSSSes )
11308 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11310 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11311 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011312
11313 wpalMutexRelease(&pWDICtx->wptMutex);
11314 return WDI_STATUS_E_NOT_ALLOWED;
11315 }
11316
11317 /*------------------------------------------------------------------------
11318 Check if this BSS is being currently processed or queued,
11319 if queued - queue the new request as well
11320 ------------------------------------------------------------------------*/
11321 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11322 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011324 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011326
11327 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11328 wpalMutexRelease(&pWDICtx->wptMutex);
11329 return wdiStatus;
11330 }
11331
11332 wpalMutexRelease(&pWDICtx->wptMutex);
11333 /*-----------------------------------------------------------------------
11334 Get message buffer
11335 ! TO DO : proper conversion into the HAL Message Request Format
11336 -----------------------------------------------------------------------*/
11337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11338 sizeof(halTsmStatsReqParams),
11339 &pSendBuffer, &usDataOffset, &usSendSize))||
11340 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11341 {
11342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011343 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011344 pEventData, pwdiTSMParams, wdiTSMRspCb);
11345 WDI_ASSERT(0);
11346 return WDI_STATUS_E_FAILURE;
11347 }
11348
11349 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11350 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11351 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11352 WDI_MAC_ADDR_LEN);
11353 wpalMemoryCopy( pSendBuffer+usDataOffset,
11354 &halTsmStatsReqParams,
11355 sizeof(halTsmStatsReqParams));
11356
11357 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11358 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11359
11360 /*-------------------------------------------------------------------------
11361 Send TSM Stats Request to HAL
11362 -------------------------------------------------------------------------*/
11363 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11364 wdiTSMRspCb, pEventData->pUserData,
11365 WDI_TSM_STATS_RESP);
11366}/*WDI_ProcessTSMStatsReq*/
11367
11368#endif
11369
11370
11371/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011372 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011373 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011374
11375 @param pWDICtx: pointer to the WLAN DAL context
11376 pEventData: pointer to the event information structure
11377
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 @see
11379 @return Result of the function call
11380*/
11381WDI_Status
11382WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011383(
Jeff Johnson295189b2012-06-20 16:38:30 -070011384 WDI_ControlBlockType* pWDICtx,
11385 WDI_EventInfoType* pEventData
11386)
11387{
11388 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11389 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011390 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011391 wpt_uint16 usDataOffset = 0;
11392 wpt_uint16 usSendSize = 0;
11393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11394
11395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011397 -------------------------------------------------------------------------*/
11398 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11399 ( NULL == pEventData->pCBfnc ))
11400 {
11401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 }
11406
11407 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11408 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11409 /*-----------------------------------------------------------------------
11410 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011411 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011412 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011413 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11415 &pSendBuffer, &usDataOffset, &usSendSize))||
11416 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11417 {
11418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011419 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11421 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011423 }
11424
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 wpalMemoryCopy( pSendBuffer+usDataOffset,
11426 &pwdiFlushAcParams->wdiFlushAcInfo,
11427 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011428
11429 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011431
11432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011434 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011435 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11436 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011437}/*WDI_ProcessFlushAcReq*/
11438
11439/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011440 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011441 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011442
11443 @param pWDICtx: pointer to the WLAN DAL context
11444 pEventData: pointer to the event information structure
11445
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 @see
11447 @return Result of the function call
11448*/
11449WDI_Status
11450WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011451(
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 WDI_ControlBlockType* pWDICtx,
11453 WDI_EventInfoType* pEventData
11454)
11455{
11456 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11457 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011458 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011459 wpt_uint16 usDataOffset = 0;
11460 wpt_uint16 usSendSize = 0;
11461
11462 tBtAmpEventMsg haltBtAmpEventMsg;
11463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11464
11465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 -------------------------------------------------------------------------*/
11468 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11469 ( NULL == pEventData->pCBfnc ))
11470 {
11471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 }
11476
11477 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11478 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11479 /*-----------------------------------------------------------------------
11480 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011484 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11485 &pSendBuffer, &usDataOffset, &usSendSize))||
11486 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11487 {
11488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011489 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011490 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 }
11494
Jeff Johnsone7245742012-09-05 17:12:55 -070011495 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011496 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011497 wpalMemoryCopy( pSendBuffer+usDataOffset,
11498 &haltBtAmpEventMsg.btAmpEventParams,
11499 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011500
11501 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011502 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011503
11504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11508 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011509}/*WDI_ProcessBtAmpEventReq*/
11510
11511/**
11512 @brief Process Add STA self Request function (called when Main FSM
11513 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011514
11515 @param pWDICtx: pointer to the WLAN DAL context
11516 pEventData: pointer to the event information structure
11517
Jeff Johnson295189b2012-06-20 16:38:30 -070011518 @see
11519 @return Result of the function call
11520*/
11521WDI_Status
11522WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011523(
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 WDI_ControlBlockType* pWDICtx,
11525 WDI_EventInfoType* pEventData
11526)
11527{
11528 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11529 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 wpt_uint16 usDataOffset = 0;
11532 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011533 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11535
11536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 -------------------------------------------------------------------------*/
11539 if (( NULL == pEventData ) ||
11540 ( NULL == pEventData->pEventData) ||
11541 ( NULL == pEventData->pCBfnc))
11542 {
11543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 }
11548
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11553 /*-----------------------------------------------------------------------
11554 Get message buffer
11555 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11557 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011558 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011559 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011560 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011561 {
11562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011563 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 }
11568
11569 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11572
Jeff Johnsone7245742012-09-05 17:12:55 -070011573 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011574 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11575 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11576 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11577 {
11578 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11579 }
11580 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11581 VOS_P2P_CLIENT_MODE) ||
11582 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11583 VOS_P2P_DEVICE))
11584 {
11585 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11586 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011588 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011589
11590 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011591 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011592
11593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11597 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11598 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011599}/*WDI_ProcessAddSTASelfReq*/
11600
11601
11602
11603/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011606
11607 @param pWDICtx: pointer to the WLAN DAL context
11608 pEventData: pointer to the event information structure
11609
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 @see
11611 @return Result of the function call
11612*/
11613WDI_Status
11614WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011615(
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 WDI_ControlBlockType* pWDICtx,
11617 WDI_EventInfoType* pEventData
11618)
11619{
11620 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11621 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011622 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011623 wpt_uint16 usDataOffset = 0;
11624 wpt_uint16 usSendSize = 0;
11625 tDelStaSelfParams halSetDelSelfSTAParams;
11626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11627
11628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 -------------------------------------------------------------------------*/
11631 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11632 ( NULL == pEventData->pCBfnc ))
11633 {
11634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011635 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011638 }
11639
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011641 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11642 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11643
11644 /*-----------------------------------------------------------------------
11645 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011647 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011649 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11650 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11653 {
11654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011655 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011659 }
11660
Jeff Johnsone7245742012-09-05 17:12:55 -070011661 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011662 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11663
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11665 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011666
11667 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011669
11670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011673 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11674 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 WDI_DEL_STA_SELF_RESP);
11676
11677}
11678
Jeff Johnsone7245742012-09-05 17:12:55 -070011679#ifdef FEATURE_OEM_DATA_SUPPORT
11680/**
11681 @brief Process Start Oem Data Request function (called when Main
11682 FSM allows it)
11683
11684 @param pWDICtx: pointer to the WLAN DAL context
11685 pEventData: pointer to the event information structure
11686
11687 @see
11688 @return Result of the function call
11689*/
11690WDI_Status
11691WDI_ProcessStartOemDataReq
11692(
11693 WDI_ControlBlockType* pWDICtx,
11694 WDI_EventInfoType* pEventData
11695)
11696{
11697 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11698 WDI_oemDataRspCb wdiOemDataRspCb;
11699 wpt_uint8* pSendBuffer = NULL;
11700 wpt_uint16 usDataOffset = 0;
11701 wpt_uint16 usSendSize = 0;
11702 wpt_uint16 reqLen;
11703 tStartOemDataReqParams* halStartOemDataReqParams;
11704
11705 /*-------------------------------------------------------------------------
11706 Sanity check
11707 -------------------------------------------------------------------------*/
11708 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11709 ( NULL == pEventData->pCBfnc ))
11710 {
11711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011712 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011713 WDI_ASSERT(0);
11714 return WDI_STATUS_E_FAILURE;
11715 }
11716
11717 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11718 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11719
11720 /*-----------------------------------------------------------------------
11721 Get message buffer
11722 -----------------------------------------------------------------------*/
11723
11724 reqLen = sizeof(tStartOemDataReqParams);
11725
11726 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11727 WDI_START_OEM_DATA_REQ, reqLen,
11728 &pSendBuffer, &usDataOffset, &usSendSize))||
11729 (usSendSize < (usDataOffset + reqLen)))
11730 {
11731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011732 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011733 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11734 WDI_ASSERT(0);
11735 return WDI_STATUS_E_FAILURE;
11736 }
11737
11738 //copying WDI OEM DATA REQ PARAMS to shared memory
11739 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11740
11741 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11742 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11743
11744 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11745 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11746
11747 /*-------------------------------------------------------------------------
11748 Send Start Request to HAL
11749 -------------------------------------------------------------------------*/
11750 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11751 wdiOemDataRspCb, pEventData->pUserData,
11752 WDI_START_OEM_DATA_RESP);
11753}/*WDI_ProcessStartOemDataReq*/
11754#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011755
11756/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011757 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011759
11760 @param pWDICtx: pointer to the WLAN DAL context
11761 pEventData: pointer to the event information structure
11762
Jeff Johnson295189b2012-06-20 16:38:30 -070011763 @see
11764 @return Result of the function call
11765*/
11766WDI_Status
11767WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011768(
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 WDI_ControlBlockType* pWDICtx,
11770 WDI_EventInfoType* pEventData
11771)
11772{
11773 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11774 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011775 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011776 wpt_uint16 usDataOffset = 0;
11777 wpt_uint16 usSendSize = 0;
11778 tHalWlanHostResumeReqParam halResumeReqParams;
11779
11780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11781
11782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011784 -------------------------------------------------------------------------*/
11785 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11786 ( NULL == pEventData->pCBfnc ))
11787 {
11788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011789 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 }
11793
11794 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11795 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11796
11797 /*-----------------------------------------------------------------------
11798 Get message buffer
11799 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011800 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11802 &pSendBuffer, &usDataOffset, &usSendSize))||
11803 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11804 {
11805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011806 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011810 }
11811
Jeff Johnsone7245742012-09-05 17:12:55 -070011812 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011813 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011814
11815 wpalMemoryCopy( pSendBuffer+usDataOffset,
11816 &halResumeReqParams,
11817 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011818
11819 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011821
11822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011825 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11826 wdiHostResumeRspCb, pEventData->pUserData,
11827 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011828}/*WDI_ProcessHostResumeReq*/
11829
11830/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011831 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011832 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011833
11834 @param pWDICtx: pointer to the WLAN DAL context
11835 pEventData: pointer to the event information structure
11836
Jeff Johnson295189b2012-06-20 16:38:30 -070011837 @see
11838 @return Result of the function call
11839*/
11840WDI_Status
11841WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011842(
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 WDI_ControlBlockType* pWDICtx,
11844 WDI_EventInfoType* pEventData
11845)
11846{
11847 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11848 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011849 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 wpt_uint16 usDataOffset = 0;
11851 wpt_uint16 usSendSize = 0;
11852 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11854
11855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011856 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011857 -------------------------------------------------------------------------*/
11858 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11859 ( NULL == pEventData->pCBfnc ))
11860 {
11861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011862 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011865 }
11866
11867 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11868 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011869
Jeff Johnson295189b2012-06-20 16:38:30 -070011870 /*-----------------------------------------------------------------------
11871 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011872 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011873 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011874 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011875 sizeof(halTxPerTrackingReqParam),
11876 &pSendBuffer, &usDataOffset, &usSendSize))||
11877 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11878 {
11879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011880 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011885
Jeff Johnson295189b2012-06-20 16:38:30 -070011886 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11887 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11888 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11889 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011890
11891 wpalMemoryCopy( pSendBuffer+usDataOffset,
11892 &halTxPerTrackingReqParam,
11893 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011894
11895 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011896 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011897
11898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11902 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011903}/*WDI_ProcessSetTxPerTrackingReq*/
11904
11905/*=========================================================================
11906 Indications
11907=========================================================================*/
11908
11909/**
11910 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011911
11912 @param pWDICtx: pointer to the WLAN DAL context
11913 pEventData: pointer to the event information structure
11914
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 @see
11916 @return Result of the function call
11917*/
11918WDI_Status
11919WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011920(
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 WDI_ControlBlockType* pWDICtx,
11922 WDI_EventInfoType* pEventData
11923)
11924{
11925 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011926 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011927 wpt_uint16 usDataOffset = 0;
11928 wpt_uint16 usSendSize = 0;
11929 WDI_Status wdiStatus;
11930 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11932
11933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 -------------------------------------------------------------------------*/
11936 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11937 {
11938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011939 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 }
11943
11944 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11945
11946 /*-----------------------------------------------------------------------
11947 Get message buffer
11948 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011949 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11950 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011951 sizeof(halWlanSuspendIndparams),
11952 &pSendBuffer, &usDataOffset, &usSendSize))||
11953 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11954 {
11955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11956 "Unable to get send buffer in Suspend Ind ");
11957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011959 }
11960
11961 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11962 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11963
Jeff Johnsone7245742012-09-05 17:12:55 -070011964 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011965 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011966
Jeff Johnsone7245742012-09-05 17:12:55 -070011967 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11968 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011969
11970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011971 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011972 -------------------------------------------------------------------------*/
11973 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011974 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011975
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11978}/*WDI_ProcessHostSuspendInd*/
11979
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011980
11981
11982/**
11983 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11984
11985 @param pWDICtx: pointer to the WLAN DAL context
11986 pEventData: pointer to the event information structure
11987
11988 @see
11989 @return Result of the function call
11990*/
11991WDI_Status
11992WDI_ProcessTrafficStatsInd
11993(
11994 WDI_ControlBlockType* pWDICtx,
11995 WDI_EventInfoType* pEventData
11996)
11997{
11998 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11999 wpt_uint8* pSendBuffer = NULL;
12000 wpt_uint16 usDataOffset = 0;
12001 wpt_uint16 usSendSize = 0;
12002 WDI_Status wdiStatus;
12003 tStatsClassBIndParams* pStatsClassBIndParams;
12004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12005
12006 /*-------------------------------------------------------------------------
12007 Sanity check
12008 -------------------------------------------------------------------------*/
12009 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12010 {
12011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12012 "%s: Invalid parameters in Traffic Stats ind",__func__);
12013 WDI_ASSERT(0);
12014 return WDI_STATUS_E_FAILURE;
12015 }
12016
12017 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
12018
12019 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
12020 {
12021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12022 "%s: Invalid parameters in Traffic Stats ind",__func__);
12023 WDI_ASSERT(0);
12024 return WDI_STATUS_E_FAILURE;
12025 }
12026
12027 /*-----------------------------------------------------------------------
12028 Get message buffer
12029 -----------------------------------------------------------------------*/
12030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12031 WDI_TRAFFIC_STATS_IND,
12032 sizeof(tStatsClassBIndParams),
12033 &pSendBuffer, &usDataOffset, &usSendSize))||
12034 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
12035 {
12036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12037 "Unable to get send buffer in Traffic Stats Ind ");
12038 WDI_ASSERT(0);
12039 return WDI_STATUS_E_FAILURE;
12040 }
12041
12042 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
12043
12044 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
12045
12046 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
12047 pTrafficStatsIndParams->pTrafficStats,
12048 pTrafficStatsIndParams->length);
12049
12050 /*-------------------------------------------------------------------------
12051 Send Suspend Request to HAL
12052 -------------------------------------------------------------------------*/
12053 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
12054 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
12055
12056 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12057 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12058}/*WDI_ProcessTrafficStatsInd*/
12059
Chet Lanctot186b5732013-03-18 10:26:30 -070012060#ifdef WLAN_FEATURE_11W
12061/**
12062 @brief Process Exclude Unencrypted Indications function (called
12063 when Main FSM allows it)
12064
12065 @param pWDICtx: pointer to the WLAN DAL context
12066 pEventData: pointer to the event information structure
12067
12068 @see
12069 @return Result of the function call
12070*/
12071WDI_Status
12072WDI_ProcessExcludeUnencryptInd
12073(
12074 WDI_ControlBlockType* pWDICtx,
12075 WDI_EventInfoType* pEventData
12076)
12077{
12078 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
12079 wpt_uint8* pSendBuffer = NULL;
12080 wpt_uint16 usDataOffset = 0;
12081 wpt_uint16 usSendSize = 0;
12082 WDI_Status wdiStatus;
12083 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
12084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12085
12086 /*-------------------------------------------------------------------------
12087 Sanity check
12088 -------------------------------------------------------------------------*/
12089 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12090 {
12091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12092 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
12093 WDI_ASSERT(0);
12094 return WDI_STATUS_E_FAILURE;
12095 }
12096
12097 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
12098
12099 /*-----------------------------------------------------------------------
12100 Get message buffer
12101 -----------------------------------------------------------------------*/
12102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12103 WDI_EXCLUDE_UNENCRYPTED_IND,
12104 sizeof(tHalWlanExcludeUnEncryptedIndParam),
12105 &pSendBuffer, &usDataOffset, &usSendSize))||
12106 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
12107 {
12108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12109 "Unable to get send buffer in Exclude Unencrypted Ind ");
12110 WDI_ASSERT(0);
12111 return WDI_STATUS_E_FAILURE;
12112 }
12113
12114 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
12115
12116 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
12117
12118 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
12119 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
12120
12121 /*-------------------------------------------------------------------------
12122 Send Suspend Request to HAL
12123 -------------------------------------------------------------------------*/
12124 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
12125 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
12126
12127 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12128 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12129}/*WDI_ProcessExcludeUnencryptInd*/
12130#endif
12131
Yue Mab9c86f42013-08-14 15:59:08 -070012132/**
12133 @brief Process Add Periodic Tx Pattern Indication function (called when
12134 Main FSM allows it)
12135
12136 @param pWDICtx: pointer to the WLAN DAL context
12137 pEventData: pointer to the event information structure
12138
12139 @see
12140 @return Result of the function call
12141*/
12142WDI_Status
12143WDI_ProcessAddPeriodicTxPtrnInd
12144(
12145 WDI_ControlBlockType* pWDICtx,
12146 WDI_EventInfoType* pEventData
12147)
12148{
12149 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
12150 wpt_uint8* pSendBuffer = NULL;
12151 wpt_uint16 usDataOffset = 0;
12152 wpt_uint16 usSendSize = 0;
12153 WDI_Status wdiStatus;
12154 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
12155 wpt_uint8 selfStaIdx = 0;
12156
12157 /*-------------------------------------------------------------------------
12158 Sanity check
12159 -------------------------------------------------------------------------*/
12160 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12161 {
12162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12163 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12164 WDI_ASSERT(0);
12165 return WDI_STATUS_E_FAILURE;
12166 }
12167
12168 pAddPeriodicTxPtrnParams =
12169 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12170
12171 /*------------------------------------------------------------------------
12172 Get message buffer
12173 ------------------------------------------------------------------------*/
12174 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12175 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12176 &pSendBuffer, &usDataOffset, &usSendSize))||
12177 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12178 {
12179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12180 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12181 __func__);
12182 WDI_ASSERT(0);
12183 return WDI_STATUS_E_FAILURE;
12184 }
12185
12186 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12187
12188 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12189 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12190 &selfStaIdx))
12191 {
12192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12193 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012194 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012195
12196 return WDI_STATUS_E_FAILURE;
12197 }
12198
12199 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12200 halAddPeriodicTxPtrn->ucPtrnId =
12201 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12202 halAddPeriodicTxPtrn->usPtrnSize =
12203 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12204 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12205 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12206
12207 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12208 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12209 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12210
12211 /*-------------------------------------------------------------------------
12212 Send Indication to HAL
12213 -------------------------------------------------------------------------*/
12214 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12215 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12216
12217 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12218
12219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12220 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12221
12222 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12223} /* WDI_ProcessAddPeriodicTxPtrnInd */
12224
12225/**
12226 @brief Process Delete Periodic Tx Pattern Indication function (called when
12227 Main FSM allows it)
12228
12229 @param pWDICtx: pointer to the WLAN DAL context
12230 pEventData: pointer to the event information structure
12231
12232 @see
12233 @return Result of the function call
12234*/
12235WDI_Status
12236WDI_ProcessDelPeriodicTxPtrnInd
12237(
12238 WDI_ControlBlockType* pWDICtx,
12239 WDI_EventInfoType* pEventData
12240)
12241{
12242 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12243 wpt_uint8* pSendBuffer = NULL;
12244 wpt_uint16 usDataOffset = 0;
12245 wpt_uint16 usSendSize = 0;
12246 WDI_Status wdiStatus;
12247 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12248 wpt_uint8 selfStaIdx = 0;
12249
12250 /*-------------------------------------------------------------------------
12251 Sanity check
12252 -------------------------------------------------------------------------*/
12253 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12254 {
12255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12256 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12257 WDI_ASSERT(0);
12258 return WDI_STATUS_E_FAILURE;
12259 }
12260
12261 pDelPeriodicTxPtrnParams =
12262 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12263
12264 /*------------------------------------------------------------------------
12265 Get message buffer
12266 ------------------------------------------------------------------------*/
12267 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12268 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12269 &pSendBuffer, &usDataOffset, &usSendSize))||
12270 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12271 {
12272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12273 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12274 __func__);
12275 WDI_ASSERT(0);
12276 return WDI_STATUS_E_FAILURE;
12277 }
12278
12279 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12280
12281 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12282 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12283 &selfStaIdx))
12284 {
12285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12286 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012287 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012288
12289 return WDI_STATUS_E_FAILURE;
12290 }
12291
12292 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12293 halDelPeriodicTxPtrn->uPatternIdBitmap =
12294 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12295
12296 /*-------------------------------------------------------------------------
12297 Send Indication to HAL
12298 -------------------------------------------------------------------------*/
12299 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12300 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12301
12302 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12303
12304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12305 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12306
12307 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12308} /* WDI_ProcessDelPeriodicTxPtrnInd */
12309
Jeff Johnson295189b2012-06-20 16:38:30 -070012310/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012312==========================================================================*/
12313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012316
12317 @param pWDICtx: pointer to the WLAN DAL context
12318 pEventData: pointer to the event information structure
12319
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 @see
12321 @return Result of the function call
12322*/
12323WDI_Status
12324WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012325(
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 WDI_ControlBlockType* pWDICtx,
12327 WDI_EventInfoType* pEventData
12328)
12329{
12330 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12331 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 wpt_uint16 usDataOffset = 0;
12334 wpt_uint16 usSendSize = 0;
12335 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12337
12338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 -------------------------------------------------------------------------*/
12341 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12342 ( NULL == pEventData->pCBfnc ))
12343 {
12344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 }
12349
12350 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12351 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12352 /*-----------------------------------------------------------------------
12353 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012355 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012356 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012357 sizeof(halSwitchChannelReq.switchChannelParams),
12358 &pSendBuffer, &usDataOffset, &usSendSize))||
12359 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12360 {
12361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012362 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012366 }
12367
Jeff Johnsone7245742012-09-05 17:12:55 -070012368 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012369 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012370#ifndef WLAN_FEATURE_VOWIFI
12371 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12373#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012374 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12376
12377#ifdef WLAN_FEATURE_VOWIFI
12378 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012379 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12381 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12382 WDI_MAC_ADDR_LEN);
12383 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12384 pwdiSwitchChParams->wdiChInfo.macBSSId,
12385 WDI_MAC_ADDR_LEN);
12386#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 wpalMemoryCopy( pSendBuffer+usDataOffset,
12388 &halSwitchChannelReq.switchChannelParams,
12389 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012390
12391 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012392 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012393
12394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012395 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012396 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012397 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12398 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012399}/*WDI_ProcessChannelSwitchReq*/
12400
12401/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012402 @brief Process Channel Switch Request function (called when
12403 Main FSM allows it)
12404
12405 @param pWDICtx: pointer to the WLAN DAL context
12406 pEventData: pointer to the event information structure
12407
12408 @see
12409 @return Result of the function call
12410*/
12411WDI_Status WDI_ProcessChannelSwitchReq_V1
12412(
12413 WDI_ControlBlockType* pWDICtx,
12414 WDI_EventInfoType* pEventData
12415)
12416{
12417 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12418 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12419 wpt_uint8* pSendBuffer = NULL;
12420 wpt_uint16 usDataOffset = 0;
12421 wpt_uint16 usSendSize = 0;
12422 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12424
12425 /*-------------------------------------------------------------------------
12426 Sanity check
12427 -------------------------------------------------------------------------*/
12428 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12429 ( NULL == pEventData->pCBfnc ))
12430 {
12431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12432 "%s: Invalid parameters", __func__);
12433 WDI_ASSERT(0);
12434 return WDI_STATUS_E_FAILURE;
12435 }
12436
12437 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12438 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12439 /*-----------------------------------------------------------------------
12440 Get message buffer
12441 ! TO DO : proper conversion into the HAL Message Request Format
12442 -----------------------------------------------------------------------*/
12443 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12444 WDI_CH_SWITCH_REQ_V1,
12445 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12446 &pSendBuffer, &usDataOffset, &usSendSize))||
12447 ( usSendSize < (usDataOffset +
12448 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12449 {
12450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12451 "Unable to get send buffer in channel switch req %p %p %p",
12452 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12453 WDI_ASSERT(0);
12454 return WDI_STATUS_E_FAILURE;
12455 }
12456
12457 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12458 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12459
12460 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12461 pwdiSwitchChParams->wdiChInfo.ucChannel;
12462#ifndef WLAN_FEATURE_VOWIFI
12463 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12464 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12465#endif
12466 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12467 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12468
12469#ifdef WLAN_FEATURE_VOWIFI
12470 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12471 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12472 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12473 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12474 WDI_MAC_ADDR_LEN);
12475 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12476 pwdiSwitchChParams->wdiChInfo.macBSSId,
12477 WDI_MAC_ADDR_LEN);
12478#endif
12479 wpalMemoryCopy( pSendBuffer+usDataOffset,
12480 &halSwitchChannelReq.switchChannelParams_V1,
12481 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12482
12483 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12484 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12485
12486 /*-------------------------------------------------------------------------
12487 Send Switch Channel Request to HAL
12488 -------------------------------------------------------------------------*/
12489 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12490 wdiSwitchChRspCb, pEventData->pUserData,
12491 WDI_CH_SWITCH_RESP_V1);
12492}/*WDI_ProcessChannelSwitchReq_V1*/
12493
12494/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012497
12498 @param pWDICtx: pointer to the WLAN DAL context
12499 pEventData: pointer to the event information structure
12500
Jeff Johnson295189b2012-06-20 16:38:30 -070012501 @see
12502 @return Result of the function call
12503*/
12504WDI_Status
12505WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012506(
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 WDI_ControlBlockType* pWDICtx,
12508 WDI_EventInfoType* pEventData
12509)
12510{
12511 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12512 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 wpt_uint16 usDataOffset = 0;
12517 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012519
Jeff Johnsone7245742012-09-05 17:12:55 -070012520 tConfigStaReqMsg halConfigStaReqMsg;
12521 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12523
12524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012526 -------------------------------------------------------------------------*/
12527 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12528 ( NULL == pEventData->pCBfnc ))
12529 {
12530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 }
12535
Abhishek Singh6927fa02014-06-27 17:19:55 +053012536 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012537 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12538 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12539 /*-------------------------------------------------------------------------
12540 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012542 -------------------------------------------------------------------------*/
12543 wpalMutexAcquire(&pWDICtx->wptMutex);
12544
12545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012546 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12549 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12550 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012551
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12555 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12556 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012557
12558 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 }
12561
12562 /*------------------------------------------------------------------------
12563 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 ------------------------------------------------------------------------*/
12566 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12567 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12569 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12570 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012571
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 }
12576
12577 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012578
12579 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12580#ifdef WLAN_FEATURE_11AC
12581 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012582 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012583 else
12584#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012585 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012586
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 /*-----------------------------------------------------------------------
12588 Get message buffer
12589 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012590 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12591 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012592 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 {
12595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012596 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 }
12601
12602 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012603 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012604 &pwdiConfigSTAParams->wdiReqInfo);
12605
12606 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12607 {
12608 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 WDI_STATableFindStaidByAddr(pWDICtx,
12611 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 {
12614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012615 MAC_ADDRESS_STR
12616 ": This station does not exist in the WDI Station Table",
12617 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012619 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012621 }
12622 }
12623 else
12624 {
12625 /* Need to fill in the STA Index to invalid, since at this point we have not
12626 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012627 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012628 }
12629
12630 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012632
Jeff Johnsone7245742012-09-05 17:12:55 -070012633 wpalMemoryCopy( pSendBuffer+usDataOffset,
12634 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012635 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012636
12637 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012639
Jeff Johnsone7245742012-09-05 17:12:55 -070012640 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12641 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012642 sizeof(pWDICtx->wdiCachedConfigStaReq));
12643
12644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012645 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012646 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012647 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12648 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012649}/*WDI_ProcessConfigStaReq*/
12650
12651
12652/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012655
12656 @param pWDICtx: pointer to the WLAN DAL context
12657 pEventData: pointer to the event information structure
12658
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 @see
12660 @return Result of the function call
12661*/
12662WDI_Status
12663WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012664(
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 WDI_ControlBlockType* pWDICtx,
12666 WDI_EventInfoType* pEventData
12667)
12668{
12669 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12670 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012673 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012674 wpt_uint16 usDataOffset = 0;
12675 wpt_uint16 usSendSize = 0;
12676 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012677 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12679
12680 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012681 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012682 -------------------------------------------------------------------------*/
12683 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12684 ( NULL == pEventData->pCBfnc ))
12685 {
12686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012690 }
12691
12692 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12693 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12694 /*-------------------------------------------------------------------------
12695 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012696 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 -------------------------------------------------------------------------*/
12698 wpalMutexAcquire(&pWDICtx->wptMutex);
12699
12700 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012701 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12704 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12705 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012706
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012710 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12711 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 }
12713 else
12714 {
12715 /*------------------------------------------------------------------------
12716 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012717 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 ------------------------------------------------------------------------*/
12719 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12720 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12722 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12723 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12724
12725 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012726 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 }
12729 }
12730 /* If the link is set to enter IDLE - the Session allocated for this BSS
12731 will be deleted on the Set Link State response coming from HAL
12732 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12735
12736 wpalMutexRelease(&pWDICtx->wptMutex);
12737 /*-----------------------------------------------------------------------
12738 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012741
12742 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012743 sizeof(halLinkStateReqMsg),
12744 &pSendBuffer, &usDataOffset, &usSendSize))||
12745 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12746 {
12747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012748 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012749 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 }
12753
12754 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12755 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12756
12757 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12758 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12759
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12762
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 wpalMemoryCopy( pSendBuffer+usDataOffset,
12764 &halLinkStateReqMsg,
12765 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012766
12767 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012768 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012769
12770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012771 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012773 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12774 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012775}/*WDI_ProcessSetLinkStateReq*/
12776
12777
12778/**
12779 @brief Process Get Stats Request function (called when Main FSM
12780 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012781
12782 @param pWDICtx: pointer to the WLAN DAL context
12783 pEventData: pointer to the event information structure
12784
Jeff Johnson295189b2012-06-20 16:38:30 -070012785 @see
12786 @return Result of the function call
12787*/
12788WDI_Status
12789WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012790(
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 WDI_ControlBlockType* pWDICtx,
12792 WDI_EventInfoType* pEventData
12793)
12794{
12795 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12796 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012797 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012798 wpt_uint16 usDataOffset = 0;
12799 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012800 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 WDI_BSSSessionType* pBSSSes = NULL;
12802 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 tHalStatsReqMsg halStatsReqMsg;
12805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12806
12807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012809 -------------------------------------------------------------------------*/
12810 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12811 ( NULL == pEventData->pCBfnc ) )
12812 {
12813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012817 }
12818
12819 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12820 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12821
12822 /*-------------------------------------------------------------------------
12823 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 -------------------------------------------------------------------------*/
12826 wpalMutexAcquire(&pWDICtx->wptMutex);
12827
12828 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012830 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12832 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 &macBSSID))
12834 {
12835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012836 "This station does not exist in the WDI Station Table %d",
12837 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012840 }
12841
Jeff Johnsone7245742012-09-05 17:12:55 -070012842 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12843 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012844 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12846 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12847 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012848
12849 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 }
12852
12853 /*------------------------------------------------------------------------
12854 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012855 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 ------------------------------------------------------------------------*/
12857 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12858 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12860 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12861 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012862
Jeff Johnsone7245742012-09-05 17:12:55 -070012863 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012865 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012866 }
12867
12868
12869 wpalMutexRelease(&pWDICtx->wptMutex);
12870
12871 /*-----------------------------------------------------------------------
12872 Get message buffer
12873 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 sizeof(halStatsReqMsg.statsReqParams),
12876 &pSendBuffer, &usDataOffset, &usSendSize))||
12877 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12878 {
12879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012880 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 }
12885
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 wpalMemoryCopy( pSendBuffer+usDataOffset,
12891 &halStatsReqMsg.statsReqParams,
12892 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012893
12894 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012895 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012896
12897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12901 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012902}/*WDI_ProcessGetStatsReq*/
12903
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012904#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012905/**
12906 @brief Process Get Roam Rssi Request function (called when Main FSM
12907 allows it)
12908
12909 @param pWDICtx: pointer to the WLAN DAL context
12910 pEventData: pointer to the event information structure
12911
12912 @see
12913 @return Result of the function call
12914*/
12915WDI_Status
12916WDI_ProcessGetRoamRssiReq
12917(
12918 WDI_ControlBlockType* pWDICtx,
12919 WDI_EventInfoType* pEventData
12920)
12921{
12922 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12923 WDI_GetStatsRspCb wdiGetStatsRspCb;
12924 wpt_uint8* pSendBuffer = NULL;
12925 wpt_uint16 usDataOffset = 0;
12926 wpt_uint16 usSendSize = 0;
12927 wpt_uint8 ucCurrentBSSSesIdx = 0;
12928 WDI_BSSSessionType* pBSSSes = NULL;
12929 wpt_macAddr macBSSID;
12930 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12931 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12933 /*-------------------------------------------------------------------------
12934 Sanity check
12935 -------------------------------------------------------------------------*/
12936 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12937 ( NULL == pEventData->pCBfnc ) )
12938 {
12939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12940 "%s: Invalid parameters", __func__);
12941 WDI_ASSERT(0);
12942 return WDI_STATUS_E_FAILURE;
12943 }
12944
12945 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12946 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12947
12948 /*-------------------------------------------------------------------------
12949 Check to see if we are in the middle of an association, if so queue, if
12950 not it means it is free to process request
12951 -------------------------------------------------------------------------*/
12952 wpalMutexAcquire(&pWDICtx->wptMutex);
12953
12954 /*------------------------------------------------------------------------
12955 Find the BSS for which the request is made
12956 ------------------------------------------------------------------------*/
12957 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12958 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12959 &macBSSID))
12960 {
12961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012962 "This station does not exist in the WDI Station Table %d",
12963 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012964 wpalMutexRelease(&pWDICtx->wptMutex);
12965 return WDI_STATUS_E_FAILURE;
12966 }
12967
12968 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12969 if ( NULL == pBSSSes )
12970 {
12971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12972 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12973 __func__, MAC_ADDR_ARRAY(macBSSID));
12974
12975 wpalMutexRelease(&pWDICtx->wptMutex);
12976 return WDI_STATUS_E_NOT_ALLOWED;
12977 }
12978
12979 /*------------------------------------------------------------------------
12980 Check if this BSS is being currently processed or queued,
12981 if queued - queue the new request as well
12982 ------------------------------------------------------------------------*/
12983 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12984 {
12985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12986 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12987 __func__, MAC_ADDR_ARRAY(macBSSID));
12988
12989 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12990 wpalMutexRelease(&pWDICtx->wptMutex);
12991 return wdiStatus;
12992 }
12993
12994 wpalMutexRelease(&pWDICtx->wptMutex);
12995
12996 /*-----------------------------------------------------------------------
12997 Get message buffer
12998 -----------------------------------------------------------------------*/
12999 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
13000 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
13001 &pSendBuffer, &usDataOffset, &usSendSize))||
13002 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
13003 {
13004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013005 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013006 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
13007 WDI_ASSERT(0);
13008 return WDI_STATUS_E_FAILURE;
13009 }
13010
13011 halRssiRoamReqMsg.roamRssiReqParams.staId =
13012 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
13013 wpalMemoryCopy( pSendBuffer+usDataOffset,
13014 &halRssiRoamReqMsg.roamRssiReqParams,
13015 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
13016
13017 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
13018 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
13019
13020 /*-------------------------------------------------------------------------
13021 Send Get STA Request to HAL
13022 -------------------------------------------------------------------------*/
13023 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13024 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
13025}/*WDI_ProcessGetRoamRssiReq*/
13026#endif
13027
Jeff Johnson295189b2012-06-20 16:38:30 -070013028/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013029 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013030 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013031
13032 @param pWDICtx: pointer to the WLAN DAL context
13033 pEventData: pointer to the event information structure
13034
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 @see
13036 @return Result of the function call
13037*/
13038WDI_Status
13039WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013040(
Jeff Johnson295189b2012-06-20 16:38:30 -070013041 WDI_ControlBlockType* pWDICtx,
13042 WDI_EventInfoType* pEventData
13043)
13044{
13045 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13046 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13047
Jeff Johnsone7245742012-09-05 17:12:55 -070013048 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013049 wpt_uint16 usDataOffset = 0;
13050 wpt_uint16 usSendSize = 0;
13051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13052
13053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013055 -------------------------------------------------------------------------*/
13056 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13057 ( NULL == pEventData->pCBfnc))
13058 {
13059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 }
13064
13065 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13066 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13067
13068 /*-----------------------------------------------------------------------
13069 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 -----------------------------------------------------------------------*/
13072
Jeff Johnsone7245742012-09-05 17:12:55 -070013073 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13075 &pSendBuffer, &usDataOffset, &usSendSize))||
13076 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13077 {
13078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013079 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013080 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013083 }
13084
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 wpalMemoryCopy( pSendBuffer+usDataOffset,
13086 &pwdiUpdateCfgParams->uConfigBufferLen,
13087 sizeof(wpt_uint32));
13088 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13089 pwdiUpdateCfgParams->pConfigBuffer,
13090 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013091
13092 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013094
13095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 -------------------------------------------------------------------------*/
13098
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13100 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013101
13102}/*WDI_ProcessUpdateCfgReq*/
13103
13104
13105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013108
13109 @param pWDICtx: pointer to the WLAN DAL context
13110 pEventData: pointer to the event information structure
13111
Jeff Johnson295189b2012-06-20 16:38:30 -070013112 @see
13113 @return Result of the function call
13114*/
13115WDI_Status
13116WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013117(
Jeff Johnson295189b2012-06-20 16:38:30 -070013118 WDI_ControlBlockType* pWDICtx,
13119 WDI_EventInfoType* pEventData
13120)
13121{
13122 WDI_AddBAReqParamsType* pwdiAddBAParams;
13123 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013124 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013125 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 wpt_uint16 usDataOffset = 0;
13128 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013129 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 wpt_macAddr macBSSID;
13131
13132 tAddBAReqMsg halAddBAReq;
13133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13134
13135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013136 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013137 -------------------------------------------------------------------------*/
13138 if (( NULL == pEventData ) ||
13139 ( NULL == pEventData->pEventData) ||
13140 ( NULL == pEventData->pCBfnc ))
13141 {
13142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013143 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013146 }
13147
13148 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13149 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13150
13151 /*-------------------------------------------------------------------------
13152 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 -------------------------------------------------------------------------*/
13155 wpalMutexAcquire(&pWDICtx->wptMutex);
13156
13157 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013160 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13161 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013162 &macBSSID))
13163 {
13164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013165 "This station does not exist in the WDI Station Table %d",
13166 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 }
13170
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13172 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13175 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13176 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013177
13178 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 }
13181
13182 /*------------------------------------------------------------------------
13183 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013184 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013185 ------------------------------------------------------------------------*/
13186 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13187 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13189 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13190 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013191
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 }
13196
13197
13198 wpalMutexRelease(&pWDICtx->wptMutex);
13199 /*-----------------------------------------------------------------------
13200 Get message buffer
13201 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013202 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013203 sizeof(halAddBAReq.addBAParams),
13204 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13207 {
13208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013209 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013213 }
13214
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13217 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13218#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13221#endif
13222
Jeff Johnsone7245742012-09-05 17:12:55 -070013223 wpalMemoryCopy( pSendBuffer+usDataOffset,
13224 &halAddBAReq.addBAParams,
13225 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013226
13227 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013229
13230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013231 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13234 wdiAddBARspCb, pEventData->pUserData,
13235 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013236}/*WDI_ProcessAddBAReq*/
13237
13238
13239
13240/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013241 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013242 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013243
13244 @param pWDICtx: pointer to the WLAN DAL context
13245 pEventData: pointer to the event information structure
13246
Jeff Johnson295189b2012-06-20 16:38:30 -070013247 @see
13248 @return Result of the function call
13249*/
13250WDI_Status
13251WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013252(
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 WDI_ControlBlockType* pWDICtx,
13254 WDI_EventInfoType* pEventData
13255)
13256{
13257 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13258 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013259 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013261 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 wpt_uint16 usDataOffset = 0;
13263 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013264 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013265 wpt_uint16 index;
13266 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013267
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 tTriggerBAReqMsg halTriggerBAReq;
13269 tTriggerBaReqCandidate* halTriggerBACandidate;
13270 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13272
13273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 -------------------------------------------------------------------------*/
13276 if (( NULL == pEventData ) ||
13277 ( NULL == pEventData->pEventData ) ||
13278 ( NULL == pEventData->pCBfnc ))
13279 {
13280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013281 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 }
13285
13286 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13287 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13288 /*-------------------------------------------------------------------------
13289 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 -------------------------------------------------------------------------*/
13292 wpalMutexAcquire(&pWDICtx->wptMutex);
13293
13294 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013297 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13298 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 &macBSSID))
13300 {
13301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013302 "This station does not exist in the WDI Station Table %d",
13303 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013304 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 }
13307
Jeff Johnsone7245742012-09-05 17:12:55 -070013308 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13309 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13312 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13313 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013314
13315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 }
13318
13319 /*------------------------------------------------------------------------
13320 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013321 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013322 ------------------------------------------------------------------------*/
13323 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13324 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13326 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13327 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013328
Jeff Johnsone7245742012-09-05 17:12:55 -070013329 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013330 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013331 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 }
13333
13334
13335 wpalMutexRelease(&pWDICtx->wptMutex);
13336 /*-----------------------------------------------------------------------
13337 Get message buffer
13338 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13340 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013343 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13344 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013347 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13349 {
13350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013351 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013352 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 }
13356
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13361
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 wpalMemoryCopy( pSendBuffer+usDataOffset,
13363 &halTriggerBAReq.triggerBAParams,
13364 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013365
Jeff Johnsone7245742012-09-05 17:12:55 -070013366 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13368 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13369 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013370
13371 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 index++)
13373 {
13374 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13375 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13376 halTriggerBACandidate++;
13377 wdiTriggerBACandidate++;
13378 }
13379
13380 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013381 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013382
13383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013384 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013386 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13387 wdiTriggerBARspCb, pEventData->pUserData,
13388 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013389}/*WDI_ProcessTriggerBAReq*/
13390
13391
13392
13393/**
13394 @brief Process Update Beacon Params Request function (called when Main FSM
13395 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013396
13397 @param pWDICtx: pointer to the WLAN DAL context
13398 pEventData: pointer to the event information structure
13399
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 @see
13401 @return Result of the function call
13402*/
13403WDI_Status
13404WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013405(
Jeff Johnson295189b2012-06-20 16:38:30 -070013406 WDI_ControlBlockType* pWDICtx,
13407 WDI_EventInfoType* pEventData
13408)
13409{
13410 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13411 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 wpt_uint16 usDataOffset = 0;
13414 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13417
13418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 -------------------------------------------------------------------------*/
13421 if (( NULL == pEventData ) ||
13422 ( NULL == pEventData->pEventData) ||
13423 ( NULL == pEventData->pCBfnc))
13424 {
13425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013429 }
13430
13431 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13432 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13433 /*-----------------------------------------------------------------------
13434 Get message buffer
13435 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 sizeof(halUpdateBeaconParams),
13438 &pSendBuffer, &usDataOffset, &usSendSize))||
13439 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13440 {
13441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013442 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013443 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013446 }
13447
13448 /*BSS Index of the BSS*/
13449 halUpdateBeaconParams.bssIdx =
13450 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13451 /*shortPreamble mode. HAL should update all the STA rates when it
13452 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13455 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013456 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013457 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13458 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013459 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13461
13462 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013465 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13475 halUpdateBeaconParams.fRIFSMode =
13476 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013478 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13479
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13481 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013482
13483 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013485
13486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13490 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013491}/*WDI_ProcessUpdateBeaconParamsReq*/
13492
13493
13494
13495/**
13496 @brief Process Send Beacon template Request function (called when Main FSM
13497 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013498
13499 @param pWDICtx: pointer to the WLAN DAL context
13500 pEventData: pointer to the event information structure
13501
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 @see
13503 @return Result of the function call
13504*/
13505WDI_Status
13506WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013507(
Jeff Johnson295189b2012-06-20 16:38:30 -070013508 WDI_ControlBlockType* pWDICtx,
13509 WDI_EventInfoType* pEventData
13510)
13511{
13512 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13513 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013514 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013515 wpt_uint16 usDataOffset = 0;
13516 wpt_uint16 usSendSize = 0;
13517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13518
13519 tSendBeaconReqMsg halSendBeaconReq;
13520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 -------------------------------------------------------------------------*/
13523 if (( NULL == pEventData ) ||
13524 ( NULL == pEventData->pEventData ) ||
13525 ( NULL == pEventData->pCBfnc ))
13526 {
13527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013528 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 }
13532
13533 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13534 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13535 /*-----------------------------------------------------------------------
13536 Get message buffer
13537 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013538 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 sizeof(halSendBeaconReq.sendBeaconParam),
13540 &pSendBuffer, &usDataOffset, &usSendSize))||
13541 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13542 {
13543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013544 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013545 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013548 }
13549
13550 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13551 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13552 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013553 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013554 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13555 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13556 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13557 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013558 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013560 /* usP2PIeOffset should be atleast greater than timIeOffset */
13561 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13562 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13563 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13564 {
13565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13566 "Invalid usP2PIeOffset %hu",
13567 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13568 WDI_ASSERT(0);
13569 return WDI_STATUS_E_FAILURE;
13570 }
13571
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013574
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 wpalMemoryCopy( pSendBuffer+usDataOffset,
13576 &halSendBeaconReq.sendBeaconParam,
13577 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013578
13579 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013580 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013581
13582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013585 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13586 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013587}/*WDI_ProcessSendBeaconParamsReq*/
13588
13589/**
13590 @brief Process Update Beacon Params Request function (called when Main FSM
13591 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013592
13593 @param pWDICtx: pointer to the WLAN DAL context
13594 pEventData: pointer to the event information structure
13595
Jeff Johnson295189b2012-06-20 16:38:30 -070013596 @see
13597 @return Result of the function call
13598*/
13599WDI_Status
13600WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013601(
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 WDI_ControlBlockType* pWDICtx,
13603 WDI_EventInfoType* pEventData
13604)
13605{
13606 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13607 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013608 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 wpt_uint16 usDataOffset = 0;
13610 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013611 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13613
13614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013616 -------------------------------------------------------------------------*/
13617 if (( NULL == pEventData ) ||
13618 ( NULL == pEventData->pEventData) ||
13619 ( NULL == pEventData->pCBfnc))
13620 {
13621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 }
13626
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013629 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013630 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13631 /*-----------------------------------------------------------------------
13632 Get message buffer
13633 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013634 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 sizeof(halUpdateProbeRspTmplParams),
13636 &pSendBuffer, &usDataOffset, &usSendSize))||
13637 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13638 {
13639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013640 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013641 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13642 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013644 }
13645
13646 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013647 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013648 WDI_MAC_ADDR_LEN);
13649
Jeff Johnsone7245742012-09-05 17:12:55 -070013650 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13652
13653 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13654 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013655 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013656
13657
13658 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13659 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13660 WDI_PROBE_REQ_BITMAP_IE_LEN);
13661
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 wpalMemoryCopy( pSendBuffer+usDataOffset,
13663 &halUpdateProbeRspTmplParams,
13664 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013665
13666 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013667 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013668
13669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013671 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013672 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13673 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13674 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013675}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13676
13677/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013678 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013679 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013680
13681 @param pWDICtx: pointer to the WLAN DAL context
13682 pEventData: pointer to the event information structure
13683
Jeff Johnson295189b2012-06-20 16:38:30 -070013684 @see
13685 @return Result of the function call
13686*/
13687WDI_Status
13688WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013689(
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 WDI_ControlBlockType* pWDICtx,
13691 WDI_EventInfoType* pEventData
13692)
13693{
13694
13695 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13696 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13697
13698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013699 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 -------------------------------------------------------------------------*/
13701 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013702 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013704 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013705 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13706 {
13707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013711 }
13712
13713 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13716
13717 /*cache the wdi nv request message here if the the first fragment
13718 * To issue the request to HAL for the next fragment */
13719 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13720 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13722 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13724
13725 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13726 pWDICtx->pRspCBUserData = pEventData->pUserData;
13727 }
13728
13729 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13730}
13731
13732/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013733 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013734 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013735
13736 @param pWDICtx: pointer to the WLAN DAL context
13737 pEventData: pointer to the event information structure
13738
Jeff Johnson295189b2012-06-20 16:38:30 -070013739 @see
13740 @return Result of the function call
13741*/
13742WDI_Status WDI_ProcessSetMaxTxPowerReq
13743(
13744 WDI_ControlBlockType* pWDICtx,
13745 WDI_EventInfoType* pEventData
13746)
13747{
13748 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13749 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013750 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 wpt_uint16 usDataOffset = 0;
13752 wpt_uint16 usSendSize = 0;
13753 tSetMaxTxPwrReq halSetMaxTxPower;
13754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13755
13756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013758 -------------------------------------------------------------------------*/
13759 if (( NULL == pEventData ) ||
13760 ( NULL == pEventData->pEventData ) ||
13761 ( NULL == pEventData->pCBfnc ))
13762 {
13763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013764 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013770 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013771 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13772
13773 /*-----------------------------------------------------------------------
13774 Get message buffer
13775 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013776if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13778 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013780)))
13781 {
13782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013783 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 }
13788
13789 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13790 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13791 WDI_MAC_ADDR_LEN);
13792
13793 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13794 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13795 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013797 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013798
13799 wpalMemoryCopy( pSendBuffer+usDataOffset,
13800 &halSetMaxTxPower.setMaxTxPwrParams,
13801 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013802
13803 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013805
13806 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013807 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013808 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013809 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13810 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13811 WDI_SET_MAX_TX_POWER_RESP);
13812
Jeff Johnson295189b2012-06-20 16:38:30 -070013813}
13814
Arif Hussaina5ebce02013-08-09 15:09:58 -070013815/*
13816 @brief Process Set Max Tx Power Per Band Request function (called when Main
13817 FSM allows it)
13818
13819 @param pWDICtx: pointer to the WLAN DAL context
13820 pEventData: pointer to the event information structure
13821
13822 @see
13823 @return Result of the function call
13824*/
13825WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13826(
13827 WDI_ControlBlockType* pWDICtx,
13828 WDI_EventInfoType* pEventData
13829)
13830{
13831 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13832 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13833 wpt_uint8* pSendBuffer = NULL;
13834 wpt_uint16 usDataOffset = 0;
13835 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013836 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013837 WDI_Status rValue = WDI_STATUS_SUCCESS;
13838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13839
13840 /*-------------------------------------------------------------------------
13841 Sanity check
13842 -------------------------------------------------------------------------*/
13843 if (( NULL == pEventData ) ||
13844 ( NULL == pEventData->pEventData ) ||
13845 ( NULL == pEventData->pCBfnc ))
13846 {
13847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13848 "%s: Invalid parameters", __func__);
13849 WDI_ASSERT(0);
13850 return WDI_STATUS_E_FAILURE;
13851 }
13852 pwdiSetMaxTxPowerPerBandParams = \
13853 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13854
13855 wdiSetMaxTxPowerPerBandRspCb = \
13856 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13857
13858 /*-----------------------------------------------------------------------
13859 Get message buffer
13860 -----------------------------------------------------------------------*/
13861
13862 rValue = WDI_GetMessageBuffer(pWDICtx,
13863 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13864 sizeof(tSetMaxTxPwrPerBandParams),
13865 &pSendBuffer, &usDataOffset, &usSendSize);
13866
13867 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13868 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13869 {
13870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13871 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13872 pEventData, pwdiSetMaxTxPowerPerBandParams,
13873 wdiSetMaxTxPowerPerBandRspCb);
13874 WDI_ASSERT(0);
13875 return WDI_STATUS_E_FAILURE;
13876 }
13877
13878
Arif Hussainf8f080c2014-04-03 09:48:36 -070013879 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13880 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013881 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13882
Arif Hussainf8f080c2014-04-03 09:48:36 -070013883 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013884 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13885
13886 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13887 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13888
13889 /*-------------------------------------------------------------------------
13890 Send Set Max Tx Power Per Band Request to HAL
13891 -------------------------------------------------------------------------*/
13892 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13893 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13894 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13895}
13896
schang86c22c42013-03-13 18:41:24 -070013897/**
13898 @brief Process Set Tx Power Request function (called when Main
13899 FSM allows it)
13900
13901 @param pWDICtx: pointer to the WLAN DAL context
13902 pEventData: pointer to the event information structure
13903
13904 @see
13905 @return Result of the function call
13906*/
13907WDI_Status WDI_ProcessSetTxPowerReq
13908(
13909 WDI_ControlBlockType* pWDICtx,
13910 WDI_EventInfoType* pEventData
13911)
13912{
13913 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13914 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13915 wpt_uint8* pSendBuffer = NULL;
13916 wpt_uint16 usDataOffset = 0;
13917 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013918 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13920
13921 /*-------------------------------------------------------------------------
13922 Sanity check
13923 -------------------------------------------------------------------------*/
13924 if (( NULL == pEventData ) ||
13925 ( NULL == pEventData->pEventData ) ||
13926 ( NULL == pEventData->pCBfnc ))
13927 {
13928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13929 "%s: Invalid parameters", __func__);
13930 WDI_ASSERT(0);
13931 return WDI_STATUS_E_FAILURE;
13932 }
13933
13934 pwdiSetTxPowerParams =
13935 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13936 wdiSetTxPowerRspCb =
13937 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13938
13939 /*-----------------------------------------------------------------------
13940 Get message buffer
13941 -----------------------------------------------------------------------*/
13942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13943 sizeof(tSetTxPwrReqParams),
13944 &pSendBuffer, &usDataOffset, &usSendSize))||
13945 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13946 )))
13947 {
13948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013949 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013950 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13951 WDI_ASSERT(0);
13952 return WDI_STATUS_E_FAILURE;
13953 }
13954
Leo Chang9a43db92013-03-25 17:39:58 -070013955 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13956 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13957 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013958
13959 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13960 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13961
13962 /*-------------------------------------------------------------------------
13963 Send Set Tx Power Request to HAL
13964 -------------------------------------------------------------------------*/
13965 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13966 wdiSetTxPowerRspCb, pEventData->pUserData,
13967 WDI_SET_TX_POWER_RESP);
13968}
Jeff Johnson295189b2012-06-20 16:38:30 -070013969
13970/**
13971 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13972 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013973
13974 @param pWDICtx: pointer to the WLAN DAL context
13975 pEventData: pointer to the event information structure
13976
Jeff Johnson295189b2012-06-20 16:38:30 -070013977 @see
13978 @return Result of the function call
13979*/
13980WDI_Status
13981WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013982(
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 WDI_ControlBlockType* pWDICtx,
13984 WDI_EventInfoType* pEventData
13985)
13986{
13987 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13988 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 wpt_uint16 usDataOffset = 0;
13991 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13994
13995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013997 -------------------------------------------------------------------------*/
13998 if (( NULL == pEventData ) ||
13999 ( NULL == pEventData->pEventData) ||
14000 ( NULL == pEventData->pCBfnc))
14001 {
14002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014006 }
14007
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014010 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
14012 /*-----------------------------------------------------------------------
14013 Get message buffer
14014 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014015 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14016 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014017 sizeof(halSetP2PGONOAParams),
14018 &pSendBuffer, &usDataOffset, &usSendSize))||
14019 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
14020 {
14021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014022 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
14024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014026 }
14027
Jeff Johnsone7245742012-09-05 17:12:55 -070014028 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070014030 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
14032 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014034 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014035 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014036 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014037 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014039 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
14041
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 wpalMemoryCopy( pSendBuffer+usDataOffset,
14043 &halSetP2PGONOAParams,
14044 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014045
14046 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014047 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014048
14049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014050 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14053 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14054 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014055}/*WDI_ProcessP2PGONOAReq*/
14056
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014057#ifdef FEATURE_WLAN_TDLS
14058
14059/**
14060 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14061 allows it)
14062
14063 @param pWDICtx: pointer to the WLAN DAL context
14064 pEventData: pointer to the event information structure
14065
14066 @see
14067 @return Result of the function call
14068*/
14069WDI_Status
14070WDI_ProcessTdlsLinkEstablishReq
14071(
14072 WDI_ControlBlockType* pWDICtx,
14073 WDI_EventInfoType* pEventData
14074)
14075{
14076 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14077 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14078 wpt_uint8* pSendBuffer = NULL;
14079 wpt_uint16 usDataOffset = 0;
14080 wpt_uint16 usSendSize = 0;
14081
14082 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14084
14085 /*-------------------------------------------------------------------------
14086 Sanity check
14087 -------------------------------------------------------------------------*/
14088 if (( NULL == pEventData ) ||
14089 ( NULL == pEventData->pEventData) ||
14090 ( NULL == pEventData->pCBfnc))
14091 {
14092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14093 "%s: Invalid parameters", __func__);
14094 WDI_ASSERT(0);
14095 return WDI_STATUS_E_FAILURE;
14096 }
14097 pwdiTDLSLinkEstablishReqParams =
14098 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14099 wdiTDLSLinkEstablishReqRspCb =
14100 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14101
14102
14103 /*-----------------------------------------------------------------------
14104 Get message buffer
14105 -----------------------------------------------------------------------*/
14106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14107 WDI_TDLS_LINK_ESTABLISH_REQ,
14108 sizeof(halSetTDLSLinkEstablishParams),
14109 &pSendBuffer, &usDataOffset, &usSendSize))||
14110 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14111 {
14112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014113 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014114 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14115 WDI_ASSERT(0);
14116 return WDI_STATUS_E_FAILURE;
14117 }
14118
14119 halSetTDLSLinkEstablishParams.staIdx =
14120 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14121 halSetTDLSLinkEstablishParams.bIsResponder =
14122 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14123 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14124 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14125 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14126 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14127 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14128 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14129 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14130 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14131 halSetTDLSLinkEstablishParams.aAck = 0;
14132 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14133 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14134 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014135 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14136 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14137
14138 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14139 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14140 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14141 halSetTDLSLinkEstablishParams.validChannelsLen =
14142 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14143
14144 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14145 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14146 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14147 halSetTDLSLinkEstablishParams.validOperClassesLen =
14148 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014149
14150 wpalMemoryCopy( pSendBuffer+usDataOffset,
14151 &halSetTDLSLinkEstablishParams,
14152 sizeof(halSetTDLSLinkEstablishParams));
14153
14154 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14155 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14156
14157 /*-------------------------------------------------------------------------
14158 Send Update Probe Resp Template Request to HAL
14159 -------------------------------------------------------------------------*/
14160 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14161 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14162 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14163 return 0;
14164}/*WDI_ProcessTdlsLinkEstablishReq*/
14165
14166
Atul Mittalc0f739f2014-07-31 13:47:47 +053014167/**
14168 @brief sends the channel switch command to f/w (called when Main FSM
14169 allows it)
14170
14171 @param pWDICtx: pointer to the WLAN DAL context
14172 pEventData: pointer to the event information structure
14173
14174 @see
14175 @return Result of the function call
14176*/
14177WDI_Status
14178WDI_ProcessTdlsChanSwitchReq
14179(
14180 WDI_ControlBlockType* pWDICtx,
14181 WDI_EventInfoType* pEventData
14182)
14183{
14184 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14185 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14186 wpt_uint8* pSendBuffer = NULL;
14187 wpt_uint16 usDataOffset = 0;
14188 wpt_uint16 usSendSize = 0;
14189 //WDI_Status wdiStatus;
14190 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14192
14193 /*-------------------------------------------------------------------------
14194 Sanity check
14195 -------------------------------------------------------------------------*/
14196 if (( NULL == pEventData ) ||
14197 ( NULL == pEventData->pEventData))
14198 {
14199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14200 "%s: Invalid parameters", __func__);
14201 WDI_ASSERT(0);
14202 return WDI_STATUS_E_FAILURE;
14203 }
14204 pwdiTDLSChanSwitchReqParams =
14205 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14206 wdiTDLSChanSwitchReqRspCb =
14207 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14208
14209 /*-----------------------------------------------------------------------
14210 Get message buffer
14211 -----------------------------------------------------------------------*/
14212 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14213 WDI_TDLS_CHAN_SWITCH_REQ,
14214 sizeof(halSetTDLSChanSwitchParams),
14215 &pSendBuffer, &usDataOffset, &usSendSize))||
14216 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14217 {
14218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14219 "Unable to get send buffer in Channel Switch REQ %p %p %p",
14220 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14221 WDI_ASSERT(0);
14222 return WDI_STATUS_E_FAILURE;
14223 }
14224
14225 halSetTDLSChanSwitchParams.staIdx =
14226 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14227 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14228 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14229 halSetTDLSChanSwitchParams.targetOperClass =
14230 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14231 halSetTDLSChanSwitchParams.targetChannel =
14232 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14233 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14234 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14235 wpalMemoryCopy( pSendBuffer+usDataOffset,
14236 &halSetTDLSChanSwitchParams,
14237 sizeof(halSetTDLSChanSwitchParams));
14238
14239 pWDICtx->wdiReqStatusCB = NULL;
14240 pWDICtx->pReqStatusUserData = NULL;
14241
14242 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14243 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14244 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14245}/*WDI_ProcessTdlsChanSwitchReq*/
14246
14247#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014248
Jeff Johnson295189b2012-06-20 16:38:30 -070014249
14250
14251/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014252 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014254 @param None
14255
14256 @see
14257 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014258*/
14259void
14260WDI_SetPowerStateCb
14261(
14262 wpt_status status,
14263 unsigned int dxePhyAddr,
14264 void *pContext
14265)
14266{
14267 wpt_status wptStatus;
14268 WDI_ControlBlockType *pCB = NULL;
14269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014270 /*
14271 * Trigger the event to bring the Enter BMPS req function to come
14272 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014273*/
14274 if( NULL != pContext )
14275 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 }
14278 else
14279 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014280 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014281 pCB = &gWDICb;
14282 }
Mihir Shetea4306052014-03-25 00:02:54 +053014283
14284 if(eWLAN_PAL_STATUS_SUCCESS == status )
14285 {
14286 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14287 }
14288 else
14289 {
14290 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14291 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 pCB->dxePhyAddr = dxePhyAddr;
14293 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14294 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14295 {
14296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14297 "Failed to set an event");
14298
Jeff Johnsone7245742012-09-05 17:12:55 -070014299 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 }
14301 return;
14302}
14303
14304
14305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014306 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014308
14309 @param pWDICtx: pointer to the WLAN DAL context
14310 pEventData: pointer to the event information structure
14311
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 @see
14313 @return Result of the function call
14314*/
14315WDI_Status
14316WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014317(
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 WDI_ControlBlockType* pWDICtx,
14319 WDI_EventInfoType* pEventData
14320)
14321{
Jeff Johnson43971f52012-07-17 12:26:56 -070014322 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014323 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 wpt_uint16 usDataOffset = 0;
14326 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014327 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14329
14330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014331 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014332 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014333 if ((NULL == pEventData ) ||
14334 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14335 (NULL == (pwdiEnterImpsReqParams =
14336 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014337 {
14338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014339 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014341 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014342 }
14343
14344 /*-----------------------------------------------------------------------
14345 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014346 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014347 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014348 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 0,
14350 &pSendBuffer, &usDataOffset, &usSendSize))||
14351 ( usSendSize < (usDataOffset )))
14352 {
14353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014354 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014355 pEventData, wdiEnterImpsRspCb);
14356 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014357 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 }
14359
14360 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014361 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14362 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 {
14364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14365 "WDI Init failed to reset an event");
14366
Jeff Johnsone7245742012-09-05 17:12:55 -070014367 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014368 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 }
14370
14371 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014372 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14373 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014375 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014376 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014377 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014378 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014379
14380 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014383 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14384 WDI_SET_POWER_STATE_TIMEOUT);
14385 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 {
14387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14388 "WDI Init failed to wait on an event");
14389
Karthick S1fa70262015-08-20 13:28:14 +053014390 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014391 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014392 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 }
14394
Mihir Shetea4306052014-03-25 00:02:54 +053014395 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14396 {
14397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14398 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14399
14400 goto fail;
14401 }
14402
14403 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14404 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014408 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14409 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014410
14411fail:
14412 // Release the message buffer so we don't leak
14413 wpalMemoryFree(pSendBuffer);
14414
14415failRequest:
14416 //WDA should have failure check to avoid the memory leak
14417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014418}/*WDI_ProcessEnterImpsReq*/
14419
14420/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014423
14424 @param pWDICtx: pointer to the WLAN DAL context
14425 pEventData: pointer to the event information structure
14426
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 @see
14428 @return Result of the function call
14429*/
14430WDI_Status
14431WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014432(
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 WDI_ControlBlockType* pWDICtx,
14434 WDI_EventInfoType* pEventData
14435)
14436{
14437 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014438 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 wpt_uint16 usDataOffset = 0;
14440 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014441 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14443
14444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014445 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 -------------------------------------------------------------------------*/
14447 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014448 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14449 (NULL == (pwdiExitImpsReqParams =
14450 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 {
14452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 }
14457
14458 /*-----------------------------------------------------------------------
14459 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 0,
14464 &pSendBuffer, &usDataOffset, &usSendSize))||
14465 ( usSendSize < (usDataOffset )))
14466 {
14467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014468 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 pEventData, wdiExitImpsRspCb);
14470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014473 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14474 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014478 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14479 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014480}/*WDI_ProcessExitImpsReq*/
14481
14482/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014485
14486 @param pWDICtx: pointer to the WLAN DAL context
14487 pEventData: pointer to the event information structure
14488
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 @see
14490 @return Result of the function call
14491*/
14492WDI_Status
14493WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014494(
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 WDI_ControlBlockType* pWDICtx,
14496 WDI_EventInfoType* pEventData
14497)
14498{
14499 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14500 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014501 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014502 wpt_uint16 usDataOffset = 0;
14503 wpt_uint16 usSendSize = 0;
14504 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014505 wpt_status wptStatus;
14506
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14508
14509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 -------------------------------------------------------------------------*/
14512 if (( NULL == pEventData ) ||
14513 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14514 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14515 {
14516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014518 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014519 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014520 }
14521
14522 /*-----------------------------------------------------------------------
14523 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014524 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014527 sizeof(enterBmpsReq),
14528 &pSendBuffer, &usDataOffset, &usSendSize))||
14529 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14530 {
14531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014532 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14534 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014535 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 }
14537
14538 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014539 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14540 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 {
14542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14543 "WDI Init failed to reset an event");
14544
Jeff Johnsone7245742012-09-05 17:12:55 -070014545 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014546 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014547 }
14548
14549 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014550 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14551 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14552 {
14553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014554 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014555 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014556 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014557 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014558
14559/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014560 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014562 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14563 WDI_SET_POWER_STATE_TIMEOUT);
14564 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 {
14566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14567 "WDI Init failed to wait on an event");
14568
Karthick S1fa70262015-08-20 13:28:14 +053014569 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014570 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014571 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 }
14573
14574 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14575
14576 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14577 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14578 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14579 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14580
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014581 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014582 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14583 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14584 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14585
14586 wpalMemoryCopy( pSendBuffer+usDataOffset,
14587 &enterBmpsReq,
14588 sizeof(enterBmpsReq));
14589
14590 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014592
14593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14597 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014598
14599fail:
14600 // Release the message buffer so we don't leak
14601 wpalMemoryFree(pSendBuffer);
14602
14603failRequest:
14604 //WDA should have failure check to avoid the memory leak
14605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014606}/*WDI_ProcessEnterBmpsReq*/
14607
14608/**
14609 @brief Process Exit BMPS Request function (called when Main FSM
14610 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014611
14612 @param pWDICtx: pointer to the WLAN DAL context
14613 pEventData: pointer to the event information structure
14614
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 @see
14616 @return Result of the function call
14617*/
14618WDI_Status
14619WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014620(
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 WDI_ControlBlockType* pWDICtx,
14622 WDI_EventInfoType* pEventData
14623)
14624{
14625 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14626 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 wpt_uint16 usDataOffset = 0;
14629 wpt_uint16 usSendSize = 0;
14630 tHalExitBmpsReqParams exitBmpsReq;
14631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14632
14633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 -------------------------------------------------------------------------*/
14636 if (( NULL == pEventData ) ||
14637 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14638 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14639 {
14640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014641 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014642 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 }
14645
14646 /*-----------------------------------------------------------------------
14647 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014648 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014649 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014650 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 sizeof(exitBmpsReq),
14652 &pSendBuffer, &usDataOffset, &usSendSize))||
14653 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14654 {
14655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014656 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014660 }
14661 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14662
Jeff Johnsone7245742012-09-05 17:12:55 -070014663 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14664
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 wpalMemoryCopy( pSendBuffer+usDataOffset,
14666 &exitBmpsReq,
14667 sizeof(exitBmpsReq));
14668
14669 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014671
14672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14676 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014677}/*WDI_ProcessExitBmpsReq*/
14678
14679/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014682
14683 @param pWDICtx: pointer to the WLAN DAL context
14684 pEventData: pointer to the event information structure
14685
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 @see
14687 @return Result of the function call
14688*/
14689WDI_Status
14690WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014691(
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 WDI_ControlBlockType* pWDICtx,
14693 WDI_EventInfoType* pEventData
14694)
14695{
14696 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14697 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 wpt_uint16 usDataOffset = 0;
14700 wpt_uint16 usSendSize = 0;
14701 tUapsdReqParams enterUapsdReq;
14702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14703
14704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014705 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014706 -------------------------------------------------------------------------*/
14707 if (( NULL == pEventData ) ||
14708 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14709 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14710 {
14711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014715 }
14716
14717 /*-----------------------------------------------------------------------
14718 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014722 sizeof(enterUapsdReq),
14723 &pSendBuffer, &usDataOffset, &usSendSize))||
14724 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14725 {
14726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014727 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 }
14732
14733 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14734 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14735 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14736 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14737 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14738 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14739 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14740 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014742
Jeff Johnsone7245742012-09-05 17:12:55 -070014743 wpalMemoryCopy( pSendBuffer+usDataOffset,
14744 &enterUapsdReq,
14745 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014746
14747 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014749
14750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14754 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014755}/*WDI_ProcessEnterUapsdReq*/
14756
14757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014760
14761 @param pWDICtx: pointer to the WLAN DAL context
14762 pEventData: pointer to the event information structure
14763
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 @see
14765 @return Result of the function call
14766*/
14767WDI_Status
14768WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014769(
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 WDI_ControlBlockType* pWDICtx,
14771 WDI_EventInfoType* pEventData
14772)
14773{
14774 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014775 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014776 wpt_uint16 usDataOffset = 0;
14777 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014778 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14779 wpt_uint8 bssIdx = 0;
14780
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14782
14783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 -------------------------------------------------------------------------*/
14786 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014787 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014788 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14789 {
14790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 }
14795
14796 /*-----------------------------------------------------------------------
14797 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014801 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014803 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014804 {
14805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014806 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014807 pEventData, wdiExitUapsdRspCb);
14808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 }
14811
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014812 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14813
14814 wpalMemoryCopy( pSendBuffer+usDataOffset,
14815 &bssIdx,
14816 sizeof(wpt_uint8));
14817
14818 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14819 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14820
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014822 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014823 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14825 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014826}/*WDI_ProcessExitUapsdReq*/
14827
14828/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014829 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014831
14832 @param pWDICtx: pointer to the WLAN DAL context
14833 pEventData: pointer to the event information structure
14834
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 @see
14836 @return Result of the function call
14837*/
14838WDI_Status
14839WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014840(
Jeff Johnson295189b2012-06-20 16:38:30 -070014841 WDI_ControlBlockType* pWDICtx,
14842 WDI_EventInfoType* pEventData
14843)
14844{
14845 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14846 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014847 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 wpt_uint16 usDataOffset = 0;
14849 wpt_uint16 usSendSize = 0;
14850 tUapsdInfo uapsdAcParamsReq;
14851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14852
14853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 -------------------------------------------------------------------------*/
14856 if (( NULL == pEventData ) ||
14857 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14858 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14859 {
14860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014861 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 }
14865
14866 /*-----------------------------------------------------------------------
14867 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014868 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014870 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014871 sizeof(uapsdAcParamsReq),
14872 &pSendBuffer, &usDataOffset, &usSendSize))||
14873 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14874 {
14875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014876 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 }
14881
14882 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14883 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14884 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14885 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14886 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14887 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14888
Jeff Johnsone7245742012-09-05 17:12:55 -070014889 wpalMemoryCopy( pSendBuffer+usDataOffset,
14890 &uapsdAcParamsReq,
14891 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014892
14893 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014895
14896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14900 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014901}/*WDI_ProcessSetUapsdAcParamsReq*/
14902
14903/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014905 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014906
14907 @param pWDICtx: pointer to the WLAN DAL context
14908 pEventData: pointer to the event information structure
14909
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 @see
14911 @return Result of the function call
14912*/
14913WDI_Status
14914WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014915(
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 WDI_ControlBlockType* pWDICtx,
14917 WDI_EventInfoType* pEventData
14918)
14919{
14920 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14921 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 wpt_uint16 usDataOffset = 0;
14924 wpt_uint16 usSendSize = 0;
14925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14926
14927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 -------------------------------------------------------------------------*/
14930 if (( NULL == pEventData ) ||
14931 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14932 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14933 {
14934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 }
14939
14940 /*-----------------------------------------------------------------------
14941 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14946 &pSendBuffer, &usDataOffset, &usSendSize))||
14947 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14948 {
14949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014950 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014951 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 }
14955
Jeff Johnsone7245742012-09-05 17:12:55 -070014956 wpalMemoryCopy( pSendBuffer+usDataOffset,
14957 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14958 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014959
14960 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014961 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014962
14963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014964 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014966 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14967 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014968}/*WDI_ProcessUpdateUapsdParamsReq*/
14969
14970/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014973
14974 @param pWDICtx: pointer to the WLAN DAL context
14975 pEventData: pointer to the event information structure
14976
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 @see
14978 @return Result of the function call
14979*/
14980WDI_Status
14981WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014982(
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 WDI_ControlBlockType* pWDICtx,
14984 WDI_EventInfoType* pEventData
14985)
14986{
14987 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14988 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 wpt_uint16 usDataOffset = 0;
14991 wpt_uint16 usSendSize = 0;
14992 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14993
14994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14995
14996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 -------------------------------------------------------------------------*/
14999 if (( NULL == pEventData ) ||
15000 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
15001 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
15002 {
15003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015007 }
15008
15009 /*-----------------------------------------------------------------------
15010 Get message buffer
15011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 sizeof(halRxpFilterParams),
15014 &pSendBuffer, &usDataOffset, &usSendSize))||
15015 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
15016 {
15017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015018 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
15020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 }
15023
Jeff Johnsone7245742012-09-05 17:12:55 -070015024 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
15028
Jeff Johnsone7245742012-09-05 17:12:55 -070015029 wpalMemoryCopy( pSendBuffer+usDataOffset,
15030 &halRxpFilterParams,
15031 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015032
15033 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015034 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015035
15036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015037 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15040 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015041}/*WDI_ProcessConfigureRxpFilterReq*/
15042
15043/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015046
15047 @param pWDICtx: pointer to the WLAN DAL context
15048 pEventData: pointer to the event information structure
15049
Jeff Johnson295189b2012-06-20 16:38:30 -070015050 @see
15051 @return Result of the function call
15052*/
15053WDI_Status
15054WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015055(
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 WDI_ControlBlockType* pWDICtx,
15057 WDI_EventInfoType* pEventData
15058)
15059{
15060 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15061 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 wpt_uint16 usDataOffset = 0;
15064 wpt_uint16 usSendSize = 0;
15065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15066
15067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 -------------------------------------------------------------------------*/
15070 if (( NULL == pEventData ) ||
15071 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15072 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15073 {
15074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015078 }
15079
15080 /*-----------------------------------------------------------------------
15081 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015082 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015084 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015085 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15086 &pSendBuffer, &usDataOffset, &usSendSize))||
15087 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15088 {
15089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015090 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015091 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 }
15095
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 wpalMemoryCopy( pSendBuffer+usDataOffset,
15097 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15098 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15099 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15100 &pwdiBeaconFilterParams->aFilters[0],
15101 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015102
15103 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015104 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015105
15106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15110 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015111}/*WDI_ProcessSetBeaconFilterReq*/
15112
15113/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015116
15117 @param pWDICtx: pointer to the WLAN DAL context
15118 pEventData: pointer to the event information structure
15119
Jeff Johnson295189b2012-06-20 16:38:30 -070015120 @see
15121 @return Result of the function call
15122*/
15123WDI_Status
15124WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015125(
Jeff Johnson295189b2012-06-20 16:38:30 -070015126 WDI_ControlBlockType* pWDICtx,
15127 WDI_EventInfoType* pEventData
15128)
15129{
15130 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15131 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015132 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015133 wpt_uint16 usDataOffset = 0;
15134 wpt_uint16 usSendSize = 0;
15135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15136
15137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015138 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 -------------------------------------------------------------------------*/
15140 if (( NULL == pEventData ) ||
15141 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15142 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15143 {
15144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015145 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015146 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015148 }
15149
15150 /*-----------------------------------------------------------------------
15151 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015152 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015153 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015154 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015155 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15156 &pSendBuffer, &usDataOffset, &usSendSize))||
15157 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15158 {
15159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015160 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 }
15165
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 wpalMemoryCopy( pSendBuffer+usDataOffset,
15167 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15168 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015169
15170 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015172
15173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015174 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15177 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015178}
15179
15180/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015183
15184 @param pWDICtx: pointer to the WLAN DAL context
15185 pEventData: pointer to the event information structure
15186
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 @see
15188 @return Result of the function call
15189*/
15190WDI_Status
15191WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015192(
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 WDI_ControlBlockType* pWDICtx,
15194 WDI_EventInfoType* pEventData
15195)
15196{
15197 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15198 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015199 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015200 wpt_uint16 usDataOffset = 0;
15201 wpt_uint16 usSendSize = 0;
15202 tHalRSSIThresholds rssiThresholdsReq;
15203 WDI_Status ret_status = 0;
15204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15205
15206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 -------------------------------------------------------------------------*/
15209 if (( NULL == pEventData ) ||
15210 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15211 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15212 {
15213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015214 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 }
15218
15219 /*-----------------------------------------------------------------------
15220 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015221 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015222 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 sizeof(rssiThresholdsReq),
15225 &pSendBuffer, &usDataOffset, &usSendSize))||
15226 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15227 {
15228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015229 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 }
15234
Jeff Johnsone7245742012-09-05 17:12:55 -070015235 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015237 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015238 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015239 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015240 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015241 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015243 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015247 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15255
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 wpalMemoryCopy( pSendBuffer+usDataOffset,
15257 &rssiThresholdsReq,
15258 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015259
15260 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015261 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015262
15263 /*-------------------------------------------------------------------------
15264 Send Set threshold req to HAL
15265 -------------------------------------------------------------------------*/
15266 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15267 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15268 {
15269 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15270 // req. Then as a result of processing the threshold cross ind, we trigger
15271 // a Set threshold req, then we need to indicate to WDI that it needs to
15272 // go to busy state as a result of the indication as we sent a req in the
15273 // same WDI context.
15274 // Hence expected state transition is to busy.
15275 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15276 }
15277
15278 return ret_status;
15279}
15280
15281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015283 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015284
15285 @param pWDICtx: pointer to the WLAN DAL context
15286 pEventData: pointer to the event information structure
15287
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 @see
15289 @return Result of the function call
15290*/
15291WDI_Status
15292WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015293(
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 WDI_ControlBlockType* pWDICtx,
15295 WDI_EventInfoType* pEventData
15296)
15297{
15298 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15299 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015300 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 wpt_uint16 usDataOffset = 0;
15302 wpt_uint16 usSendSize = 0;
15303 tHalHostOffloadReq hostOffloadParams;
15304 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015305 wpt_uint8 ucCurrentBSSSesIdx = 0;
15306 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015307
15308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15309
15310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 -------------------------------------------------------------------------*/
15313 if (( NULL == pEventData ) ||
15314 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15315 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15316 {
15317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015320 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015321 }
15322
15323 /*-----------------------------------------------------------------------
15324 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015325 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015327 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015328 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15329 &pSendBuffer, &usDataOffset, &usSendSize))||
15330 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15331 {
15332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015333 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15335 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015336 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 }
15338
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015339 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15340 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15341 &pBSSSes);
15342 if ( NULL == pBSSSes )
15343 {
c_hpothu86feba52014-10-28 15:51:18 +053015344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015345 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15346 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015347 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015348 }
15349
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15351 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015352
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15354 {
15355 // ARP Offload
15356 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15357 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15358 4);
15359 }
15360 else
15361 {
15362 // NS Offload
15363 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15364 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15365 16);
15366
15367#ifdef WLAN_NS_OFFLOAD
15368 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15369 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15370 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15371 16);
15372 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15373 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15374 16);
15375 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15376 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15377 16);
15378 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15379 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15380 16);
15381 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15382 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15383 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015384 nsOffloadParams.srcIPv6AddrValid =
15385 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15386
15387 nsOffloadParams.targetIPv6Addr1Valid =
15388 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15389
15390 nsOffloadParams.targetIPv6Addr2Valid =
15391 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15392
15393 nsOffloadParams.slotIndex =
15394 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015395
Jeff Johnson295189b2012-06-20 16:38:30 -070015396#endif // WLAN_NS_OFFLOAD
15397 }
15398
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015399 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15400
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 // copy hostOffloadParams into pSendBuffer
15402 wpalMemoryCopy( pSendBuffer+usDataOffset,
15403 &hostOffloadParams,
15404 sizeof(hostOffloadParams));
15405
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015406 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015407 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015408 // copy nsOffloadParams into pSendBuffer
15409 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 &nsOffloadParams,
15411 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015412 }
15413 else
15414 {
15415#ifdef WLAN_NS_OFFLOAD
15416 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15417 {
15418 // copy nsOffloadParams into pSendBuffer
15419 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15420 &nsOffloadParams,
15421 sizeof(nsOffloadParams));
15422 }
15423#endif
15424 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015425
15426 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015427 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015428
15429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015430 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15433 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015434
15435fail:
15436 // Release the message buffer so we don't leak
15437 wpalMemoryFree(pSendBuffer);
15438
15439failRequest:
15440 //WDA should have failure check to avoid the memory leak
15441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015442}/*WDI_ProcessHostOffloadReq*/
15443
15444/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015445 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015447
15448 @param pWDICtx: pointer to the WLAN DAL context
15449 pEventData: pointer to the event information structure
15450
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 @see
15452 @return Result of the function call
15453*/
15454WDI_Status
15455WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015456(
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 WDI_ControlBlockType* pWDICtx,
15458 WDI_EventInfoType* pEventData
15459)
15460{
15461 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15462 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015464 wpt_uint16 usDataOffset = 0;
15465 wpt_uint16 usSendSize = 0;
15466 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015467 wpt_uint8 ucCurrentBSSSesIdx = 0;
15468 WDI_BSSSessionType* pBSSSes = NULL;
15469
Jeff Johnson295189b2012-06-20 16:38:30 -070015470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15471
15472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 -------------------------------------------------------------------------*/
15475 if (( NULL == pEventData ) ||
15476 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15477 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15478 {
15479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15480 "Invalid parameters in Keep Alive req");
15481 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015482 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015483 }
15484
15485 /*-----------------------------------------------------------------------
15486 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015487 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015488 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015489 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015490 sizeof(keepAliveReq),
15491 &pSendBuffer, &usDataOffset, &usSendSize))||
15492 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15493 {
15494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015495 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15497 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015498 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015499 }
15500
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015501 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15502 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15503 &pBSSSes);
15504 if ( NULL == pBSSSes )
15505 {
15506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015507 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015508 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015509 }
15510
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15512 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15513
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015514 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015515
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15517 {
15518 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15519 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15520 HAL_IPV4_ADDR_LEN);
15521 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15522 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015524 wpalMemoryCopy(keepAliveReq.destMacAddr,
15525 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15526 HAL_MAC_ADDR_LEN);
15527 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015528
15529 wpalMemoryCopy( pSendBuffer+usDataOffset,
15530 &keepAliveReq,
15531 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015532
15533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015534 "Process keep alive req %zu", 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 time period %d",
15538 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015539
15540 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015541 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015542
15543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15544 "Sending keep alive req to HAL");
15545
15546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015547 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015548 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015549 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15550 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015551
15552fail:
15553 // Release the message buffer so we don't leak
15554 wpalMemoryFree(pSendBuffer);
15555
15556failRequest:
15557 //WDA should have failure check to avoid the memory leak
15558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015559}/*WDI_ProcessKeepAliveReq*/
15560
15561
15562/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015565
15566 @param pWDICtx: pointer to the WLAN DAL context
15567 pEventData: pointer to the event information structure
15568
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 @see
15570 @return Result of the function call
15571*/
15572WDI_Status
15573WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015574(
Jeff Johnson295189b2012-06-20 16:38:30 -070015575 WDI_ControlBlockType* pWDICtx,
15576 WDI_EventInfoType* pEventData
15577)
15578{
15579 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15580 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015581 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 wpt_uint16 usDataOffset = 0;
15583 wpt_uint16 usSendSize = 0;
15584 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015585 wpt_uint8 ucCurrentBSSSesIdx = 0;
15586 WDI_BSSSessionType* pBSSSes = NULL;
15587
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15589
15590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 -------------------------------------------------------------------------*/
15593 if (( NULL == pEventData ) ||
15594 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15595 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15596 {
15597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015600 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 }
15602
15603 /*-----------------------------------------------------------------------
15604 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015608 sizeof(wowlAddBcPtrnReq),
15609 &pSendBuffer, &usDataOffset, &usSendSize))||
15610 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15611 {
15612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015613 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015614 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15615 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015616 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 }
15618
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015619 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15620 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15621 &pBSSSes);
15622 if ( NULL == pBSSSes )
15623 {
15624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015625 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015626 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015627 }
15628
Jeff Johnsone7245742012-09-05 17:12:55 -070015629 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015631 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15637
15638 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15639 {
15640 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15641 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15642 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15643 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15644 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15645 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15646 }
15647 else
15648 {
15649 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15650 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15651 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15652 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15653 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15654 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15655
15656 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15657 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15658 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15659 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15660 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15661 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15662 }
15663
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015664 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15665
Jeff Johnson295189b2012-06-20 16:38:30 -070015666 wpalMemoryCopy( pSendBuffer+usDataOffset,
15667 &wowlAddBcPtrnReq,
15668 sizeof(wowlAddBcPtrnReq));
15669
15670 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015671 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015672
15673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15677 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015678fail:
15679 // Release the message buffer so we don't leak
15680 wpalMemoryFree(pSendBuffer);
15681
15682failRequest:
15683 //WDA should have failure check to avoid the memory leak
15684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015685}/*WDI_ProcessWowlAddBcPtrnReq*/
15686
15687/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015690
15691 @param pWDICtx: pointer to the WLAN DAL context
15692 pEventData: pointer to the event information structure
15693
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 @see
15695 @return Result of the function call
15696*/
15697WDI_Status
15698WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015699(
Jeff Johnson295189b2012-06-20 16:38:30 -070015700 WDI_ControlBlockType* pWDICtx,
15701 WDI_EventInfoType* pEventData
15702)
15703{
15704 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15705 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015706 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015707 wpt_uint16 usDataOffset = 0;
15708 wpt_uint16 usSendSize = 0;
15709 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015710 wpt_uint8 ucCurrentBSSSesIdx = 0;
15711 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15713
15714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 -------------------------------------------------------------------------*/
15717 if (( NULL == pEventData ) ||
15718 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15719 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15720 {
15721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015724 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 }
15726
15727 /*-----------------------------------------------------------------------
15728 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015729 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015731 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 sizeof(wowlDelBcPtrnReq),
15733 &pSendBuffer, &usDataOffset, &usSendSize))||
15734 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15735 {
15736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015737 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15739 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015740 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 }
15742
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015743 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15744 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15745 &pBSSSes);
15746 if ( NULL == pBSSSes )
15747 {
15748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015749 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015750 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015751 }
15752
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015755
15756 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15757
Jeff Johnsone7245742012-09-05 17:12:55 -070015758 wpalMemoryCopy( pSendBuffer+usDataOffset,
15759 &wowlDelBcPtrnReq,
15760 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015761
15762 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015763 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015764
15765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015766 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015768 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15769 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015770
15771fail:
15772 // Release the message buffer so we don't leak
15773 wpalMemoryFree(pSendBuffer);
15774
15775failRequest:
15776 //WDA should have failure check to avoid the memory leak
15777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015778}/*WDI_ProcessWowlDelBcPtrnReq*/
15779
15780/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015781 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015783
15784 @param pWDICtx: pointer to the WLAN DAL context
15785 pEventData: pointer to the event information structure
15786
Jeff Johnson295189b2012-06-20 16:38:30 -070015787 @see
15788 @return Result of the function call
15789*/
15790WDI_Status
15791WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015792(
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 WDI_ControlBlockType* pWDICtx,
15794 WDI_EventInfoType* pEventData
15795)
15796{
15797 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15798 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 wpt_uint16 usDataOffset = 0;
15801 wpt_uint16 usSendSize = 0;
15802 tHalWowlEnterParams wowlEnterReq;
15803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15804
15805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 -------------------------------------------------------------------------*/
15808 if (( NULL == pEventData ) ||
15809 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15810 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15811 {
15812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 }
15817
15818 /*-----------------------------------------------------------------------
15819 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015821 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 sizeof(wowlEnterReq),
15824 &pSendBuffer, &usDataOffset, &usSendSize))||
15825 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15826 {
15827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015828 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 }
15833
Kumar Anandaca924e2013-07-22 14:35:34 -070015834 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15835
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015838 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015839 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015840 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15852
15853#ifdef WLAN_WAKEUP_EVENTS
15854 wowlEnterReq.ucWoWEAPIDRequestEnable =
15855 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15856
15857 wowlEnterReq.ucWoWEAPOL4WayEnable =
15858 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15859
15860 wowlEnterReq.ucWowNetScanOffloadMatch =
15861 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15862
15863 wowlEnterReq.ucWowGTKRekeyError =
15864 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15865
15866 wowlEnterReq.ucWoWBSSConnLoss =
15867 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15868#endif // WLAN_WAKEUP_EVENTS
15869
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015870 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15871
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15873 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15874 sizeof(tSirMacAddr));
15875
Jeff Johnsone7245742012-09-05 17:12:55 -070015876 wpalMemoryCopy( pSendBuffer+usDataOffset,
15877 &wowlEnterReq,
15878 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015879
15880 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015882
15883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015885 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015886 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15887 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015888}/*WDI_ProcessWowlEnterReq*/
15889
15890/**
15891 @brief Process Wowl exit Request function (called when Main FSM
15892 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015893
15894 @param pWDICtx: pointer to the WLAN DAL context
15895 pEventData: pointer to the event information structure
15896
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 @see
15898 @return Result of the function call
15899*/
15900WDI_Status
15901WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015902(
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 WDI_ControlBlockType* pWDICtx,
15904 WDI_EventInfoType* pEventData
15905)
15906{
15907 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015908 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015909 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 wpt_uint16 usDataOffset = 0;
15911 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015912 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15914
15915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 -------------------------------------------------------------------------*/
15918 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015919 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15921 {
15922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 }
15927
15928 /*-----------------------------------------------------------------------
15929 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015933 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015935 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015936 {
15937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015938 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 pEventData, wdiWowlExitCb);
15940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015942 }
15943
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015944 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15945
15946 wpalMemoryCopy( pSendBuffer+usDataOffset,
15947 &wowlExitparams,
15948 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015952 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15953 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015954}/*WDI_ProcessWowlExitReq*/
15955
15956/**
15957 @brief Process Configure Apps Cpu Wakeup State Request function
15958 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015959
15960 @param pWDICtx: pointer to the WLAN DAL context
15961 pEventData: pointer to the event information structure
15962
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 @see
15964 @return Result of the function call
15965*/
15966WDI_Status
15967WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015968(
Jeff Johnson295189b2012-06-20 16:38:30 -070015969 WDI_ControlBlockType* pWDICtx,
15970 WDI_EventInfoType* pEventData
15971)
15972{
15973 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15974 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015975 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 wpt_uint16 usDataOffset = 0;
15977 wpt_uint16 usSendSize = 0;
15978 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15980
15981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015982 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015983 -------------------------------------------------------------------------*/
15984 if (( NULL == pEventData ) ||
15985 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15986 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15987 {
15988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015989 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015992 }
15993
15994 /*-----------------------------------------------------------------------
15995 Get message buffer
15996 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 sizeof(halCfgAppsCpuWakeupStateReqParams),
15999 &pSendBuffer, &usDataOffset, &usSendSize))||
16000 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
16001 {
16002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016003 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016004 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
16005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 }
16008
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
16011
Jeff Johnsone7245742012-09-05 17:12:55 -070016012 wpalMemoryCopy( pSendBuffer+usDataOffset,
16013 &halCfgAppsCpuWakeupStateReqParams,
16014 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016015
16016 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016017 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016018
16019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016020 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016021 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016022 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16023 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
16024 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016025}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
16026
16027#ifdef WLAN_FEATURE_VOWIFI_11R
16028/**
16029 @brief Process Aggregated Add TSpec Request function (called when Main FSM
16030 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016031
16032 @param pWDICtx: pointer to the WLAN DAL context
16033 pEventData: pointer to the event information structure
16034
Jeff Johnson295189b2012-06-20 16:38:30 -070016035 @see
16036 @return Result of the function call
16037*/
16038WDI_Status
16039WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016040(
Jeff Johnson295189b2012-06-20 16:38:30 -070016041 WDI_ControlBlockType* pWDICtx,
16042 WDI_EventInfoType* pEventData
16043)
16044{
16045 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16046 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016047 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016048 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016049 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016050 wpt_uint16 usDataOffset = 0;
16051 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016052 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016053 wpt_macAddr macBSSID;
16054 tAggrAddTsReq halAggrAddTsReq;
16055 int i;
16056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16057
16058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016060 -------------------------------------------------------------------------*/
16061 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16062 ( NULL == pEventData->pCBfnc ))
16063 {
16064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 }
16069 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16070 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16071 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16072 /*-------------------------------------------------------------------------
16073 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016074 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016075 -------------------------------------------------------------------------*/
16076 wpalMutexAcquire(&pWDICtx->wptMutex);
16077
16078 /*------------------------------------------------------------------------
16079 Find the BSS for which the request is made and identify WDI session
16080 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016081 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16082 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 &macBSSID))
16084 {
16085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016086 "This station does not exist in the WDI Station Table %d",
16087 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 }
16091
Jeff Johnsone7245742012-09-05 17:12:55 -070016092 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16093 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16096 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16097 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016098
16099 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016102
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 /*------------------------------------------------------------------------
16104 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016105 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016106 ------------------------------------------------------------------------*/
16107 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16108 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16110 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16111 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016112
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 }
16117
16118 wpalMutexRelease(&pWDICtx->wptMutex);
16119 /*-----------------------------------------------------------------------
16120 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016123 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 sizeof(tAggrAddTsParams),
16125 &pSendBuffer, &usDataOffset, &usSendSize))||
16126 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16127 {
16128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016129 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 }
16134
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016137 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016138 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16139
16140 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16141 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016143 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016144 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016146 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16148 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16151 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16154 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16157 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016158 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16160 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16163 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070016164 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16166 trafficType;
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.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016174
16175
16176 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016177 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016182 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016183 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016184 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016185 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016186 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016187 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016192 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016194 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016195 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016196 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016201 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016203 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16206 }
16207
Jeff Johnsone7245742012-09-05 17:12:55 -070016208 wpalMemoryCopy( pSendBuffer+usDataOffset,
16209 &halAggrAddTsReq,
16210 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016211
16212 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016214
16215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016216 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016217 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016218 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016219 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016220 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016221}/*WDI_ProcessAggrAddTSpecReq*/
16222#endif /* WLAN_FEATURE_VOWIFI_11R */
16223
16224/**
16225 @brief Process Shutdown Request function (called when Main FSM
16226 allows it)
16227
16228 @param pWDICtx: pointer to the WLAN DAL context
16229 pEventData: pointer to the event information structure
16230
16231 @see
16232 @return Result of the function call
16233*/
16234WDI_Status
16235WDI_ProcessShutdownReq
16236(
16237 WDI_ControlBlockType* pWDICtx,
16238 WDI_EventInfoType* pEventData
16239 )
16240{
16241 wpt_status wptStatus;
16242
16243
16244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16245
16246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 -------------------------------------------------------------------------*/
16249 if ( NULL == pEventData )
16250 {
16251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016253 WDI_ASSERT(0);
16254 return WDI_STATUS_E_FAILURE;
16255 }
16256
16257 wpalMutexAcquire(&pWDICtx->wptMutex);
16258
16259
16260 gWDIInitialized = eWLAN_PAL_FALSE;
16261 /*! TO DO: stop the data services */
16262 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16263 {
16264 /*Stop the STA Table !UT- check this logic again
16265 It is safer to do it here than on the response - because a stop is imminent*/
16266 WDI_STATableStop(pWDICtx);
16267
16268 /* Stop Transport Driver, DXE */
16269 WDTS_Stop(pWDICtx);
16270 }
16271
16272 /*Clear all pending request*/
16273 WDI_ClearPendingRequests(pWDICtx);
16274 /* Close Data transport*/
16275 /* FTM mode does not open Data Path */
16276 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16277 {
16278 WDTS_Close(pWDICtx);
16279 }
16280 /*Close the STA Table !UT- check this logic again*/
16281 WDI_STATableClose(pWDICtx);
16282 /*close the PAL */
16283 wptStatus = wpalClose(pWDICtx->pPALContext);
16284 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16285 {
16286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16287 "Failed to wpal Close %d", wptStatus);
16288 WDI_ASSERT(0);
16289 }
16290
16291 /*Transition back to init state*/
16292 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16293
16294 wpalMutexRelease(&pWDICtx->wptMutex);
16295
16296 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016297 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016298
16299
Jeff Johnsone7245742012-09-05 17:12:55 -070016300 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016301}/*WDI_ProcessShutdownReq*/
16302
16303/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016304 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016305========================================================================*/
16306
16307/**
16308 @brief Process Start Response function (called when a response
16309 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016310
16311 @param pWDICtx: pointer to the WLAN DAL context
16312 pEventData: pointer to the event information structure
16313
Jeff Johnson295189b2012-06-20 16:38:30 -070016314 @see
16315 @return Result of the function call
16316*/
16317WDI_Status
16318WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016319(
Jeff Johnson295189b2012-06-20 16:38:30 -070016320 WDI_ControlBlockType* pWDICtx,
16321 WDI_EventInfoType* pEventData
16322)
16323{
16324 WDI_StartRspParamsType wdiRspParams;
16325 WDI_StartRspCb wdiStartRspCb = NULL;
16326
16327 tHalMacStartRspParams* startRspParams;
16328
16329#ifndef HAL_SELF_STA_PER_BSS
16330 WDI_AddStaParams wdiAddSTAParam = {0};
16331#endif
16332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16333
Jeff Johnsone7245742012-09-05 17:12:55 -070016334 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016336 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016337 -------------------------------------------------------------------------*/
16338 if (( NULL == pEventData ) ||
16339 ( NULL == pEventData->pEventData) ||
16340 ( NULL == wdiStartRspCb ))
16341 {
16342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016343 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016344 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016346 }
16347
16348 /*-------------------------------------------------------------------------
16349 Extract response and send it to UMAC
16350 -------------------------------------------------------------------------*/
16351 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16352 {
16353 // not enough data was received
16354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016355 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016356 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 }
16360
16361 /*-------------------------------------------------------------------------
16362 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016363 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016364 -------------------------------------------------------------------------*/
16365 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16366
16367 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16368 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16369 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16370 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16371 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16372 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16373 wdiRspParams.wlanReportedVersion.major =
16374 startRspParams->wcnssWlanVersion.major;
16375 wdiRspParams.wlanReportedVersion.minor =
16376 startRspParams->wcnssWlanVersion.minor;
16377 wdiRspParams.wlanReportedVersion.version =
16378 startRspParams->wcnssWlanVersion.version;
16379 wdiRspParams.wlanReportedVersion.revision =
16380 startRspParams->wcnssWlanVersion.revision;
16381 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16382 startRspParams->wcnssCrmVersionString,
16383 sizeof(wdiRspParams.wcnssSoftwareVersion));
16384 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16385 startRspParams->wcnssWlanVersionString,
16386 sizeof(wdiRspParams.wcnssHardwareVersion));
16387 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16388
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016389 /*Save the HAL Version*/
16390 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16391
Jeff Johnson295189b2012-06-20 16:38:30 -070016392 wpalMutexAcquire(&pWDICtx->wptMutex);
16393 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16394 {
16395 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16396
16397 /*Cache the start response for further use*/
16398 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016399 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016400 sizeof(pWDICtx->wdiCachedStartRspParams));
16401
16402 }
16403 else
16404 {
16405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16406 "Failed to start device with status %s(%d)",
16407 WDI_getHALStatusMsgString(startRspParams->status),
16408 startRspParams->status);
16409
16410 /*Set the expected state transition to stopped - because the start has
16411 failed*/
16412 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16413
16414 wpalMutexRelease(&pWDICtx->wptMutex);
16415
16416 /*Notify UMAC*/
16417 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016418
Jeff Johnson295189b2012-06-20 16:38:30 -070016419 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016420 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016421
16422 /*Although the response is an error - it was processed by our function
16423 so as far as the caller is concerned this is a succesful reponse processing*/
16424 return WDI_STATUS_SUCCESS;
16425 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016426
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 wpalMutexRelease(&pWDICtx->wptMutex);
16428
16429 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16430 {
16431 /* FTM mode does not need to execute below */
16432 /* Notify UMAC */
16433 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16434 return WDI_STATUS_SUCCESS;
16435 }
16436
16437 /* START the Data transport */
16438 WDTS_startTransport(pWDICtx);
16439
16440 /*Start the STA Table !- check this logic again*/
16441 WDI_STATableStart(pWDICtx);
16442
16443#ifndef HAL_SELF_STA_PER_BSS
16444 /* Store the Self STA Index */
16445 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16446
16447 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16448 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16449 WDI_MAC_ADDR_LEN);
16450
16451 /* At this point add the self-STA */
16452
16453 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16454 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16455 /*! TO DO: wdiAddSTAParam.dpuSig */
16456 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16457 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16458 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16459
16460 //all DPU indices are the same for self STA
16461 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16462 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016463 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016464 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16465 WDI_MAC_ADDR_LEN);
16466 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16467 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16468
16469 /* Note: Since we don't get an explicit config STA request for self STA, we
16470 add the self STA upon receiving the Start response message. But the
16471 self STA entry in the table is deleted when WDI gets an explicit delete STA
16472 request */
16473 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16474#endif
16475
16476 /*Notify UMAC*/
16477 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16478
Jeff Johnsone7245742012-09-05 17:12:55 -070016479 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016480}/*WDI_ProcessStartRsp*/
16481
16482
16483/**
16484 @brief Process Stop Response function (called when a response
16485 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016486
16487 @param pWDICtx: pointer to the WLAN DAL context
16488 pEventData: pointer to the event information structure
16489
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 @see
16491 @return Result of the function call
16492*/
16493WDI_Status
16494WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016495(
Jeff Johnson295189b2012-06-20 16:38:30 -070016496 WDI_ControlBlockType* pWDICtx,
16497 WDI_EventInfoType* pEventData
16498)
16499{
16500 WDI_Status wdiStatus;
16501 WDI_StopRspCb wdiStopRspCb = NULL;
16502
Jeff Johnsone7245742012-09-05 17:12:55 -070016503 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16505
Jeff Johnsone7245742012-09-05 17:12:55 -070016506 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016509 -------------------------------------------------------------------------*/
16510 if (( NULL == pEventData ) ||
16511 ( NULL == pEventData->pEventData) ||
16512 ( NULL == wdiStopRspCb ))
16513 {
16514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 }
16519
16520 /*-------------------------------------------------------------------------
16521 Extract response and send it to UMAC
16522 -------------------------------------------------------------------------*/
16523 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16524 {
16525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016526 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016527 pEventData->uEventDataSize);
16528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 }
16531
16532 /*-------------------------------------------------------------------------
16533 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016534 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016536 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16537 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016538 sizeof(halMacStopRspMsg.stopRspParams));
16539
Jeff Johnsone7245742012-09-05 17:12:55 -070016540 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016541
16542 wpalMutexAcquire(&pWDICtx->wptMutex);
16543
16544 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 --------------------------------------------------------------------------*/
16547 if ( WDI_STATUS_SUCCESS != wdiStatus )
16548 {
16549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16550 "Failed to stop the device with status %s (%d)",
16551 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16552 halMacStopRspMsg.stopRspParams.status);
16553
Jeff Johnsone7245742012-09-05 17:12:55 -070016554 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016555 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016556
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016560
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16562
16563 /*Transition now as WDI may get preempted imediately after it sends
16564 up the Stop Response and it will not get to process the state transition
16565 from Main Rsp function*/
16566 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16567 wpalMutexRelease(&pWDICtx->wptMutex);
16568
16569 /*! TO DO: - STOP the Data transport */
16570
16571 /*Notify UMAC*/
16572 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16573
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016575}/*WDI_ProcessStopRsp*/
16576
16577/**
16578 @brief Process Close Rsp function (called when a response
16579 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016580
16581 @param pWDICtx: pointer to the WLAN DAL context
16582 pEventData: pointer to the event information structure
16583
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 @see
16585 @return Result of the function call
16586*/
16587WDI_Status
16588WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016589(
Jeff Johnson295189b2012-06-20 16:38:30 -070016590 WDI_ControlBlockType* pWDICtx,
16591 WDI_EventInfoType* pEventData
16592)
16593{
16594 /*There is no close response comming from HAL - function just kept for
16595 simmetry */
16596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016597 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016598}/*WDI_ProcessCloseRsp*/
16599
16600
16601/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016602 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016603============================================================================*/
16604
16605/**
16606 @brief Process Init Scan Rsp function (called when a response
16607 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016608
16609 @param pWDICtx: pointer to the WLAN DAL context
16610 pEventData: pointer to the event information structure
16611
Jeff Johnson295189b2012-06-20 16:38:30 -070016612 @see
16613 @return Result of the function call
16614*/
16615WDI_Status
16616WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016617(
Jeff Johnson295189b2012-06-20 16:38:30 -070016618 WDI_ControlBlockType* pWDICtx,
16619 WDI_EventInfoType* pEventData
16620)
16621{
16622 WDI_Status wdiStatus;
16623 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016624 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016625 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16627
16628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 -------------------------------------------------------------------------*/
16631 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16632 ( NULL == pEventData->pEventData))
16633 {
16634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016635 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016638 }
16639
16640 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16641 if( NULL == wdiInitScanRspCb)
16642 {
16643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016644 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 }
16648
16649 /*-------------------------------------------------------------------------
16650 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016651 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016653 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16654 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 sizeof(halInitScanRspMsg.initScanRspParams));
16656
Jeff Johnsone7245742012-09-05 17:12:55 -070016657 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016658
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016659 if (pWDICtx->bInBmps && (WDI_STATUS_SUCCESS == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070016660 {
16661 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016662 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16663 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016665 "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 -080016666 WDI_ASSERT(0);
16667 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016668 }
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016669 else
16670 {
16671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16672 "Error returned WDI_ProcessInitScanRspi:%d BMPS%d",
16673 wdiStatus, pWDICtx->bInBmps);
16674 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016675
16676 /*Notify UMAC*/
16677 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16678
Jeff Johnsone7245742012-09-05 17:12:55 -070016679 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016680}/*WDI_ProcessInitScanRsp*/
16681
16682
16683/**
16684 @brief Process Start Scan Rsp function (called when a response
16685 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016686
16687 @param pWDICtx: pointer to the WLAN DAL context
16688 pEventData: pointer to the event information structure
16689
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 @see
16691 @return Result of the function call
16692*/
16693WDI_Status
16694WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016695(
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 WDI_ControlBlockType* pWDICtx,
16697 WDI_EventInfoType* pEventData
16698)
16699{
16700 WDI_StartScanRspParamsType wdiStartScanParams;
16701 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016702
16703 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16705
16706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016708 -------------------------------------------------------------------------*/
16709 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16710 ( NULL == pEventData->pEventData))
16711 {
16712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016713 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 }
16717
16718 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16719 if( NULL == wdiStartScanRspCb)
16720 {
16721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016722 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 }
16726
16727 /*-------------------------------------------------------------------------
16728 Extract response and send it to UMAC
16729 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016730 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16731 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 sizeof(halStartScanRspMsg.startScanRspParams));
16733
16734 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16735 halStartScanRspMsg.startScanRspParams.status);
16736#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016737 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016739 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 halStartScanRspMsg.startScanRspParams.startTSF,
16741 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016742#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016743
16744 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16745 {
16746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16747 "Start scan failed with status %s (%d)",
16748 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16749 halStartScanRspMsg.startScanRspParams.status);
16750 /* send the status to UMAC, don't return from here*/
16751 }
16752
16753 /*Notify UMAC*/
16754 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16755
Jeff Johnsone7245742012-09-05 17:12:55 -070016756 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016757
16758}/*WDI_ProcessStartScanRsp*/
16759
16760
16761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016764
16765 @param pWDICtx: pointer to the WLAN DAL context
16766 pEventData: pointer to the event information structure
16767
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 @see
16769 @return Result of the function call
16770*/
16771WDI_Status
16772WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016773(
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 WDI_ControlBlockType* pWDICtx,
16775 WDI_EventInfoType* pEventData
16776)
16777{
16778 WDI_Status wdiStatus;
16779 tHalEndScanRspMsg halEndScanRspMsg;
16780 WDI_EndScanRspCb wdiEndScanRspCb;
16781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16782
16783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 -------------------------------------------------------------------------*/
16786 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16787 ( NULL == pEventData->pEventData))
16788 {
16789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016793 }
16794
16795 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16796
16797 /*-------------------------------------------------------------------------
16798 Extract response and send it to UMAC
16799 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016800 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16801 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016802 sizeof(halEndScanRspMsg.endScanRspParams));
16803
Jeff Johnsone7245742012-09-05 17:12:55 -070016804 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016805
16806 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16807 {
16808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16809 "End Scan failed with status %s (%d )",
16810 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16811 halEndScanRspMsg.endScanRspParams.status);
16812 /* send the status to UMAC, don't return from here*/
16813 }
16814
16815 /*Notify UMAC*/
16816 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16817
Jeff Johnsone7245742012-09-05 17:12:55 -070016818 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016819}/*WDI_ProcessEndScanRsp*/
16820
16821
16822/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016823 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016825
16826 @param pWDICtx: pointer to the WLAN DAL context
16827 pEventData: pointer to the event information structure
16828
Jeff Johnson295189b2012-06-20 16:38:30 -070016829 @see
16830 @return Result of the function call
16831*/
16832WDI_Status
16833WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016834(
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 WDI_ControlBlockType* pWDICtx,
16836 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016837)
Jeff Johnson295189b2012-06-20 16:38:30 -070016838{
16839 WDI_Status wdiStatus;
16840 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016841
16842 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16844
16845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016846 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 -------------------------------------------------------------------------*/
16848 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16849 ( NULL == pEventData->pEventData))
16850 {
16851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 }
16856
16857 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16858
16859 /*-------------------------------------------------------------------------
16860 Extract response and send it to UMAC
16861 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016862 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16863 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16865
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016867
16868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016869 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 halFinishScanRspMsg.finishScanRspParams.status);
16871
16872 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16873 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16874 {
16875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16876 "Finish Scan failed with status %s (%d)",
16877 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16878 halFinishScanRspMsg.finishScanRspParams.status);
16879 /* send the status to UMAC, don't return from here*/
16880 }
16881
16882 /*Notify UMAC*/
16883 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16884
Jeff Johnsone7245742012-09-05 17:12:55 -070016885 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016886}/*WDI_ProcessFinishScanRsp*/
16887
16888/**
16889 @brief Process Join Response function (called when a response
16890 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016891
16892 @param pWDICtx: pointer to the WLAN DAL context
16893 pEventData: pointer to the event information structure
16894
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 @see
16896 @return Result of the function call
16897*/
16898WDI_Status
16899WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016900(
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 WDI_ControlBlockType* pWDICtx,
16902 WDI_EventInfoType* pEventData
16903)
16904{
16905 WDI_Status wdiStatus;
16906 WDI_JoinRspCb wdiJoinRspCb;
16907 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016908
16909 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16911
16912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016914 -------------------------------------------------------------------------*/
16915 if (( NULL == pWDICtx ) ||
16916 ( NULL == pWDICtx->pfncRspCB ) ||
16917 ( NULL == pEventData ) ||
16918 ( NULL == pEventData->pEventData))
16919 {
16920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016924 }
16925
16926 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16927
16928 /*-------------------------------------------------------------------------
16929 Extract response and send it to UMAC
16930 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016931 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16932 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016933 sizeof(halJoinRspMsg.joinRspParams));
16934
Jeff Johnsone7245742012-09-05 17:12:55 -070016935 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016936
16937 wpalMutexAcquire(&pWDICtx->wptMutex);
16938
16939 /*-----------------------------------------------------------------------
16940 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016941 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016942 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016943 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16945 {
16946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016947 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16948 "association no longer in progress %d - mysterious HAL response",
16949 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016950
Jeff Johnsone7245742012-09-05 17:12:55 -070016951 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016952 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016953 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016954 }
16955
16956 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16957
16958 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016960 -----------------------------------------------------------------------*/
16961 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16962 {
16963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16964 "Join only allowed in Joining state - failure state is %d "
16965 "strange HAL response", pBSSSes->wdiAssocState);
16966
Jeff Johnsone7245742012-09-05 17:12:55 -070016967 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16968
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016971 }
16972
16973
16974 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016975 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016976 -----------------------------------------------------------------------*/
16977 if ( WDI_STATUS_SUCCESS != wdiStatus )
16978 {
16979 /*Association was failed by HAL - remove session*/
16980 WDI_DeleteSession(pWDICtx, pBSSSes);
16981
16982 /*Association no longer in progress */
16983 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16984
16985 /*Association no longer in progress - prepare pending assoc for processing*/
16986 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016987
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 }
16989 else
16990 {
16991 /*Transition to state Joining - this may be redundant as we are supposed
16992 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016993 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016994 }
16995
16996 wpalMutexRelease(&pWDICtx->wptMutex);
16997
16998 /*Notify UMAC*/
16999 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17000
Jeff Johnsone7245742012-09-05 17:12:55 -070017001 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017002}/*WDI_ProcessJoinRsp*/
17003
17004
17005/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017006 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017008
17009 @param pWDICtx: pointer to the WLAN DAL context
17010 pEventData: pointer to the event information structure
17011
Jeff Johnson295189b2012-06-20 16:38:30 -070017012 @see
17013 @return Result of the function call
17014*/
17015WDI_Status
17016WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017017(
Jeff Johnson295189b2012-06-20 16:38:30 -070017018 WDI_ControlBlockType* pWDICtx,
17019 WDI_EventInfoType* pEventData
17020)
17021{
17022 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
17023 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017024 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017025 WDI_BSSSessionType* pBSSSes = NULL;
17026
Jeff Johnsone7245742012-09-05 17:12:55 -070017027 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 WDI_AddStaParams wdiBcastAddSTAParam = {0};
17029 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070017030
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17032
17033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 -------------------------------------------------------------------------*/
17036 if (( NULL == pEventData ) ||
17037 ( NULL == pEventData->pEventData))
17038 {
17039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 }
17044
17045 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
17046
17047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17051 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 sizeof(halConfigBssRspMsg.configBssRspParams));
17053
17054 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17055 halConfigBssRspMsg.configBssRspParams.status);
17056 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17057 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017058 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017059 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17060 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017061
Jeff Johnson295189b2012-06-20 16:38:30 -070017062 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017063
17064 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017065 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017066
17067 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017069
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017071
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17075 #endif
17076 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17077 halConfigBssRspMsg.configBssRspParams.staMac,
17078 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017079
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 wpalMutexAcquire(&pWDICtx->wptMutex);
17081 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017082 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017084 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17085 wdiConfigBSSParams.macBSSID,
17086 &pBSSSes);
17087
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 /*-----------------------------------------------------------------------
17089 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 -----------------------------------------------------------------------*/
17092 if ( NULL == pBSSSes )
17093 {
17094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17095 "Association sequence for this BSS does not yet exist "
17096 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017097
17098 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17099
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017101 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017103
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 /*Save data for this BSS*/
17105 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17106 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017109 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017111 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017113 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017115 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17117 pBSSSes->bcastStaIdx =
17118 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017119
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017121
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 /*-------------------------------------------------------------------------
17123 Add Peer STA
17124 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017125 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017126 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17127 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017128
Jeff Johnson295189b2012-06-20 16:38:30 -070017129 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017130 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017131 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 wdiAddSTAParam.ucHTCapable =
17133 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17134 wdiAddSTAParam.ucStaType =
17135 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17136
Jeff Johnson295189b2012-06-20 16:38:30 -070017137 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017138 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17139 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017140 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017141
17142 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17143 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17144 WDI_MAC_ADDR_LEN);
17145
Jeff Johnson295189b2012-06-20 16:38:30 -070017146 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017147 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017149 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017150 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017151 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017152 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017153 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017154 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017155 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017156 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017157 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017159
Jeff Johnson295189b2012-06-20 16:38:30 -070017160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17161 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017162
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17164 /*-------------------------------------------------------------------------
17165 Add Broadcast STA only in AP mode
17166 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017167 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017168 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 {
17170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17171 "Add BCAST STA to table for index: %d",
17172 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017173
17174 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017176
Jeff Johnson295189b2012-06-20 16:38:30 -070017177 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17178 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17179 }
17180 wpalMutexRelease(&pWDICtx->wptMutex);
17181 }
17182 else
17183 {
17184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17185 "Config BSS RSP failed with status : %s(%d)",
17186 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017187 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017188 halConfigBssRspMsg.configBssRspParams.status);
17189
Jeff Johnsone7245742012-09-05 17:12:55 -070017190
Jeff Johnson295189b2012-06-20 16:38:30 -070017191 /*Association was failed by HAL - remove session*/
17192 WDI_DeleteSession(pWDICtx, pBSSSes);
17193
17194 /*Association no longer in progress */
17195 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17196
17197 /*Association no longer in progress - prepare pending assoc for processing*/
17198 WDI_DequeueAssocRequest(pWDICtx);
17199
17200 }
17201
17202 /*Notify UMAC*/
17203 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17204
Jeff Johnsone7245742012-09-05 17:12:55 -070017205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017206}/*WDI_ProcessConfigBSSRsp*/
17207
17208
17209/**
17210 @brief Process Del BSS Response function (called when a response
17211 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017212
17213 @param pWDICtx: pointer to the WLAN DAL context
17214 pEventData: pointer to the event information structure
17215
Jeff Johnson295189b2012-06-20 16:38:30 -070017216 @see
17217 @return Result of the function call
17218*/
17219WDI_Status
17220WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017221(
Jeff Johnson295189b2012-06-20 16:38:30 -070017222 WDI_ControlBlockType* pWDICtx,
17223 WDI_EventInfoType* pEventData
17224)
17225{
17226 WDI_DelBSSRspParamsType wdiDelBSSParams;
17227 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017228 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017229 WDI_BSSSessionType* pBSSSes = NULL;
17230
Jeff Johnsone7245742012-09-05 17:12:55 -070017231 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17233
17234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 -------------------------------------------------------------------------*/
17237 if (( NULL == pEventData ) ||
17238 ( NULL == pEventData->pEventData))
17239 {
17240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 }
17245
17246 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17247
17248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17252 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 sizeof(halDelBssRspMsg.deleteBssRspParams));
17254
17255
17256 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017257 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017258
17259 wpalMutexAcquire(&pWDICtx->wptMutex);
17260
17261 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017262 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017264 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17265 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17266 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017267
17268 /*-----------------------------------------------------------------------
17269 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017270 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017271 -----------------------------------------------------------------------*/
17272 if ( NULL == pBSSSes )
17273 {
17274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17275 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017276 "association no longer in progress - mysterious HAL response");
17277
17278 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17279
17280 wpalMutexRelease(&pWDICtx->wptMutex);
17281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017282 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017283
17284 /*Extract BSSID for the response to UMAC*/
17285 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17286 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17287
17288 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17289
17290 /*-----------------------------------------------------------------------
17291 The current session will be deleted
17292 -----------------------------------------------------------------------*/
17293 WDI_DeleteSession(pWDICtx, pBSSSes);
17294
17295
17296 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017297 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17298 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017299 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017300 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017301 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017302
17303 /* Delete the STA's in this BSS */
17304 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17305
Jeff Johnson295189b2012-06-20 16:38:30 -070017306 wpalMutexRelease(&pWDICtx->wptMutex);
17307
17308 /*Notify UMAC*/
17309 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17310
Jeff Johnsone7245742012-09-05 17:12:55 -070017311 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017312}/*WDI_ProcessDelBSSRsp*/
17313
17314/**
17315 @brief Process Post Assoc Rsp function (called when a response
17316 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017317
17318 @param pWDICtx: pointer to the WLAN DAL context
17319 pEventData: pointer to the event information structure
17320
Jeff Johnson295189b2012-06-20 16:38:30 -070017321 @see
17322 @return Result of the function call
17323*/
17324WDI_Status
17325WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017326(
Jeff Johnson295189b2012-06-20 16:38:30 -070017327 WDI_ControlBlockType* pWDICtx,
17328 WDI_EventInfoType* pEventData
17329)
17330{
17331 WDI_PostAssocRspParamsType wdiPostAssocParams;
17332 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017333 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017335 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17337
17338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017340 -------------------------------------------------------------------------*/
17341 if (( NULL == pEventData ) ||
17342 ( NULL == pEventData->pEventData))
17343 {
17344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017348 }
17349
17350 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17351
17352 /*-------------------------------------------------------------------------
17353 Extract response and send it to UMAC
17354 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017355 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17356 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 sizeof(halPostAssocRspMsg.postAssocRspParams));
17358
17359 /*Extract the Post Assoc STA Params */
17360
Jeff Johnsone7245742012-09-05 17:12:55 -070017361 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017362 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017363 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017364 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017365 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017366 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17367
Jeff Johnsone7245742012-09-05 17:12:55 -070017368 wdiPostAssocParams.wdiStatus =
17369 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017370
17371 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17372 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17374 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 WDI_MAC_ADDR_LEN);
17376
17377 /* Extract Post Assoc BSS Params */
17378
Jeff Johnsone7245742012-09-05 17:12:55 -070017379 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17380 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17381 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017382
17383 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17384 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17387 .macSTA, WDI_MAC_ADDR_LEN);
17388
Jeff Johnsone7245742012-09-05 17:12:55 -070017389 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017390 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17391
Jeff Johnsone7245742012-09-05 17:12:55 -070017392 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17394
17395 wdiPostAssocParams.bssParams.ucBSSIdx =
17396 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17397
Jeff Johnsone7245742012-09-05 17:12:55 -070017398 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17400
17401 wpalMutexAcquire(&pWDICtx->wptMutex);
17402
17403 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017404 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017406 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017408 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017409
17410 /*-----------------------------------------------------------------------
17411 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017412 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017413 -----------------------------------------------------------------------*/
17414 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17417 {
17418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17419 "Association sequence for this BSS does not yet exist or "
17420 "association no longer in progress - mysterious HAL response");
17421
Jeff Johnsone7245742012-09-05 17:12:55 -070017422 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17423
Jeff Johnson295189b2012-06-20 16:38:30 -070017424 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017426 }
17427
17428 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017429 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 -----------------------------------------------------------------------*/
17431 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17432 {
17433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17434 "Post Assoc not allowed before JOIN - failing request "
17435 "strange HAL response");
17436
Jeff Johnsone7245742012-09-05 17:12:55 -070017437 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17438
Jeff Johnson295189b2012-06-20 16:38:30 -070017439 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017440 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 }
17442
17443 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017444 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017445 -----------------------------------------------------------------------*/
17446 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17447 {
17448 /*Association was failed by HAL - remove session*/
17449 WDI_DeleteSession(pWDICtx, pBSSSes);
17450 }
17451 else
17452 {
17453 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017454 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017455
17456 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017457 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017458 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017460 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017461 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017462 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017464 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17465
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017467 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17468 }
17469
17470 /*Association no longer in progress */
17471 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17472
17473 /*Association no longer in progress - prepare pending assoc for processing*/
17474 WDI_DequeueAssocRequest(pWDICtx);
17475
17476 wpalMutexRelease(&pWDICtx->wptMutex);
17477
17478 /*Notify UMAC*/
17479 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17480
Jeff Johnsone7245742012-09-05 17:12:55 -070017481 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017482}/*WDI_ProcessPostAssocRsp*/
17483
17484/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017485 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017486 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017487
17488 @param pWDICtx: pointer to the WLAN DAL context
17489 pEventData: pointer to the event information structure
17490
Jeff Johnson295189b2012-06-20 16:38:30 -070017491 @see
17492 @return Result of the function call
17493*/
17494WDI_Status
17495WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017496(
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 WDI_ControlBlockType* pWDICtx,
17498 WDI_EventInfoType* pEventData
17499)
17500{
17501 WDI_DelSTARspParamsType wdiDelSTARsp;
17502 WDI_DelSTARspCb wdiDelSTARspCb;
17503 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017504 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17506
17507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 -------------------------------------------------------------------------*/
17510 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17511 ( NULL == pEventData->pEventData))
17512 {
17513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 }
17518
17519 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17520
17521 /*-------------------------------------------------------------------------
17522 Extract response and send it to UMAC
17523 -------------------------------------------------------------------------*/
17524 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017525 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 sizeof(halDelStaRspMsg.delStaRspParams));
17527
17528 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017529 wdiDelSTARsp.wdiStatus =
17530 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017531
17532 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17533
17534 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17535 if(staType == WDI_STA_ENTRY_SELF)
17536 {
17537 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17538
17539 /* At this point add the self-STA */
17540
17541 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17542 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17543 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17544
17545#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17546#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17547
17548 //all DPU indices are the same for self STA
17549 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17550 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17551 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17552 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17553 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17554 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017555
17556 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017557 }
17558 else
17559 {
17560 //Delete the station in the table
17561 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17562 }
17563
17564 /*Notify UMAC*/
17565 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17566
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017568}/*WDI_ProcessDelSTARsp*/
17569
17570
17571/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017572 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017573==========================================================================*/
17574
17575/**
17576 @brief Process Set BSS Key Rsp function (called when a response
17577 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017578
17579 @param pWDICtx: pointer to the WLAN DAL context
17580 pEventData: pointer to the event information structure
17581
Jeff Johnson295189b2012-06-20 16:38:30 -070017582 @see
17583 @return Result of the function call
17584*/
17585WDI_Status
17586WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017587(
Jeff Johnson295189b2012-06-20 16:38:30 -070017588 WDI_ControlBlockType* pWDICtx,
17589 WDI_EventInfoType* pEventData
17590)
17591{
17592 WDI_Status wdiStatus;
17593 eHalStatus halStatus;
17594 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17596
17597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017599 -------------------------------------------------------------------------*/
17600 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17601 ( NULL == pEventData->pEventData))
17602 {
17603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017607 }
17608
17609 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17610
17611 /*-------------------------------------------------------------------------
17612 Extract response and send it to UMAC
17613 -------------------------------------------------------------------------*/
17614 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017615 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017616
17617 if ( eHAL_STATUS_SUCCESS != halStatus )
17618 {
17619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17620 "Set BSS Key failed with status %s (%d)",
17621 WDI_getHALStatusMsgString(halStatus),
17622 halStatus);
17623 /* send the status to UMAC, don't return from here*/
17624 }
17625
17626 /*Notify UMAC*/
17627 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17628
Jeff Johnsone7245742012-09-05 17:12:55 -070017629 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017630}/*WDI_ProcessSetBssKeyRsp*/
17631
17632/**
17633 @brief Process Remove BSS Key Rsp function (called when a response
17634 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017635
17636 @param pWDICtx: pointer to the WLAN DAL context
17637 pEventData: pointer to the event information structure
17638
Jeff Johnson295189b2012-06-20 16:38:30 -070017639 @see
17640 @return Result of the function call
17641*/
17642WDI_Status
17643WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017644(
Jeff Johnson295189b2012-06-20 16:38:30 -070017645 WDI_ControlBlockType* pWDICtx,
17646 WDI_EventInfoType* pEventData
17647)
17648{
17649 WDI_Status wdiStatus;
17650 eHalStatus halStatus;
17651 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17653
17654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017655 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017656 -------------------------------------------------------------------------*/
17657 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17658 ( NULL == pEventData->pEventData))
17659 {
17660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017664 }
17665
17666 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17667
17668 /*-------------------------------------------------------------------------
17669 Extract response and send it to UMAC
17670 -------------------------------------------------------------------------*/
17671 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017672 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017673
17674 if ( eHAL_STATUS_SUCCESS != halStatus )
17675 {
17676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17677 "Remove BSS Key failed with status %s (%d )",
17678 WDI_getHALStatusMsgString(halStatus),
17679 halStatus);
17680 /* send the status to UMAC, don't return from here*/
17681 }
17682
17683 /*Notify UMAC*/
17684 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17685
Jeff Johnsone7245742012-09-05 17:12:55 -070017686 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017687}/*WDI_ProcessSetBssKeyRsp*/
17688
17689
17690/**
17691 @brief Process Set STA Key Rsp function (called when a response
17692 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017693
17694 @param pWDICtx: pointer to the WLAN DAL context
17695 pEventData: pointer to the event information structure
17696
Jeff Johnson295189b2012-06-20 16:38:30 -070017697 @see
17698 @return Result of the function call
17699*/
17700WDI_Status
17701WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017702(
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 WDI_ControlBlockType* pWDICtx,
17704 WDI_EventInfoType* pEventData
17705)
17706{
17707 WDI_Status wdiStatus;
17708 eHalStatus halStatus;
17709 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17711
17712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017713 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017714 -------------------------------------------------------------------------*/
17715 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17716 ( NULL == pEventData->pEventData))
17717 {
17718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017722 }
17723
17724 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17725
17726 /*-------------------------------------------------------------------------
17727 Extract response and send it to UMAC
17728 -------------------------------------------------------------------------*/
17729 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017730 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017731
17732 if ( eHAL_STATUS_SUCCESS != halStatus )
17733 {
17734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17735 "Set STA Key failed with status %s (%d)",
17736 WDI_getHALStatusMsgString(halStatus),
17737 halStatus);
17738 /* send the status to UMAC, don't return from here*/
17739 }
17740
17741 /*Notify UMAC*/
17742 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17743
Jeff Johnsone7245742012-09-05 17:12:55 -070017744 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017745}/*WDI_ProcessSetSTAKeyRsp*/
17746
17747/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017748 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017750
17751 @param pWDICtx: pointer to the WLAN DAL context
17752 pEventData: pointer to the event information structure
17753
Jeff Johnson295189b2012-06-20 16:38:30 -070017754 @see
17755 @return Result of the function call
17756*/
17757WDI_Status
17758WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017759(
Jeff Johnson295189b2012-06-20 16:38:30 -070017760 WDI_ControlBlockType* pWDICtx,
17761 WDI_EventInfoType* pEventData
17762)
17763{
17764 WDI_Status wdiStatus;
17765 eHalStatus halStatus;
17766 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17768
17769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 -------------------------------------------------------------------------*/
17772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17773 ( NULL == pEventData->pEventData))
17774 {
17775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 }
17780
17781 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17782
17783 /*-------------------------------------------------------------------------
17784 Extract response and send it to UMAC
17785 -------------------------------------------------------------------------*/
17786 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017787 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017788
17789 if ( eHAL_STATUS_SUCCESS != halStatus )
17790 {
17791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17792 "Remove STA Key failed with status %s (%d)",
17793 WDI_getHALStatusMsgString(halStatus),
17794 halStatus);
17795 /* send the status to UMAC, don't return from here*/
17796 }
17797
17798 /*Notify UMAC*/
17799 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17800
Jeff Johnsone7245742012-09-05 17:12:55 -070017801 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017802}/*WDI_ProcessRemoveStaKeyRsp*/
17803
17804/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017805 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017806 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017807
17808 @param pWDICtx: pointer to the WLAN DAL context
17809 pEventData: pointer to the event information structure
17810
Jeff Johnson295189b2012-06-20 16:38:30 -070017811 @see
17812 @return Result of the function call
17813*/
17814WDI_Status
17815WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017816(
Jeff Johnson295189b2012-06-20 16:38:30 -070017817 WDI_ControlBlockType* pWDICtx,
17818 WDI_EventInfoType* pEventData
17819)
17820{
17821 WDI_Status wdiStatus;
17822 eHalStatus halStatus;
17823 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17825
17826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017827 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017828 -------------------------------------------------------------------------*/
17829 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17830 ( NULL == pEventData->pEventData))
17831 {
17832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017833 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017836 }
17837
17838 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17839
17840 /*-------------------------------------------------------------------------
17841 Extract response and send it to UMAC
17842 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 wpalMemoryCopy( &halStatus,
17844 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 sizeof(halStatus));
17846
Jeff Johnsone7245742012-09-05 17:12:55 -070017847 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017848
17849 if ( eHAL_STATUS_SUCCESS != halStatus )
17850 {
17851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17852 "Set STA Key failed with status %s (%d)",
17853 WDI_getHALStatusMsgString(halStatus),
17854 halStatus);
17855 /* send the status to UMAC, don't return from here*/
17856 }
17857
17858 /*Notify UMAC*/
17859 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17860
Jeff Johnsone7245742012-09-05 17:12:55 -070017861 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017862}/*WDI_ProcessSetSTABcastKeyRsp*/
17863
17864/**
17865 @brief Process Remove STA Bcast Key Rsp function (called when a
17866 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017867
17868 @param pWDICtx: pointer to the WLAN DAL context
17869 pEventData: pointer to the event information structure
17870
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 @see
17872 @return Result of the function call
17873*/
17874WDI_Status
17875WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017876(
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 WDI_ControlBlockType* pWDICtx,
17878 WDI_EventInfoType* pEventData
17879)
17880{
17881 WDI_Status wdiStatus;
17882 eHalStatus halStatus;
17883 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17885
17886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017888 -------------------------------------------------------------------------*/
17889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17890 ( NULL == pEventData->pEventData))
17891 {
17892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017896 }
17897
17898 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17899
17900 /*-------------------------------------------------------------------------
17901 Extract response and send it to UMAC
17902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017903 wpalMemoryCopy( &halStatus,
17904 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 sizeof(halStatus));
17906
Jeff Johnsone7245742012-09-05 17:12:55 -070017907 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017908
17909 if ( eHAL_STATUS_SUCCESS != halStatus )
17910 {
17911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17912 "Remove STA Key failed with status %s (%d)",
17913 WDI_getHALStatusMsgString(halStatus),
17914 halStatus);
17915 /* send the status to UMAC, don't return from here*/
17916 }
17917
17918 /*Notify UMAC*/
17919 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17920
Jeff Johnsone7245742012-09-05 17:12:55 -070017921 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017922}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17923
17924
17925/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017926 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017927==========================================================================*/
17928
17929/**
17930 @brief Process Add TSpec Rsp function (called when a response
17931 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017932
17933 @param pWDICtx: pointer to the WLAN DAL context
17934 pEventData: pointer to the event information structure
17935
Jeff Johnson295189b2012-06-20 16:38:30 -070017936 @see
17937 @return Result of the function call
17938*/
17939WDI_Status
17940WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017941(
Jeff Johnson295189b2012-06-20 16:38:30 -070017942 WDI_ControlBlockType* pWDICtx,
17943 WDI_EventInfoType* pEventData
17944)
17945{
17946 WDI_Status wdiStatus;
17947 eHalStatus halStatus;
17948 WDI_AddTsRspCb wdiAddTsRspCb;
17949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17950
17951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 -------------------------------------------------------------------------*/
17954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17955 ( NULL == pEventData->pEventData))
17956 {
17957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 }
17962
17963 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17964
17965 /*-------------------------------------------------------------------------
17966 Extract response and send it to UMAC
17967 -------------------------------------------------------------------------*/
17968 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017969 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017970
17971 /*Notify UMAC*/
17972 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17973
Jeff Johnsone7245742012-09-05 17:12:55 -070017974 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017975}/*WDI_ProcessAddTSpecRsp*/
17976
17977
Sunil Duttbd736ed2014-05-26 21:19:41 +053017978
17979#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17980
17981WDI_Status
17982WDI_ProcessLLStatsSetRsp
17983(
17984 WDI_ControlBlockType* pWDICtx,
17985 WDI_EventInfoType* pEventData
17986)
17987{
17988 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17989
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053017990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053017991 "%s: Enter ", __func__);
17992 /*-------------------------------------------------------------------------
17993 Sanity check
17994 -------------------------------------------------------------------------*/
17995 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17996 ( NULL == pEventData->pEventData))
17997 {
17998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17999 "%s: Invalid parameters", __func__);
18000 WDI_ASSERT(0);
18001 return WDI_STATUS_E_FAILURE;
18002 }
18003
18004 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
18005
18006 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18007
18008 return WDI_STATUS_SUCCESS;
18009}
18010
18011WDI_Status
18012WDI_ProcessLLStatsGetRsp
18013(
18014 WDI_ControlBlockType* pWDICtx,
18015 WDI_EventInfoType* pEventData
18016)
18017{
18018 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
18019
18020 /*-------------------------------------------------------------------------
18021 Sanity check
18022 -------------------------------------------------------------------------*/
18023 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18024 ( NULL == pEventData->pEventData))
18025 {
18026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18027 "%s: Invalid parameters", __func__);
18028 WDI_ASSERT(0);
18029 return WDI_STATUS_E_FAILURE;
18030 }
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018032 "%s: Enter ", __func__);
18033
18034 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
18035
18036 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18037
18038 return WDI_STATUS_SUCCESS;
18039}
18040
18041WDI_Status
18042WDI_ProcessLLStatsClearRsp
18043(
18044 WDI_ControlBlockType* pWDICtx,
18045 WDI_EventInfoType* pEventData
18046)
18047{
18048 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18049
18050 /*-------------------------------------------------------------------------
18051 Sanity check
18052 -------------------------------------------------------------------------*/
18053 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18054 ( NULL == pEventData->pEventData))
18055 {
18056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18057 "%s: Invalid parameters", __func__);
18058 WDI_ASSERT(0);
18059 return WDI_STATUS_E_FAILURE;
18060 }
18061
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018063 "%s: CLEAR RESPONSE CALL BACK", __func__);
18064 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18065
18066 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18067
18068 return WDI_STATUS_SUCCESS;
18069}
18070#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18071
Jeff Johnson295189b2012-06-20 16:38:30 -070018072/**
18073 @brief Process Del TSpec Rsp function (called when a response
18074 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018075
18076 @param pWDICtx: pointer to the WLAN DAL context
18077 pEventData: pointer to the event information structure
18078
Jeff Johnson295189b2012-06-20 16:38:30 -070018079 @see
18080 @return Result of the function call
18081*/
18082WDI_Status
18083WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018084(
Jeff Johnson295189b2012-06-20 16:38:30 -070018085 WDI_ControlBlockType* pWDICtx,
18086 WDI_EventInfoType* pEventData
18087)
18088{
18089 WDI_Status wdiStatus;
18090 eHalStatus halStatus;
18091 WDI_DelTsRspCb wdiDelTsRspCb;
18092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18093
18094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 -------------------------------------------------------------------------*/
18097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18098 ( NULL == pEventData->pEventData))
18099 {
18100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018104 }
18105
18106 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18107
18108 /*-------------------------------------------------------------------------
18109 Extract response and send it to UMAC
18110 -------------------------------------------------------------------------*/
18111 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018112 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018113
18114 /*Notify UMAC*/
18115 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18116
Jeff Johnsone7245742012-09-05 17:12:55 -070018117 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018118}/*WDI_ProcessDelTSpecRsp*/
18119
18120/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018121 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018122 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018123
18124 @param pWDICtx: pointer to the WLAN DAL context
18125 pEventData: pointer to the event information structure
18126
Jeff Johnson295189b2012-06-20 16:38:30 -070018127 @see
18128 @return Result of the function call
18129*/
18130WDI_Status
18131WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018132(
Jeff Johnson295189b2012-06-20 16:38:30 -070018133 WDI_ControlBlockType* pWDICtx,
18134 WDI_EventInfoType* pEventData
18135)
18136{
18137 WDI_Status wdiStatus;
18138 eHalStatus halStatus;
18139 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18141
18142 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018143 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018144 -------------------------------------------------------------------------*/
18145 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18146 ( NULL == pEventData->pEventData))
18147 {
18148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018149 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018152 }
18153
18154 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18155
18156 /*-------------------------------------------------------------------------
18157 Extract response and send it to UMAC
18158 -------------------------------------------------------------------------*/
18159 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018160 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018161
18162 /*Notify UMAC*/
18163 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18164
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018166}/*WDI_ProcessUpdateEDCAParamsRsp*/
18167
18168
18169/**
18170 @brief Process Add BA Rsp function (called when a response
18171 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018172
18173 @param pWDICtx: pointer to the WLAN DAL context
18174 pEventData: pointer to the event information structure
18175
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 @see
18177 @return Result of the function call
18178*/
18179WDI_Status
18180WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018181(
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 WDI_ControlBlockType* pWDICtx,
18183 WDI_EventInfoType* pEventData
18184)
18185{
18186 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
18187
18188 tAddBASessionRspParams halBASessionRsp;
18189 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18190
Jeff Johnsone7245742012-09-05 17:12:55 -070018191
Jeff Johnson295189b2012-06-20 16:38:30 -070018192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18193
18194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018195 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018196 -------------------------------------------------------------------------*/
18197 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18198 ( NULL == pEventData->pEventData))
18199 {
18200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 }
18205
18206 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18207
18208 /*-------------------------------------------------------------------------
18209 Extract response and send it to UMAC
18210 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018211 wpalMemoryCopy( &halBASessionRsp,
18212 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018213 sizeof(halBASessionRsp));
18214
18215 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18216
Jeff Johnson43971f52012-07-17 12:26:56 -070018217 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018218 {
18219 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18220 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18221 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18222 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18223 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18224 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18225 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18226 }
18227
18228 /*Notify UMAC*/
18229 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18230
Jeff Johnsone7245742012-09-05 17:12:55 -070018231 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018232}/*WDI_ProcessAddSessionBARsp*/
18233
18234
18235/**
18236 @brief Process Del BA Rsp function (called when a response
18237 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018238
18239 @param pWDICtx: pointer to the WLAN DAL context
18240 pEventData: pointer to the event information structure
18241
Jeff Johnson295189b2012-06-20 16:38:30 -070018242 @see
18243 @return Result of the function call
18244*/
18245WDI_Status
18246WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018247(
Jeff Johnson295189b2012-06-20 16:38:30 -070018248 WDI_ControlBlockType* pWDICtx,
18249 WDI_EventInfoType* pEventData
18250)
18251{
18252 WDI_Status wdiStatus;
18253 eHalStatus halStatus;
18254 WDI_DelBARspCb wdiDelBARspCb;
18255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18256
18257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 -------------------------------------------------------------------------*/
18260 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18261 ( NULL == pEventData->pEventData))
18262 {
18263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018267 }
18268
18269 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18270
18271 /*-------------------------------------------------------------------------
18272 Extract response and send it to UMAC
18273 -------------------------------------------------------------------------*/
18274 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018275 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018276
18277 if ( eHAL_STATUS_SUCCESS == halStatus )
18278 {
18279 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18280 }
18281
18282 /*Notify UMAC*/
18283 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18284
Jeff Johnsone7245742012-09-05 17:12:55 -070018285 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018286}/*WDI_ProcessDelBARsp*/
18287
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018288#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018289/**
18290 @brief Process TSM Stats Rsp function (called when a response
18291 is being received over the bus from HAL)
18292
18293 @param pWDICtx: pointer to the WLAN DAL context
18294 pEventData: pointer to the event information structure
18295
18296 @see
18297 @return Result of the function call
18298*/
18299WDI_Status
18300WDI_ProcessTsmStatsRsp
18301(
18302 WDI_ControlBlockType* pWDICtx,
18303 WDI_EventInfoType* pEventData
18304)
18305{
18306 WDI_TsmRspCb wdiTsmStatsRspCb;
18307 tTsmStatsRspMsg halTsmStatsRspMsg;
18308 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18310
18311 /*-------------------------------------------------------------------------
18312 Sanity check
18313 -------------------------------------------------------------------------*/
18314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18315 ( NULL == pEventData->pEventData))
18316 {
18317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018319 WDI_ASSERT(0);
18320 return WDI_STATUS_E_FAILURE;
18321 }
18322
18323 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18324
18325 /*-------------------------------------------------------------------------
18326 Unpack HAL Response Message - the header was already extracted by the
18327 main Response Handling procedure
18328 -------------------------------------------------------------------------*/
18329 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18330 pEventData->pEventData,
18331 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18332
18333 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18334 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18335 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18336 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18337 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18338 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18339 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18340 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18341 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18342 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18343 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18344 halTsmStatsRspMsg.tsmStatsRspParams.status);
18345
18346 /*Notify UMAC*/
18347 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18348
18349 return WDI_STATUS_SUCCESS;
18350}/*WDI_ProcessTsmStatsRsp*/
18351
18352#endif
18353
18354
18355
18356/**
18357 @brief Process Flush AC Rsp function (called when a response
18358 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018359
18360 @param pWDICtx: pointer to the WLAN DAL context
18361 pEventData: pointer to the event information structure
18362
Jeff Johnson295189b2012-06-20 16:38:30 -070018363 @see
18364 @return Result of the function call
18365*/
18366WDI_Status
18367WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018368(
Jeff Johnson295189b2012-06-20 16:38:30 -070018369 WDI_ControlBlockType* pWDICtx,
18370 WDI_EventInfoType* pEventData
18371)
18372{
18373 WDI_Status wdiStatus;
18374 eHalStatus halStatus;
18375 WDI_FlushAcRspCb wdiFlushAcRspCb;
18376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18377
18378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 -------------------------------------------------------------------------*/
18381 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18382 ( NULL == pEventData->pEventData))
18383 {
18384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018388 }
18389
18390 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18391
18392 /*-------------------------------------------------------------------------
18393 Extract response and send it to UMAC
18394 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018395 wpalMemoryCopy( &halStatus,
18396 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 sizeof(halStatus));
18398
Jeff Johnsone7245742012-09-05 17:12:55 -070018399 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018400
18401 /*Notify UMAC*/
18402 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18403
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018405}/*WDI_ProcessFlushAcRsp*/
18406
18407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018410
18411 @param pWDICtx: pointer to the WLAN DAL context
18412 pEventData: pointer to the event information structure
18413
Jeff Johnson295189b2012-06-20 16:38:30 -070018414 @see
18415 @return Result of the function call
18416*/
18417WDI_Status
18418WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018419(
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 WDI_ControlBlockType* pWDICtx,
18421 WDI_EventInfoType* pEventData
18422)
18423{
18424 WDI_Status wdiStatus;
18425 eHalStatus halStatus;
18426 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18428
18429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018431 -------------------------------------------------------------------------*/
18432 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18433 ( NULL == pEventData->pEventData))
18434 {
18435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018439 }
18440
18441 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18442
18443 /*-------------------------------------------------------------------------
18444 Extract response and send it to UMAC
18445 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018446 wpalMemoryCopy( &halStatus,
18447 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018448 sizeof(halStatus));
18449
Jeff Johnsone7245742012-09-05 17:12:55 -070018450 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018451
18452 /*Notify UMAC*/
18453 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18454
Jeff Johnsone7245742012-09-05 17:12:55 -070018455 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018456}/*WDI_ProcessBtAmpEventRsp*/
18457
18458
18459/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018460 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018462
18463 @param pWDICtx: pointer to the WLAN DAL context
18464 pEventData: pointer to the event information structure
18465
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 @see
18467 @return Result of the function call
18468*/
18469WDI_Status
18470WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018471(
Jeff Johnson295189b2012-06-20 16:38:30 -070018472 WDI_ControlBlockType* pWDICtx,
18473 WDI_EventInfoType* pEventData
18474)
18475{
18476 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18477 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18478 tAddStaSelfRspMsg halAddStaSelfRsp;
18479 WDI_AddStaParams wdiAddSTAParam = {0};
18480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18481
18482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 -------------------------------------------------------------------------*/
18485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18486 ( NULL == pEventData->pEventData))
18487 {
18488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 }
18493
Jeff Johnsone7245742012-09-05 17:12:55 -070018494 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18496
18497 /*-------------------------------------------------------------------------
18498 Extract response and send it to UMAC
18499 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018500 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18501 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018502 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18503
18504
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 wdiAddSTASelfParams.wdiStatus =
18506 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018507
Jeff Johnsone7245742012-09-05 17:12:55 -070018508 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018509 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018510 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018511 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18514
18515 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18516 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18517 WDI_MAC_ADDR_LEN);
18518
18519
18520#ifdef HAL_SELF_STA_PER_BSS
18521
18522 /* At this point add the self-STA */
18523
18524 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18525 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18526 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18527
18528 //all DPU indices are the same for self STA
18529
18530 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018531 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018532 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18533 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18534 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18535 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18536 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18537
18538 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18539 WDI_MAC_ADDR_LEN);
18540
18541 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18542 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18543
Jeff Johnsone7245742012-09-05 17:12:55 -070018544 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018545 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18546 {
18547 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18548 }
18549#endif
18550
18551 /*Notify UMAC*/
18552 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18553
Jeff Johnsone7245742012-09-05 17:12:55 -070018554 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018555}/*WDI_ProcessAddSTASelfRsp*/
18556
18557
18558
18559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018560 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018561 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018562
18563 @param pWDICtx: pointer to the WLAN DAL context
18564 pEventData: pointer to the event information structure
18565
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 @see
18567 @return Result of the function call
18568*/
18569WDI_Status
18570WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018571(
Jeff Johnson295189b2012-06-20 16:38:30 -070018572 WDI_ControlBlockType* pWDICtx,
18573 WDI_EventInfoType* pEventData
18574)
18575{
18576 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18577 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18578 tDelStaSelfRspParams delStaSelfRspParams;
18579 wpt_uint8 ucStaIdx;
18580
18581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18582
18583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018585 -------------------------------------------------------------------------*/
18586 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18587 ( NULL == pEventData->pEventData))
18588 {
18589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 }
18594
18595 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18596
18597 /*-------------------------------------------------------------------------
18598 Extract response and send it to UMAC
18599 -------------------------------------------------------------------------*/
18600
Jeff Johnsone7245742012-09-05 17:12:55 -070018601 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 (wpt_uint8*)pEventData->pEventData,
18603 sizeof(tDelStaSelfRspParams));
18604
Jeff Johnsone7245742012-09-05 17:12:55 -070018605 wdiDelStaSelfRspParams.wdiStatus =
18606 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018607
Jeff Johnsone7245742012-09-05 17:12:55 -070018608 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018609 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18610 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18611 {
18612 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018613 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018614 delStaSelfRspParams.selfMacAddr,
18615 &ucStaIdx);
18616 if(WDI_STATUS_E_FAILURE == wdiStatus)
18617 {
18618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018619 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018622 }
18623 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18624 }
18625
18626 /*Notify UMAC*/
18627 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18628
18629 return WDI_STATUS_SUCCESS;
18630}
18631
Jeff Johnsone7245742012-09-05 17:12:55 -070018632#ifdef FEATURE_OEM_DATA_SUPPORT
18633/**
18634 @brief Start Oem Data Rsp function (called when a
18635 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018636
Jeff Johnsone7245742012-09-05 17:12:55 -070018637 @param pWDICtx: pointer to the WLAN DAL context
18638 pEventData: pointer to the event information structure
18639
18640 @see
18641 @return Result of the function call
18642*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018643
18644WDI_Status
18645WDI_ProcessStartOemDataRsp
18646(
18647 WDI_ControlBlockType* pWDICtx,
18648 WDI_EventInfoType* pEventData
18649)
18650{
18651 WDI_oemDataRspCb wdiOemDataRspCb;
18652 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18653 tStartOemDataRspParams* halStartOemDataRspParams;
18654
18655 /*-------------------------------------------------------------------------
18656 Sanity check
18657 -------------------------------------------------------------------------*/
18658 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18659 ( NULL == pEventData->pEventData))
18660 {
18661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018662 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018663 WDI_ASSERT(0);
18664 return WDI_STATUS_E_FAILURE;
18665 }
18666
18667 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18668
18669 /*-------------------------------------------------------------------------
18670 Extract response and send it to UMAC
18671 -------------------------------------------------------------------------*/
18672 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18673
18674
18675 //It is the responsibility of the application code to check for failure
18676 //conditions!
18677
18678 //Allocate memory for WDI OEM DATA RSP structure
18679 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18680
18681 if(NULL == wdiOemDataRspParams)
18682 {
18683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018684 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018685 pWDICtx, pEventData, pEventData->pEventData);
18686 WDI_ASSERT(0);
18687 return WDI_STATUS_E_FAILURE;
18688 }
18689
18690 /* Populate WDI structure members */
18691 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18692
18693 /*Notify UMAC*/
18694 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18695
18696 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18697 wpalMemoryFree(wdiOemDataRspParams);
18698
18699 return WDI_STATUS_SUCCESS;
18700}/*WDI_PrcoessStartOemDataRsp*/
18701#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018702
18703/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018705===========================================================================*/
18706
18707/**
18708 @brief Process Channel Switch Rsp function (called when a response
18709 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018710
18711 @param pWDICtx: pointer to the WLAN DAL context
18712 pEventData: pointer to the event information structure
18713
Jeff Johnson295189b2012-06-20 16:38:30 -070018714 @see
18715 @return Result of the function call
18716*/
18717WDI_Status
18718WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018719(
Jeff Johnson295189b2012-06-20 16:38:30 -070018720 WDI_ControlBlockType* pWDICtx,
18721 WDI_EventInfoType* pEventData
18722)
18723{
18724 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18725 WDI_SwitchChRspCb wdiChSwitchRspCb;
18726 tSwitchChannelRspParams halSwitchChannelRsp;
18727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18728
18729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 -------------------------------------------------------------------------*/
18732 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18733 ( NULL == pEventData->pEventData))
18734 {
18735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018739 }
18740
18741 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18742
18743 /*-------------------------------------------------------------------------
18744 Extract response and send it to UMAC
18745 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018746 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018747 (wpt_uint8*)pEventData->pEventData,
18748 sizeof(halSwitchChannelRsp));
18749
Jeff Johnsone7245742012-09-05 17:12:55 -070018750 wdiSwitchChRsp.wdiStatus =
18751 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18753
18754#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018755 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018756#endif
18757
18758 /*Notify UMAC*/
18759 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18760
Jeff Johnsone7245742012-09-05 17:12:55 -070018761 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018762}/*WDI_ProcessChannelSwitchRsp*/
18763
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018764/**
18765 @brief Process Channel Switch Rsp function (called when a response
18766 is being received over the bus from HAL against
18767 WDI_ProcessChannelSwitchReq_V1)
18768
18769 @param pWDICtx: pointer to the WLAN DAL context
18770 pEventData: pointer to the event information structure
18771
18772 @see
18773 @return Result of the function call
18774*/
18775
18776WDI_Status
18777WDI_ProcessChannelSwitchRsp_V1
18778(
18779 WDI_ControlBlockType* pWDICtx,
18780 WDI_EventInfoType* pEventData
18781)
18782{
18783 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18784 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18785 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18787
18788 /*-------------------------------------------------------------------------
18789 Sanity check
18790 -------------------------------------------------------------------------*/
18791 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18792 ( NULL == pEventData->pEventData))
18793 {
18794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18795 "%s: Invalid parameters", __func__);
18796 WDI_ASSERT(0);
18797 return WDI_STATUS_E_FAILURE;
18798 }
18799
18800 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18801
18802 /*-------------------------------------------------------------------------
18803 Extract response and send it to UMAC
18804 -------------------------------------------------------------------------*/
18805 wpalMemoryCopy( &halSwitchChannelRsp,
18806 (wpt_uint8*)pEventData->pEventData,
18807 sizeof(halSwitchChannelRsp));
18808
18809 wdiSwitchChRsp.wdiStatus =
18810 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18811 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18812
18813#ifdef WLAN_FEATURE_VOWIFI
18814 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18815#endif
18816
18817 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18818 if (( NULL == wdiChSwitchRspCb ) )
18819 {
18820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18821 "%s: ### Call back function is null", __func__);
18822 WDI_ASSERT(0);
18823 return WDI_STATUS_E_FAILURE;
18824 }
18825 /*Notify UMAC*/
18826 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18827
18828 return WDI_STATUS_SUCCESS;
18829}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018830
18831/**
18832 @brief Process Config STA Rsp function (called when a response
18833 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018834
18835 @param pWDICtx: pointer to the WLAN DAL context
18836 pEventData: pointer to the event information structure
18837
Jeff Johnson295189b2012-06-20 16:38:30 -070018838 @see
18839 @return Result of the function call
18840*/
18841WDI_Status
18842WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018843(
Jeff Johnson295189b2012-06-20 16:38:30 -070018844 WDI_ControlBlockType* pWDICtx,
18845 WDI_EventInfoType* pEventData
18846)
18847{
18848 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18849 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18850 WDI_AddStaParams wdiAddSTAParam;
18851
18852 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018853 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018854
Jeff Johnsone7245742012-09-05 17:12:55 -070018855 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18857
18858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 -------------------------------------------------------------------------*/
18861 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18862 ( NULL == pEventData->pEventData))
18863 {
18864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018865 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 }
18869
18870 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18871
18872 /*-------------------------------------------------------------------------
18873 Extract response and send it to UMAC
18874 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018875 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18876 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 sizeof(halConfigStaRsp.configStaRspParams));
18878
18879
18880 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18881 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18882 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18883 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18884 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18885
18886 /* MAC Address of STA - take from cache as it does not come back in the
18887 response*/
18888 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018889 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018890 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018891
18892 wdiCfgSTAParams.wdiStatus =
18893 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018894
18895 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18896 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18897 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18898
18899 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18900 {
18901 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18902 {
18903 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018904 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018905 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18906 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018907
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018909 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018910 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018911 wdiAddSTAParam.ucHTCapable =
18912 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18913 wdiAddSTAParam.ucStaType =
18914 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018915 wdiAddSTAParam.ucRmfEnabled =
18916 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018917
Jeff Johnson295189b2012-06-20 16:38:30 -070018918 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018919 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18920 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018922
18923 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18924 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18925 WDI_MAC_ADDR_LEN);
18926
18927 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18928 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18929 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018930
18931 if ( NULL == pBSSSes )
18932 {
18933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18934 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018935
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018937 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018938 }
18939
18940 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018941 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018942 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018943 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018944 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018945 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018947 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018949 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018950
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18952 }
18953 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18954 {
18955 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18956
Jeff Johnsone7245742012-09-05 17:12:55 -070018957 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018959 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018960 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018961 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018962 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018963 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018965 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018967 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018969 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 halConfigStaRsp.configStaRspParams.ucUcastSig;
18971 }
18972 }
18973
18974 /*Notify UMAC*/
18975 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18976
Jeff Johnsone7245742012-09-05 17:12:55 -070018977 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018978}/*WDI_ProcessConfigStaRsp*/
18979
18980
18981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018984
18985 @param pWDICtx: pointer to the WLAN DAL context
18986 pEventData: pointer to the event information structure
18987
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 @see
18989 @return Result of the function call
18990*/
18991WDI_Status
18992WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018993(
Jeff Johnson295189b2012-06-20 16:38:30 -070018994 WDI_ControlBlockType* pWDICtx,
18995 WDI_EventInfoType* pEventData
18996)
18997{
18998 WDI_Status wdiStatus;
18999 eHalStatus halStatus;
19000 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
19001
19002 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19005
19006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019008 -------------------------------------------------------------------------*/
19009 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19010 ( NULL == pEventData->pEventData))
19011 {
19012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019013 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019016 }
19017
19018 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
19019
19020 wpalMutexAcquire(&pWDICtx->wptMutex);
19021
19022 /*If the link is being transitioned to idle - the BSS is to be deleted
19023 - this type of ending a session is possible when UMAC has failed an
19024 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019025 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019026 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19027 {
19028 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019029 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070019030 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019031 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19032 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
19033 &pBSSSes);
19034
Jeff Johnson295189b2012-06-20 16:38:30 -070019035 /*-----------------------------------------------------------------------
19036 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 -----------------------------------------------------------------------*/
19039 if ( NULL == pBSSSes )
19040 {
19041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19042 "Set link response received outside association session");
19043 }
19044 else
19045 {
19046 /* For BT AMP roles no need to delete the sessions if assoc fails. There
19047 will be del BSS coming after this to stop the beaconing & cleaning up the
19048 sessions*/
19049 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19050 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19051 {
19052 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019053 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019054 -----------------------------------------------------------------------*/
19055 WDI_DeleteSession(pWDICtx, pBSSSes);
19056
19057 /*-----------------------------------------------------------------------
19058 Check to see if this association is in progress - if so disable the
19059 flag as this has ended
19060 -----------------------------------------------------------------------*/
19061 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019062 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 /*Association no longer in progress */
19064 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19065 /*Association no longer in progress - prepare pending assoc for processing*/
19066 WDI_DequeueAssocRequest(pWDICtx);
19067 }
19068 }
19069 }
19070 }
19071 /* If the link state has been set to POST ASSOC, reset the "association in
19072 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19075 {
19076 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19077 WDI_DequeueAssocRequest(pWDICtx);
19078 }
19079
19080 wpalMutexRelease(&pWDICtx->wptMutex);
19081
19082 /*-------------------------------------------------------------------------
19083 Extract response and send it to UMAC
19084 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019085 wpalMemoryCopy( &halStatus,
19086 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019087 sizeof(halStatus));
19088
Jeff Johnsone7245742012-09-05 17:12:55 -070019089 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019090
19091 /*Notify UMAC*/
19092 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19093
Jeff Johnsone7245742012-09-05 17:12:55 -070019094 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019095}/*WDI_ProcessSetLinkStateRsp*/
19096
19097/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019098 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019099 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019100
19101 @param pWDICtx: pointer to the WLAN DAL context
19102 pEventData: pointer to the event information structure
19103
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 @see
19105 @return Result of the function call
19106*/
19107WDI_Status
19108WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019109(
Jeff Johnson295189b2012-06-20 16:38:30 -070019110 WDI_ControlBlockType* pWDICtx,
19111 WDI_EventInfoType* pEventData
19112)
19113{
19114 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19115 WDI_GetStatsRspCb wdiGetStatsRspCb;
19116 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019117
Jeff Johnson295189b2012-06-20 16:38:30 -070019118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19119
19120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 -------------------------------------------------------------------------*/
19123 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19124 ( NULL == pEventData->pEventData))
19125 {
19126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 }
19131
19132 /*-------------------------------------------------------------------------
19133 Extract response and send it to UMAC
19134 -------------------------------------------------------------------------*/
19135 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19136
19137 /*allocate the stats response buffer */
19138 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19139 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19140 + sizeof(WDI_GetStatsRspParamsType));
19141
19142 if(NULL == wdiGetStatsRsp)
19143 {
19144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019145 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 pWDICtx, pEventData, pEventData->pEventData);
19147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 }
19150
19151 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19152
19153 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19154 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19155 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19156 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19157 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19158 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19159
19160 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19161 wpalMemoryCopy(wdiGetStatsRsp + 1,
19162 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19163 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19164
19165 /*Notify UMAC*/
19166 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19167
19168 wpalMemoryFree(wdiGetStatsRsp);
19169
Jeff Johnsone7245742012-09-05 17:12:55 -070019170 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019171}/*WDI_ProcessGetStatsRsp*/
19172
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019173#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019174/**
19175 @brief Process Get Roam Rssi Rsp function (called when a response is
19176 being received over the bus from HAL)
19177
19178 @param pWDICtx: pointer to the WLAN DAL context
19179 pEventData: pointer to the event information structure
19180
19181 @see
19182 @return Result of the function call
19183*/
19184WDI_Status
19185WDI_ProcessGetRoamRssiRsp
19186(
19187 WDI_ControlBlockType* pWDICtx,
19188 WDI_EventInfoType* pEventData
19189)
19190{
19191 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19192 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19193 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19195
19196 /*-------------------------------------------------------------------------
19197 Sanity check
19198 -------------------------------------------------------------------------*/
19199 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19200 ( NULL == pEventData->pEventData))
19201 {
19202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19203 "%s: Invalid parameters", __func__);
19204 WDI_ASSERT(0);
19205 return WDI_STATUS_E_FAILURE;
19206 }
19207
19208 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19209 if(NULL == wdiGetRoamRssiRspCb)
19210 {
19211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19212 "%s: call back function is NULL", __func__);
19213 WDI_ASSERT(0);
19214 return WDI_STATUS_E_FAILURE;
19215 }
19216
19217 /*-------------------------------------------------------------------------
19218 Extract response and send it to UMAC
19219 -------------------------------------------------------------------------*/
19220 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19221 pEventData->pEventData,
19222 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19223
19224 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19225 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19226 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19227
19228 /*Notify UMAC*/
19229 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19230
19231 return WDI_STATUS_SUCCESS;
19232}/*WDI_ProcessGetRoamRssiRsp*/
19233#endif
19234
Jeff Johnson295189b2012-06-20 16:38:30 -070019235
19236/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019237 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019238 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019239
19240 @param pWDICtx: pointer to the WLAN DAL context
19241 pEventData: pointer to the event information structure
19242
Jeff Johnson295189b2012-06-20 16:38:30 -070019243 @see
19244 @return Result of the function call
19245*/
19246WDI_Status
19247WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019248(
Jeff Johnson295189b2012-06-20 16:38:30 -070019249 WDI_ControlBlockType* pWDICtx,
19250 WDI_EventInfoType* pEventData
19251)
19252{
19253 WDI_Status wdiStatus;
19254 eHalStatus halStatus;
19255 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19257
19258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019259 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 -------------------------------------------------------------------------*/
19261 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19262 ( NULL == pEventData->pEventData))
19263 {
19264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019268 }
19269
19270 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19271
19272 /*-------------------------------------------------------------------------
19273 Extract response and send it to UMAC
19274 -------------------------------------------------------------------------*/
19275 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019276 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019277
19278 /*Notify UMAC*/
19279 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19280
Jeff Johnsone7245742012-09-05 17:12:55 -070019281 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019282}/*WDI_ProcessUpdateCfgRsp*/
19283
19284
19285
19286/**
19287 @brief Process Add BA Rsp function (called when a response
19288 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019289
19290 @param pWDICtx: pointer to the WLAN DAL context
19291 pEventData: pointer to the event information structure
19292
Jeff Johnson295189b2012-06-20 16:38:30 -070019293 @see
19294 @return Result of the function call
19295*/
19296WDI_Status
19297WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019298(
Jeff Johnson295189b2012-06-20 16:38:30 -070019299 WDI_ControlBlockType* pWDICtx,
19300 WDI_EventInfoType* pEventData
19301)
19302{
19303 WDI_AddBARspCb wdiAddBARspCb;
19304
19305 tAddBARspParams halAddBARsp;
19306 WDI_AddBARspinfoType wdiAddBARsp;
19307
19308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19309
19310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 -------------------------------------------------------------------------*/
19313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19314 ( NULL == pEventData->pEventData))
19315 {
19316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019320 }
19321
19322 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19323
19324 /*-------------------------------------------------------------------------
19325 Extract response and send it to UMAC
19326 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 wpalMemoryCopy( &halAddBARsp,
19328 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019329 sizeof(halAddBARsp));
19330
19331 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19332
Jeff Johnson43971f52012-07-17 12:26:56 -070019333 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 {
19335 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19336 }
19337
19338 /*Notify UMAC*/
19339 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19340
Jeff Johnsone7245742012-09-05 17:12:55 -070019341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019342}/*WDI_ProcessAddSessionBARsp*/
19343
19344/**
19345 @brief Process Add BA Rsp function (called when a response
19346 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019347
19348 @param pWDICtx: pointer to the WLAN DAL context
19349 pEventData: pointer to the event information structure
19350
Jeff Johnson295189b2012-06-20 16:38:30 -070019351 @see
19352 @return Result of the function call
19353*/
19354WDI_Status
19355WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019356(
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 WDI_ControlBlockType* pWDICtx,
19358 WDI_EventInfoType* pEventData
19359)
19360{
19361 WDI_TriggerBARspCb wdiTriggerBARspCb;
19362
19363 tTriggerBARspParams* halTriggerBARsp;
19364 tTriggerBaRspCandidate* halBaCandidate;
19365 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19366 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19367 wpt_uint16 index;
19368 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019369 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19371
19372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 -------------------------------------------------------------------------*/
19375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19376 ( NULL == pEventData->pEventData))
19377 {
19378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 }
19383
19384 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19385
19386 /*-------------------------------------------------------------------------
19387 Extract response and send it to UMAC
19388 -------------------------------------------------------------------------*/
19389 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19390
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019391 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19392
19393 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19394 {
19395 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019396 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019397 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019398
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019399 if(NULL == wdiTriggerBARsp)
19400 {
19401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019402 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019403 pWDICtx, pEventData, pEventData->pEventData);
19404 WDI_ASSERT(0);
19405 return WDI_STATUS_E_FAILURE;
19406 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019407
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019408 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19409
Jeff Johnson295189b2012-06-20 16:38:30 -070019410 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019411 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019412 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19413
19414 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19415 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19416
19417 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19418 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019419 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19421 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19422 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019425 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19427 }
19428 wdiTriggerBARspCandidate++;
19429 halBaCandidate++;
19430 }
19431 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019432 else
19433 {
19434 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19435
19436 if(NULL == wdiTriggerBARsp)
19437 {
19438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019439 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019440 pWDICtx, pEventData, pEventData->pEventData);
19441 WDI_ASSERT(0);
19442 return WDI_STATUS_E_FAILURE;
19443 }
19444
19445 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19446
19447 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019448
19449 /*Notify UMAC*/
19450 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19451
19452 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019453 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019454}/*WDI_ProcessAddSessionBARsp*/
19455
19456/**
19457 @brief Process Update Beacon Params Rsp function (called when a response
19458 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019459
19460 @param pWDICtx: pointer to the WLAN DAL context
19461 pEventData: pointer to the event information structure
19462
Jeff Johnson295189b2012-06-20 16:38:30 -070019463 @see
19464 @return Result of the function call
19465*/
19466WDI_Status
19467WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019468(
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 WDI_ControlBlockType* pWDICtx,
19470 WDI_EventInfoType* pEventData
19471)
19472{
19473 WDI_Status wdiStatus;
19474 eHalStatus halStatus;
19475 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19477
19478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019479 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019480 -------------------------------------------------------------------------*/
19481 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19482 ( NULL == pEventData->pEventData))
19483 {
19484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019485 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 }
19489
19490 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19491
19492 /*-------------------------------------------------------------------------
19493 Extract response and send it to UMAC
19494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019495 wpalMemoryCopy( &halStatus,
19496 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019497 sizeof(halStatus));
19498
Jeff Johnsone7245742012-09-05 17:12:55 -070019499 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019500
19501 /*Notify UMAC*/
19502 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19503
Jeff Johnsone7245742012-09-05 17:12:55 -070019504 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019505}/*WDI_ProcessUpdateBeaconParamsRsp*/
19506
19507/**
19508 @brief Process Send Beacon template Rsp function (called when a response
19509 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019510
19511 @param pWDICtx: pointer to the WLAN DAL context
19512 pEventData: pointer to the event information structure
19513
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 @see
19515 @return Result of the function call
19516*/
19517WDI_Status
19518WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019519(
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 WDI_ControlBlockType* pWDICtx,
19521 WDI_EventInfoType* pEventData
19522)
19523{
19524 WDI_Status wdiStatus;
19525 eHalStatus halStatus;
19526 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19528
19529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019531 -------------------------------------------------------------------------*/
19532 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19533 ( NULL == pEventData->pEventData))
19534 {
19535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019536 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019539 }
19540
19541 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19542
19543 /*-------------------------------------------------------------------------
19544 Extract response and send it to UMAC
19545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 wpalMemoryCopy( &halStatus,
19547 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019548 sizeof(halStatus));
19549
Jeff Johnsone7245742012-09-05 17:12:55 -070019550 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019551
19552 /*Notify UMAC*/
19553 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19554
Jeff Johnsone7245742012-09-05 17:12:55 -070019555 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019556}/*WDI_ProcessSendBeaconParamsRsp*/
19557
Jeff Johnsone7245742012-09-05 17:12:55 -070019558
Jeff Johnson295189b2012-06-20 16:38:30 -070019559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019560 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019561 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019562
19563 @param pWDICtx: pointer to the WLAN DAL context
19564 pEventData: pointer to the event information structure
19565
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 @see
19567 @return Result of the function call
19568*/
19569WDI_Status
19570WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019571(
Jeff Johnson295189b2012-06-20 16:38:30 -070019572 WDI_ControlBlockType* pWDICtx,
19573 WDI_EventInfoType* pEventData
19574)
19575{
19576 WDI_Status wdiStatus;
19577 eHalStatus halStatus;
19578 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19580
19581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019583 -------------------------------------------------------------------------*/
19584 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19585 ( NULL == pEventData->pEventData))
19586 {
19587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019591 }
19592
19593 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19594
19595 /*-------------------------------------------------------------------------
19596 Extract response and send it to UMAC
19597 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019598 wpalMemoryCopy( &halStatus,
19599 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019600 sizeof(halStatus));
19601
Jeff Johnsone7245742012-09-05 17:12:55 -070019602 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019603
19604 /*Notify UMAC*/
19605 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19606
Jeff Johnsone7245742012-09-05 17:12:55 -070019607 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019608}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19609
19610 /**
19611 @brief Process Set Max Tx Power Rsp function (called when a response
19612 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019613
19614 @param pWDICtx: pointer to the WLAN DAL context
19615 pEventData: pointer to the event information structure
19616
Jeff Johnson295189b2012-06-20 16:38:30 -070019617 @see
19618 @return Result of the function call
19619*/
19620WDI_Status
19621WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019622(
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 WDI_ControlBlockType* pWDICtx,
19624 WDI_EventInfoType* pEventData
19625)
19626{
19627 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019628
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019630
Jeff Johnson295189b2012-06-20 16:38:30 -070019631 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19633
19634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019635 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019636 -------------------------------------------------------------------------*/
19637 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19638 ( NULL == pEventData->pEventData))
19639 {
19640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019641 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019642 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019644 }
19645
19646 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19647
19648 /*-------------------------------------------------------------------------
19649 Extract response and send it to UMAC
19650 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019651 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19652 pEventData->pEventData,
19653 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019654
19655 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19656 {
19657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19658 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 }
19661
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019664 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019665
19666 /*Notify UMAC*/
19667 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19668
Jeff Johnsone7245742012-09-05 17:12:55 -070019669 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019670}
19671
schang86c22c42013-03-13 18:41:24 -070019672 /**
19673 @brief Process Set Tx Power Rsp function (called when a response
19674 is being received over the bus from HAL)
19675
19676 @param pWDICtx: pointer to the WLAN DAL context
19677 pEventData: pointer to the event information structure
19678
19679 @see
19680 @return Result of the function call
19681*/
19682WDI_Status
19683WDI_ProcessSetTxPowerRsp
19684(
19685 WDI_ControlBlockType* pWDICtx,
19686 WDI_EventInfoType* pEventData
19687)
19688{
19689 tSetTxPwrRspMsg halTxpowerrsp;
19690 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19691 WDA_SetTxPowerRspCb wdiReqStatusCb;
19692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19693
19694 /*-------------------------------------------------------------------------
19695 Sanity check
19696 -------------------------------------------------------------------------*/
19697 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19698 ( NULL == pEventData->pEventData))
19699 {
19700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19701 "%s: Invalid parameters", __func__);
19702 WDI_ASSERT(0);
19703 return WDI_STATUS_E_FAILURE;
19704 }
19705
19706 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19707
19708 /*-------------------------------------------------------------------------
19709 Extract response and send it to UMAC
19710 -------------------------------------------------------------------------*/
19711 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19712 pEventData->pEventData,
19713 sizeof(halTxpowerrsp.setTxPwrRspParams));
19714
19715 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19716 {
19717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19718 "Error status returned in Set Tx Power Response ");
19719 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19720 return WDI_STATUS_E_FAILURE;
19721 }
19722
19723 wdiSetTxPowerRspMsg.wdiStatus =
19724 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19725
19726 /*Notify UMAC*/
19727 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19728
19729 return WDI_STATUS_SUCCESS;
19730}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019731
19732/**
19733 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19734 is being received over the bus from HAL)
19735
19736 @param pWDICtx: pointer to the WLAN DAL context
19737 pEventData: pointer to the event information structure
19738
19739 @see
19740 @return Result of the function call
19741*/
19742WDI_Status
19743WDI_ProcessSetMaxTxPowerPerBandRsp
19744(
19745 WDI_ControlBlockType* pWDICtx,
19746 WDI_EventInfoType* pEventData
19747)
19748{
19749 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19750 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19751 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19753
19754 /*-------------------------------------------------------------------------
19755 Sanity check
19756 -------------------------------------------------------------------------*/
19757 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19758 ( NULL == pEventData->pEventData))
19759 {
19760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19761 "%s: Invalid parameters", __func__);
19762 WDI_ASSERT(0);
19763 return WDI_STATUS_E_FAILURE;
19764 }
19765
19766 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19767
19768 /*-------------------------------------------------------------------------
19769 Extract response and send it to UMAC
19770 -------------------------------------------------------------------------*/
19771 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19772 pEventData->pEventData,
19773 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19774
19775 if (eHAL_STATUS_SUCCESS !=
19776 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19777 {
19778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19779 "Error status returned in Set Max Tx Power Per Band Response");
19780 return WDI_STATUS_E_FAILURE;
19781 }
19782
19783 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19784 WDI_HAL_2_WDI_STATUS(
19785 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19786
19787 /* Notify UMAC */
19788 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19789
19790 return WDI_STATUS_SUCCESS;
19791}
19792
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019793#ifdef FEATURE_WLAN_TDLS
19794/**
19795 @brief Process TDLS Link Establish Rsp function (called
19796 when a response is being received over the bus from HAL)
19797
19798 @param pWDICtx: pointer to the WLAN DAL context
19799 pEventData: pointer to the event information structure
19800
19801 @see
19802 @return Result of the function call
19803*/
19804WDI_Status
19805WDI_ProcessLinkEstablishReqRsp
19806(
19807 WDI_ControlBlockType* pWDICtx,
19808 WDI_EventInfoType* pEventData
19809)
19810{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019811 eHalStatus halStatus;
19812 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019813 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19814 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19815
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19817
19818 /*-------------------------------------------------------------------------
19819 Sanity check
19820 -------------------------------------------------------------------------*/
19821 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19822 ( NULL == pEventData->pEventData))
19823 {
19824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19825 "%s: Invalid parameters", __func__);
19826 WDI_ASSERT(0);
19827 return WDI_STATUS_E_FAILURE;
19828 }
19829
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019830 /*-------------------------------------------------------------------------
19831 Extract indication and send it to UMAC
19832 -------------------------------------------------------------------------*/
19833 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19834 pEventData->pEventData,
19835 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19836
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019837 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19838
19839 /*-------------------------------------------------------------------------
19840 Extract response and send it to UMAC
19841 -------------------------------------------------------------------------*/
19842 wpalMemoryCopy( &halStatus,
19843 pEventData->pEventData,
19844 sizeof(halStatus));
19845
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019846 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19847 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019848
19849 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019850 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019851
19852 return WDI_STATUS_SUCCESS;
19853}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019854
19855
19856
19857/**
19858 @brief Process TDLS Chan switch Rsp function (called
19859 when a response is being received over the bus from HAL)
19860
19861 @param pWDICtx: pointer to the WLAN DAL context
19862 pEventData: pointer to the event information structure
19863
19864 @see
19865 @return Result of the function call
19866*/
19867WDI_Status
19868WDI_ProcessChanSwitchReqRsp
19869(
19870 WDI_ControlBlockType* pWDICtx,
19871 WDI_EventInfoType* pEventData
19872)
19873{
19874 eHalStatus halStatus;
19875 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19876 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19877 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19878
19879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19880
19881 /*-------------------------------------------------------------------------
19882 Sanity check
19883 -------------------------------------------------------------------------*/
19884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19885 ( NULL == pEventData->pEventData))
19886 {
19887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19888 "%s: Invalid parameters", __func__);
19889 WDI_ASSERT(0);
19890 return WDI_STATUS_E_FAILURE;
19891 }
19892
19893 /*-------------------------------------------------------------------------
19894 Extract indication and send it to UMAC
19895 -------------------------------------------------------------------------*/
19896 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19897 pEventData->pEventData,
19898 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19899
19900 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19901
19902 /*-------------------------------------------------------------------------
19903 Extract response and send it to UMAC
19904 -------------------------------------------------------------------------*/
19905 wpalMemoryCopy( &halStatus,
19906 pEventData->pEventData,
19907 sizeof(halStatus));
19908
19909 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19910 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19911
19912 /*Notify UMAC*/
19913 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19914
19915 return WDI_STATUS_SUCCESS;
19916}/*WDI_ProcessChanSwitchReqRsp*/
19917
19918
19919
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019920#endif
schang86c22c42013-03-13 18:41:24 -070019921
Jeff Johnson295189b2012-06-20 16:38:30 -070019922/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019923 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019924 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019925
19926 @param pWDICtx: pointer to the WLAN DAL context
19927 pEventData: pointer to the event information structure
19928
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 @see
19930 @return Result of the function call
19931*/
19932WDI_Status
19933WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019934(
Jeff Johnson295189b2012-06-20 16:38:30 -070019935 WDI_ControlBlockType* pWDICtx,
19936 WDI_EventInfoType* pEventData
19937)
19938{
19939 WDI_Status wdiStatus;
19940 eHalStatus halStatus;
19941 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19943
19944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019945 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019946 -------------------------------------------------------------------------*/
19947 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19948 ( NULL == pEventData->pEventData))
19949 {
19950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019951 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019954 }
19955
19956 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19957
19958 /*-------------------------------------------------------------------------
19959 Extract response and send it to UMAC
19960 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019961 wpalMemoryCopy( &halStatus,
19962 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 sizeof(halStatus));
19964
Jeff Johnsone7245742012-09-05 17:12:55 -070019965 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019966
19967 /*Notify UMAC*/
19968 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19969
Jeff Johnsone7245742012-09-05 17:12:55 -070019970 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019971}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019972/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019973 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019974 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019975
19976 @param pWDICtx: pointer to the WLAN DAL context
19977 pEventData: pointer to the event information structure
19978
Jeff Johnson295189b2012-06-20 16:38:30 -070019979 @see
19980 @return Result of the function call
19981*/
19982WDI_Status
19983WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019984(
Jeff Johnson295189b2012-06-20 16:38:30 -070019985 WDI_ControlBlockType* pWDICtx,
19986 WDI_EventInfoType* pEventData
19987)
19988{
19989 WDI_Status wdiStatus;
19990 eHalStatus halStatus;
19991 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019992 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19994
19995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 -------------------------------------------------------------------------*/
19998 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19999 ( NULL == pEventData->pEventData))
20000 {
20001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 }
20006
20007 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
20008
20009 /*-------------------------------------------------------------------------
20010 Extract response and send it to UMAC
20011 -------------------------------------------------------------------------*/
20012 halStatus = *((eHalStatus*)pEventData->pEventData);
20013
Jeff Johnsone7245742012-09-05 17:12:55 -070020014 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020015
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020016 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
20017 * Other module states are taken care by PMC.
20018 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
20019 */
20020 if (wdiStatus != WDI_STATUS_SUCCESS) {
20021
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20023 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
20024 halStatus);
20025 /* Call Back is not required as we are putting the DXE in FULL
20026 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020027 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20028
20029 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
20030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020031 "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 -080020032 WDI_ASSERT(0);
20033 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020034 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020035 /*Notify UMAC*/
20036 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20037
Jeff Johnsone7245742012-09-05 17:12:55 -070020038 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020039}/*WDI_ProcessEnterImpsRsp*/
20040
20041/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020042 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020044
20045 @param pWDICtx: pointer to the WLAN DAL context
20046 pEventData: pointer to the event information structure
20047
Jeff Johnson295189b2012-06-20 16:38:30 -070020048 @see
20049 @return Result of the function call
20050*/
20051WDI_Status
20052WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020053(
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 WDI_ControlBlockType* pWDICtx,
20055 WDI_EventInfoType* pEventData
20056)
20057{
20058 WDI_Status wdiStatus;
20059 eHalStatus halStatus;
20060 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020061 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20063
20064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 -------------------------------------------------------------------------*/
20067 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20068 ( NULL == pEventData->pEventData))
20069 {
20070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020071 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 }
20075
20076 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20077
20078 /*-------------------------------------------------------------------------
20079 Extract response and send it to UMAC
20080 -------------------------------------------------------------------------*/
20081 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020082 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020083
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020084 if (halStatus != eHAL_STATUS_SUCCESS)
20085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20086 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20087
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020089 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20090 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20091 {
20092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020093 "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 -080020094 WDI_ASSERT(0);
20095 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 /*Notify UMAC*/
20097 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20098
Jeff Johnsone7245742012-09-05 17:12:55 -070020099 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020100}/*WDI_ProcessExitImpsRsp*/
20101
20102/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020103 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020104 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020105
20106 @param pWDICtx: pointer to the WLAN DAL context
20107 pEventData: pointer to the event information structure
20108
Jeff Johnson295189b2012-06-20 16:38:30 -070020109 @see
20110 @return Result of the function call
20111*/
20112WDI_Status
20113WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020114(
Jeff Johnson295189b2012-06-20 16:38:30 -070020115 WDI_ControlBlockType* pWDICtx,
20116 WDI_EventInfoType* pEventData
20117)
20118{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020119 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20120 tHalEnterBmpsRspParams halEnterBmpsRsp;
20121 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20122 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020123 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20125
20126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020128 -------------------------------------------------------------------------*/
20129 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20130 ( NULL == pEventData->pEventData))
20131 {
20132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020136 }
20137
Jeff Johnson295189b2012-06-20 16:38:30 -070020138 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020139 Extract response and send it to UMAC
20140 -------------------------------------------------------------------------*/
20141 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20142 {
20143 wpalMemoryCopy( &halEnterBmpsRsp,
20144 pEventData->pEventData,
20145 sizeof(halEnterBmpsRsp));
20146
20147 //Used to print debug message
20148 halStatus = halEnterBmpsRsp.status;
20149 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20150 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20151 }
20152 else
20153 {
20154 halStatus = *((eHalStatus*)pEventData->pEventData);
20155 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20156 }
20157
20158 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020159
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020160 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20161 * Other module states are taken care by PMC.
20162 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20163 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020164 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20165 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020166
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020168 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20169 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020170 /* Call Back is not required as we are putting the DXE in FULL
20171 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020172 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20173 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20174 {
20175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020176 "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 -080020177 WDI_ASSERT(0);
20178 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020179 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020180 }
20181
Jeff Johnson295189b2012-06-20 16:38:30 -070020182 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020183 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020184
Jeff Johnsone7245742012-09-05 17:12:55 -070020185 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020186}/*WDI_ProcessEnterBmpsRsp*/
20187
20188/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020189 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020190 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020191
20192 @param pWDICtx: pointer to the WLAN DAL context
20193 pEventData: pointer to the event information structure
20194
Jeff Johnson295189b2012-06-20 16:38:30 -070020195 @see
20196 @return Result of the function call
20197*/
20198WDI_Status
20199WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020200(
Jeff Johnson295189b2012-06-20 16:38:30 -070020201 WDI_ControlBlockType* pWDICtx,
20202 WDI_EventInfoType* pEventData
20203)
20204{
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 eHalStatus halStatus;
20206 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020207 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020208 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20209 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20211
20212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020213 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020214 -------------------------------------------------------------------------*/
20215 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20216 ( NULL == pEventData->pEventData))
20217 {
20218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020222 }
20223
20224 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20225
20226 /*-------------------------------------------------------------------------
20227 Extract response and send it to UMAC
20228 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020229
20230 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20231 {
20232 wpalMemoryCopy( &halExitBmpsRsp,
20233 pEventData->pEventData,
20234 sizeof(halExitBmpsRsp));
20235
20236 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20237 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20238 }
20239 else
20240 {
20241 halStatus = *((eHalStatus*)pEventData->pEventData);
20242 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20243 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020244
20245 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020246 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20247 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20248 {
20249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020250 "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 -080020251 WDI_ASSERT(0);
20252 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020253 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20254
20255 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020256 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020257
Jeff Johnsone7245742012-09-05 17:12:55 -070020258 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020259}/*WDI_ProcessExitBmpsRsp*/
20260
20261/**
20262 @brief Process Enter UAPSD Rsp function (called when a response
20263 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020264
20265 @param pWDICtx: pointer to the WLAN DAL context
20266 pEventData: pointer to the event information structure
20267
Jeff Johnson295189b2012-06-20 16:38:30 -070020268 @see
20269 @return Result of the function call
20270*/
20271WDI_Status
20272WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020273(
Jeff Johnson295189b2012-06-20 16:38:30 -070020274 WDI_ControlBlockType* pWDICtx,
20275 WDI_EventInfoType* pEventData
20276)
20277{
Jeff Johnson295189b2012-06-20 16:38:30 -070020278 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020279 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020281 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20282
Jeff Johnson295189b2012-06-20 16:38:30 -070020283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20284
20285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020287 -------------------------------------------------------------------------*/
20288 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20289 ( NULL == pEventData->pEventData))
20290 {
20291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 }
20296
20297 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20298
20299 /*-------------------------------------------------------------------------
20300 Extract response and send it to UMAC
20301 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020302 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20303 {
20304 wpalMemoryCopy( &halEnterUapsdRsp,
20305 pEventData->pEventData,
20306 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020307
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020308 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20309 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20310 }
20311 else
20312 {
20313 halStatus = *((eHalStatus*)pEventData->pEventData);
20314 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20315 }
20316
20317 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020318 {
20319 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20320 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20321 // the traffic to decide when to suspend the trigger frames when there is no traffic
20322 // activity on the trigger enabled ACs
20323 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20324
20325#ifdef WLAN_PERF
20326 // Increment the BD signature to refresh the fast path BD utilization
20327 pWDICtx->uBdSigSerialNum++;
20328#endif
20329 }
20330
20331 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020332 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020333
Jeff Johnsone7245742012-09-05 17:12:55 -070020334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020335}/*WDI_ProcessEnterUapsdRsp*/
20336
20337/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020338 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020339 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020340
20341 @param pWDICtx: pointer to the WLAN DAL context
20342 pEventData: pointer to the event information structure
20343
Jeff Johnson295189b2012-06-20 16:38:30 -070020344 @see
20345 @return Result of the function call
20346*/
20347WDI_Status
20348WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020349(
Jeff Johnson295189b2012-06-20 16:38:30 -070020350 WDI_ControlBlockType* pWDICtx,
20351 WDI_EventInfoType* pEventData
20352)
20353{
Jeff Johnson295189b2012-06-20 16:38:30 -070020354 eHalStatus halStatus;
20355 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020356 tHalExitUapsdRspParams halExitUapsdRsp;
20357 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20359
20360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020362 -------------------------------------------------------------------------*/
20363 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20364 ( NULL == pEventData->pEventData))
20365 {
20366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 }
20371
20372 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20373
20374 /*-------------------------------------------------------------------------
20375 Extract response and send it to UMAC
20376 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020377 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20378 {
20379 wpalMemoryCopy( &halExitUapsdRsp,
20380 pEventData->pEventData,
20381 sizeof(halExitUapsdRsp));
20382
20383 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20384 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20385 }
20386 else
20387 {
20388 halStatus = *((eHalStatus*)pEventData->pEventData);
20389 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20390 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020391 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20392 // directly instead of the FW WQ.
20393 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20394
20395#ifdef WLAN_PERF
20396 // Increment the BD signature to refresh the fast path BD utilization
20397 pWDICtx->uBdSigSerialNum++;
20398#endif
20399
20400 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020401 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020402
Jeff Johnsone7245742012-09-05 17:12:55 -070020403 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020404}/*WDI_ProcessExitUapsdRsp*/
20405
20406/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020407 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020408 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020409
20410 @param pWDICtx: pointer to the WLAN DAL context
20411 pEventData: pointer to the event information structure
20412
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 @see
20414 @return Result of the function call
20415*/
20416WDI_Status
20417WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020418(
Jeff Johnson295189b2012-06-20 16:38:30 -070020419 WDI_ControlBlockType* pWDICtx,
20420 WDI_EventInfoType* pEventData
20421)
20422{
20423 WDI_Status wdiStatus;
20424 eHalStatus halStatus;
20425 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20427
20428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 -------------------------------------------------------------------------*/
20431 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20432 ( NULL == pEventData->pEventData))
20433 {
20434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020438 }
20439
20440 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20441
20442 /*-------------------------------------------------------------------------
20443 Extract response and send it to UMAC
20444 -------------------------------------------------------------------------*/
20445 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020446 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020447
20448 /*Notify UMAC*/
20449 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20450
Jeff Johnsone7245742012-09-05 17:12:55 -070020451 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020452}/*WDI_ProcessSetUapsdAcParamsRsp*/
20453
20454/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020455 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020456 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020457
20458 @param pWDICtx: pointer to the WLAN DAL context
20459 pEventData: pointer to the event information structure
20460
Jeff Johnson295189b2012-06-20 16:38:30 -070020461 @see
20462 @return Result of the function call
20463*/
20464WDI_Status
20465WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020466(
Jeff Johnson295189b2012-06-20 16:38:30 -070020467 WDI_ControlBlockType* pWDICtx,
20468 WDI_EventInfoType* pEventData
20469)
20470{
20471 WDI_Status wdiStatus;
20472 eHalStatus halStatus;
20473 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20475
20476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 -------------------------------------------------------------------------*/
20479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20480 ( NULL == pEventData->pEventData))
20481 {
20482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020483 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020486 }
20487
20488 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20489
20490 /*-------------------------------------------------------------------------
20491 Extract response and send it to UMAC
20492 -------------------------------------------------------------------------*/
20493 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020494 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020495
20496 /*Notify UMAC*/
20497 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20498
Jeff Johnsone7245742012-09-05 17:12:55 -070020499 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020500}/*WDI_ProcessUpdateUapsdParamsRsp*/
20501
20502/**
20503 @brief Process Configure RXP filter Rsp function (called when a
20504 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020505
20506 @param pWDICtx: pointer to the WLAN DAL context
20507 pEventData: pointer to the event information structure
20508
Jeff Johnson295189b2012-06-20 16:38:30 -070020509 @see
20510 @return Result of the function call
20511*/
20512WDI_Status
20513WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020514(
Jeff Johnson295189b2012-06-20 16:38:30 -070020515 WDI_ControlBlockType* pWDICtx,
20516 WDI_EventInfoType* pEventData
20517)
20518{
20519 WDI_Status wdiStatus;
20520 eHalStatus halStatus;
20521 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20523
20524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020526 -------------------------------------------------------------------------*/
20527 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20528 ( NULL == pEventData->pEventData))
20529 {
20530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020534 }
20535
20536 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20537
20538 /*-------------------------------------------------------------------------
20539 Extract response and send it to UMAC
20540 -------------------------------------------------------------------------*/
20541 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020542 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020543
20544 /*Notify UMAC*/
20545 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20546
Jeff Johnsone7245742012-09-05 17:12:55 -070020547 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020548}/*WDI_ProcessConfigureRxpFilterRsp*/
20549
20550/**
20551 @brief Process Set beacon filter Rsp function (called when a
20552 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020553
20554 @param pWDICtx: pointer to the WLAN DAL context
20555 pEventData: pointer to the event information structure
20556
Jeff Johnson295189b2012-06-20 16:38:30 -070020557 @see
20558 @return Result of the function call
20559*/
20560WDI_Status
20561WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020562(
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 WDI_ControlBlockType* pWDICtx,
20564 WDI_EventInfoType* pEventData
20565)
20566{
20567 WDI_Status wdiStatus;
20568 eHalStatus halStatus;
20569 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20571
20572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 -------------------------------------------------------------------------*/
20575 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20576 ( NULL == pEventData->pEventData))
20577 {
20578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020582 }
20583
20584 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20585
20586 /*-------------------------------------------------------------------------
20587 Extract response and send it to UMAC
20588 -------------------------------------------------------------------------*/
20589 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020590 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020591
20592 /*Notify UMAC*/
20593 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20594
Jeff Johnsone7245742012-09-05 17:12:55 -070020595 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020596}/*WDI_ProcessSetBeaconFilterRsp*/
20597
20598/**
20599 @brief Process remove beacon filter Rsp function (called when a
20600 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020601
20602 @param pWDICtx: pointer to the WLAN DAL context
20603 pEventData: pointer to the event information structure
20604
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 @see
20606 @return Result of the function call
20607*/
20608WDI_Status
20609WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020610(
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 WDI_ControlBlockType* pWDICtx,
20612 WDI_EventInfoType* pEventData
20613)
20614{
20615 WDI_Status wdiStatus;
20616 eHalStatus halStatus;
20617 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20619
20620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 -------------------------------------------------------------------------*/
20623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20624 ( NULL == pEventData->pEventData))
20625 {
20626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 }
20631
20632 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20633
20634 /*-------------------------------------------------------------------------
20635 Extract response and send it to UMAC
20636 -------------------------------------------------------------------------*/
20637 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020639
20640 /*Notify UMAC*/
20641 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20642
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020644}/*WDI_ProcessRemBeaconFilterRsp*/
20645
20646/**
20647 @brief Process set RSSI thresholds Rsp function (called when a
20648 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020649
20650 @param pWDICtx: pointer to the WLAN DAL context
20651 pEventData: pointer to the event information structure
20652
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 @see
20654 @return Result of the function call
20655*/
20656WDI_Status
20657WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020658(
Jeff Johnson295189b2012-06-20 16:38:30 -070020659 WDI_ControlBlockType* pWDICtx,
20660 WDI_EventInfoType* pEventData
20661)
20662{
20663 WDI_Status wdiStatus;
20664 eHalStatus halStatus;
20665 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20667
20668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020670 -------------------------------------------------------------------------*/
20671 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20672 ( NULL == pEventData->pEventData))
20673 {
20674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020678 }
20679
20680 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20681
20682 /*-------------------------------------------------------------------------
20683 Extract response and send it to UMAC
20684 -------------------------------------------------------------------------*/
20685 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020687
20688 /*Notify UMAC*/
20689 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20690
Jeff Johnsone7245742012-09-05 17:12:55 -070020691 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020692}/*WDI_ProcessSetRSSIThresoldsRsp*/
20693
20694/**
20695 @brief Process host offload Rsp function (called when a
20696 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020697
20698 @param pWDICtx: pointer to the WLAN DAL context
20699 pEventData: pointer to the event information structure
20700
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 @see
20702 @return Result of the function call
20703*/
20704WDI_Status
20705WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020706(
Jeff Johnson295189b2012-06-20 16:38:30 -070020707 WDI_ControlBlockType* pWDICtx,
20708 WDI_EventInfoType* pEventData
20709)
20710{
20711 WDI_Status wdiStatus;
20712 eHalStatus halStatus;
20713 WDI_HostOffloadCb wdiHostOffloadCb;
20714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20715
20716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020717 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020718 -------------------------------------------------------------------------*/
20719 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20720 ( NULL == pEventData->pEventData))
20721 {
20722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020723 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 }
20727
20728 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20729
20730 /*-------------------------------------------------------------------------
20731 Extract response and send it to UMAC
20732 -------------------------------------------------------------------------*/
20733 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020735
20736 /*Notify UMAC*/
20737 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20738
Jeff Johnsone7245742012-09-05 17:12:55 -070020739 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020740}/*WDI_ProcessHostOffloadRsp*/
20741
20742/**
20743 @brief Process keep alive Rsp function (called when a
20744 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020745
20746 @param pWDICtx: pointer to the WLAN DAL context
20747 pEventData: pointer to the event information structure
20748
Jeff Johnson295189b2012-06-20 16:38:30 -070020749 @see
20750 @return Result of the function call
20751*/
20752WDI_Status
20753WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020754(
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 WDI_ControlBlockType* pWDICtx,
20756 WDI_EventInfoType* pEventData
20757)
20758{
20759 WDI_Status wdiStatus;
20760 eHalStatus halStatus;
20761 WDI_KeepAliveCb wdiKeepAliveCb;
20762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053020763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070020764 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20765
20766
20767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020768 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020769 -------------------------------------------------------------------------*/
20770 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20771 ( NULL == pEventData->pEventData))
20772 {
20773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 }
20778
Jeff Johnsone7245742012-09-05 17:12:55 -070020779 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20780
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 /*-------------------------------------------------------------------------
20782 Extract response and send it to UMAC
20783 -------------------------------------------------------------------------*/
20784 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020785 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020786
20787 /*Notify UMAC*/
20788 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20789
Jeff Johnsone7245742012-09-05 17:12:55 -070020790 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020791}/*WDI_ProcessKeepAliveRsp*/
20792
20793/**
20794 @brief Process wowl add ptrn Rsp function (called when a
20795 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020796
20797 @param pWDICtx: pointer to the WLAN DAL context
20798 pEventData: pointer to the event information structure
20799
Jeff Johnson295189b2012-06-20 16:38:30 -070020800 @see
20801 @return Result of the function call
20802*/
20803WDI_Status
20804WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020805(
Jeff Johnson295189b2012-06-20 16:38:30 -070020806 WDI_ControlBlockType* pWDICtx,
20807 WDI_EventInfoType* pEventData
20808)
20809{
Jeff Johnson295189b2012-06-20 16:38:30 -070020810 eHalStatus halStatus;
20811 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020812 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20813 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20814
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20816
20817 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020819 -------------------------------------------------------------------------*/
20820 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20821 ( NULL == pEventData->pEventData))
20822 {
20823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020824 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 }
20828
20829 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20830
20831 /*-------------------------------------------------------------------------
20832 Extract response and send it to UMAC
20833 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020834 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20835 {
20836 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20837 pEventData->pEventData,
20838 sizeof(halAddWowlBcastPtrRsp));
20839
20840 wdiWowlAddBcPtrRsp.wdiStatus =
20841 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20842 }
20843 else
20844 {
20845 halStatus = *((eHalStatus*)pEventData->pEventData);
20846 wdiWowlAddBcPtrRsp.wdiStatus =
20847 WDI_HAL_2_WDI_STATUS(halStatus);
20848 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020849
20850 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020851 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020852
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020854}/*WDI_ProcessWowlAddBcPtrnRsp*/
20855
20856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020859
20860 @param pWDICtx: pointer to the WLAN DAL context
20861 pEventData: pointer to the event information structure
20862
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 @see
20864 @return Result of the function call
20865*/
20866WDI_Status
20867WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020868(
Jeff Johnson295189b2012-06-20 16:38:30 -070020869 WDI_ControlBlockType* pWDICtx,
20870 WDI_EventInfoType* pEventData
20871)
20872{
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 eHalStatus halStatus;
20874 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020875 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20876 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20878
20879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020881 -------------------------------------------------------------------------*/
20882 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20883 ( NULL == pEventData->pEventData))
20884 {
20885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020889 }
20890
20891 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20892
20893 /*-------------------------------------------------------------------------
20894 Extract response and send it to UMAC
20895 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020896 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20897 {
20898 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20899 pEventData->pEventData,
20900 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020901
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020902 wdiWowlDelBcstPtrRsp.wdiStatus =
20903 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20904 }
20905 else
20906 {
20907 halStatus = *((eHalStatus*)pEventData->pEventData);
20908 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20909 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020911 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020912
Jeff Johnsone7245742012-09-05 17:12:55 -070020913 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020914}/*WDI_ProcessWowlDelBcPtrnRsp*/
20915
20916/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020917 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020918 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020919
20920 @param pWDICtx: pointer to the WLAN DAL context
20921 pEventData: pointer to the event information structure
20922
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 @see
20924 @return Result of the function call
20925*/
20926WDI_Status
20927WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020928(
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 WDI_ControlBlockType* pWDICtx,
20930 WDI_EventInfoType* pEventData
20931)
20932{
Jeff Johnson295189b2012-06-20 16:38:30 -070020933 eHalStatus halStatus;
20934 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020935 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20936 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20938
20939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 -------------------------------------------------------------------------*/
20942 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20943 ( NULL == pEventData->pEventData))
20944 {
20945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020949 }
20950
20951 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20952
20953 /*-------------------------------------------------------------------------
20954 Extract response and send it to UMAC
20955 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020956 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20957 {
20958 wpalMemoryCopy( &halEnterWowlRspParams,
20959 (wpt_uint8*)pEventData->pEventData,
20960 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020961
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020962 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20963 wdiwowlEnterRsp.status =
20964 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20965 }
20966 else
20967 {
20968 halStatus = *((eHalStatus*)pEventData->pEventData);
20969 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20970 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020972 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020973
Jeff Johnsone7245742012-09-05 17:12:55 -070020974 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020975}/*WDI_ProcessWowlEnterRsp*/
20976
20977/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020980
20981 @param pWDICtx: pointer to the WLAN DAL context
20982 pEventData: pointer to the event information structure
20983
Jeff Johnson295189b2012-06-20 16:38:30 -070020984 @see
20985 @return Result of the function call
20986*/
20987WDI_Status
20988WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020989(
Jeff Johnson295189b2012-06-20 16:38:30 -070020990 WDI_ControlBlockType* pWDICtx,
20991 WDI_EventInfoType* pEventData
20992)
20993{
Jeff Johnson295189b2012-06-20 16:38:30 -070020994 eHalStatus halStatus;
20995 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020996 tHalExitWowlRspParams halExitWowlRspParams;
20997 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20998
Jeff Johnson295189b2012-06-20 16:38:30 -070020999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21000
21001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021003 -------------------------------------------------------------------------*/
21004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21005 ( NULL == pEventData->pEventData))
21006 {
21007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021008 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021011 }
21012
21013 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
21014
21015 /*-------------------------------------------------------------------------
21016 Extract response and send it to UMAC
21017 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021018 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21019 {
21020 wpalMemoryCopy( &halExitWowlRspParams,
21021 pEventData->pEventData,
21022 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021023
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021024 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
21025 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
21026
21027 }
21028 else
21029 {
21030 halStatus = *((eHalStatus*)pEventData->pEventData);
21031 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21032 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021033 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021034 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021035
Jeff Johnsone7245742012-09-05 17:12:55 -070021036 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021037}/*WDI_ProcessWowlExitRsp*/
21038
21039/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021040 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 (called when a response is being received over the bus
21042 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021043
21044 @param pWDICtx: pointer to the WLAN DAL context
21045 pEventData: pointer to the event information structure
21046
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 @see
21048 @return Result of the function call
21049*/
21050WDI_Status
21051WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021052(
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 WDI_ControlBlockType* pWDICtx,
21054 WDI_EventInfoType* pEventData
21055)
21056{
21057 WDI_Status wdiStatus;
21058 eHalStatus halStatus;
21059 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21061
21062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021064 -------------------------------------------------------------------------*/
21065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21066 ( NULL == pEventData->pEventData))
21067 {
21068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021072 }
21073
21074 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21075
21076 /*-------------------------------------------------------------------------
21077 Extract response and send it to UMAC
21078 -------------------------------------------------------------------------*/
21079 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021081
21082 /*Notify UMAC*/
21083 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21084
Jeff Johnsone7245742012-09-05 17:12:55 -070021085 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021086}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21087
21088
21089/**
21090 @brief Process Nv download(called when a response
21091 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070021092
21093 @param pWDICtx: pointer to the WLAN DAL context
21094 pEventData: pointer to the event information structure
21095
Jeff Johnson295189b2012-06-20 16:38:30 -070021096 @see
21097 @return Result of the function call
21098*/
21099WDI_Status
21100WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021101(
Jeff Johnson295189b2012-06-20 16:38:30 -070021102 WDI_ControlBlockType* pWDICtx,
21103 WDI_EventInfoType* pEventData
21104)
21105{
21106
21107 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21108 tHalNvImgDownloadRspParams halNvDownloadRsp;
21109 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
21110
21111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021112 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 -------------------------------------------------------------------------*/
21114 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21115 ( NULL == pEventData->pEventData))
21116 {
21117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021121 }
21122
21123 /*-------------------------------------------------------------------------
21124 Extract response and send it to UMAC
21125 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 wpalMemoryCopy( &halNvDownloadRsp,
21127 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021128 sizeof(halNvDownloadRsp));
21129
21130 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21131
21132 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21134 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021135 {
21136 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021137 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021138 }
21139 else
21140 {
21141 /*Reset the Nv related global information in WDI context information */
21142 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21143 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21144 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21145 /*call WDA callback function for last fragment */
21146 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21147 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21148 }
21149
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021151}
21152#ifdef WLAN_FEATURE_VOWIFI_11R
21153/**
21154 @brief Process Add TSpec Rsp function (called when a response
21155 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021156
21157 @param pWDICtx: pointer to the WLAN DAL context
21158 pEventData: pointer to the event information structure
21159
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 @see
21161 @return Result of the function call
21162*/
21163WDI_Status
21164WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021165(
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 WDI_ControlBlockType* pWDICtx,
21167 WDI_EventInfoType* pEventData
21168)
21169{
21170 WDI_Status wdiStatus;
21171 tAggrAddTsRspParams aggrAddTsRsp;
21172 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21174
21175 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021176 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021177 -------------------------------------------------------------------------*/
21178 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21179 ( NULL == pEventData->pEventData))
21180 {
21181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 }
21186
21187 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21188
21189 /*-------------------------------------------------------------------------
21190 Extract response and send it to UMAC
21191 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021192 wpalMemoryCopy( &aggrAddTsRsp,
21193 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 sizeof(aggrAddTsRsp));
21195
21196 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021197 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021198
21199 /*Notify UMAC*/
21200 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21201
Jeff Johnsone7245742012-09-05 17:12:55 -070021202 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021203}/*WDI_ProcessAddTSpecRsp*/
21204#endif /* WLAN_FEATURE_VOWIFI_11R */
21205
21206/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021207 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021208 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021209
21210 @param pWDICtx: pointer to the WLAN DAL context
21211 pEventData: pointer to the event information structure
21212
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 @see
21214 @return Result of the function call
21215*/
21216WDI_Status
21217WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021218(
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 WDI_ControlBlockType* pWDICtx,
21220 WDI_EventInfoType* pEventData
21221)
21222{
21223 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21224 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21225 tHalHostResumeRspParams hostResumeRspMsg;
21226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21227
21228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021230 -------------------------------------------------------------------------*/
21231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21232 ( NULL == pEventData->pEventData))
21233 {
21234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021238 }
21239
21240 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21241
21242 /*-------------------------------------------------------------------------
21243 Extract response and send it to UMAC
21244 -------------------------------------------------------------------------*/
21245
Jeff Johnsone7245742012-09-05 17:12:55 -070021246 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021247 (wpt_uint8*)pEventData->pEventData,
21248 sizeof(hostResumeRspMsg));
21249
Jeff Johnsone7245742012-09-05 17:12:55 -070021250 wdiResumeRspParams.wdiStatus =
21251 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021252
21253 /*Notify UMAC*/
21254 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21255
21256 return WDI_STATUS_SUCCESS;
21257}
21258
21259/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021260 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021261 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021262
21263 @param pWDICtx: pointer to the WLAN DAL context
21264 pEventData: pointer to the event information structure
21265
Jeff Johnson295189b2012-06-20 16:38:30 -070021266 @see
21267 @return Result of the function call
21268*/
21269WDI_Status
21270WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021271(
Jeff Johnson295189b2012-06-20 16:38:30 -070021272 WDI_ControlBlockType* pWDICtx,
21273 WDI_EventInfoType* pEventData
21274)
21275{
21276 WDI_Status wdiStatus;
21277 eHalStatus halStatus;
21278 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21280
21281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021283 -------------------------------------------------------------------------*/
21284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21285 ( NULL == pEventData->pEventData))
21286 {
21287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021292
21293 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021294
21295 /*-------------------------------------------------------------------------
21296 Extract response and send it to UMAC
21297 -------------------------------------------------------------------------*/
21298 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021299 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021300
21301 /*Notify UMAC*/
21302 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21303
Jeff Johnsone7245742012-09-05 17:12:55 -070021304 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021305}/*WDI_ProcessSetTxPerTrackingRsp*/
21306
21307/*==========================================================================
21308 Indications from HAL
21309 ==========================================================================*/
21310/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 indication of this kind is being received over the bus
21313 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021314
21315 @param pWDICtx: pointer to the WLAN DAL context
21316 pEventData: pointer to the event information structure
21317
Jeff Johnson295189b2012-06-20 16:38:30 -070021318 @see
21319 @return Result of the function call
21320*/
21321WDI_Status
21322WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021323(
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 WDI_ControlBlockType* pWDICtx,
21325 WDI_EventInfoType* pEventData
21326)
21327{
21328 WDI_LowLevelIndType wdiInd;
21329 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21331
21332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 -------------------------------------------------------------------------*/
21335 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21336 ( NULL == pEventData->pEventData))
21337 {
21338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021339 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021342 }
21343
21344 /*-------------------------------------------------------------------------
21345 Extract indication and send it to UMAC
21346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021347 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21348 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021349 sizeof(tHalRSSINotification));
21350
21351 /*Fill in the indication parameters*/
21352 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21353 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21354 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21355 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21356 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21357 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21358 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21359 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21360 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21361 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21362 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21363 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21364 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021365 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21366 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021367
ltimariub77f24b2013-01-24 18:54:33 -080021368 if ( pWDICtx->wdiLowLevelIndCB )
21369 {
21370 /*Notify UMAC of indication*/
21371 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21372 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021373
21374 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021375}/*WDI_ProcessLowRSSIInd*/
21376
21377
21378/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021379 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 an indication of this kind is being received over the
21381 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021382
21383 @param pWDICtx: pointer to the WLAN DAL context
21384 pEventData: pointer to the event information structure
21385
Jeff Johnson295189b2012-06-20 16:38:30 -070021386 @see
21387 @return Result of the function call
21388*/
21389WDI_Status
21390WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021391(
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 WDI_ControlBlockType* pWDICtx,
21393 WDI_EventInfoType* pEventData
21394)
21395{
21396 WDI_Status wdiStatus;
21397 eHalStatus halStatus;
21398 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021399 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21401
21402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021404 -------------------------------------------------------------------------*/
21405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21406 ( NULL == pEventData->pEventData))
21407 {
21408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021412 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021413 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021414 /*-------------------------------------------------------------------------
21415 Extract indication and send it to UMAC
21416 -------------------------------------------------------------------------*/
21417 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21418 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021419 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021420
21421 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021422 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021423 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21424 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021425 if ( pWDICtx->wdiLowLevelIndCB )
21426 {
21427 /*Notify UMAC*/
21428 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21429 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021430
21431 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021432}/*WDI_ProcessMissedBeaconInd*/
21433
21434
21435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021436 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021437 an indication of this kind is being received over the
21438 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021439
21440 @param pWDICtx: pointer to the WLAN DAL context
21441 pEventData: pointer to the event information structure
21442
Jeff Johnson295189b2012-06-20 16:38:30 -070021443 @see
21444 @return Result of the function call
21445*/
21446WDI_Status
21447WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021448(
Jeff Johnson295189b2012-06-20 16:38:30 -070021449 WDI_ControlBlockType* pWDICtx,
21450 WDI_EventInfoType* pEventData
21451)
21452{
21453 WDI_Status wdiStatus;
21454 eHalStatus halStatus;
21455 WDI_LowLevelIndType wdiInd;
21456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21457
21458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021460 -------------------------------------------------------------------------*/
21461 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21462 ( NULL == pEventData->pEventData))
21463 {
21464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 }
21469
21470 /*-------------------------------------------------------------------------
21471 Extract indication and send it to UMAC
21472 -------------------------------------------------------------------------*/
21473 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21474 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021475 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021476
21477 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021478 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021479 /* ! TO DO - fill in from HAL struct:
21480 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21481
ltimariub77f24b2013-01-24 18:54:33 -080021482 if ( pWDICtx->wdiLowLevelIndCB )
21483 {
21484 /*Notify UMAC*/
21485 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21486 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021487
21488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021489}/*WDI_ProcessUnkAddrFrameInd*/
21490
21491
21492/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021493 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021494 indication of this kind is being received over the bus
21495 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021496
21497 @param pWDICtx: pointer to the WLAN DAL context
21498 pEventData: pointer to the event information structure
21499
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 @see
21501 @return Result of the function call
21502*/
21503WDI_Status
21504WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021505(
Jeff Johnson295189b2012-06-20 16:38:30 -070021506 WDI_ControlBlockType* pWDICtx,
21507 WDI_EventInfoType* pEventData
21508)
21509{
21510 WDI_LowLevelIndType wdiInd;
21511 tpSirMicFailureInd pHalMicFailureInd;
21512
21513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21514
21515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021517 -------------------------------------------------------------------------*/
21518 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21519 ( NULL == pEventData->pEventData))
21520 {
21521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021526
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21528 /*-------------------------------------------------------------------------
21529 Extract indication and send it to UMAC
21530 -------------------------------------------------------------------------*/
21531
21532 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021533 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021534 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21535 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21536 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21537 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21538 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21539 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21540 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21541 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021542 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021543 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021544 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021546 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 pHalMicFailureInd->info.keyId;
21548 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21549 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21550 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21551 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021552
21553 if ( pWDICtx->wdiLowLevelIndCB )
21554 {
21555 /*Notify UMAC*/
21556 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21557 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021558
21559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021560}/*WDI_ProcessMicFailureInd*/
21561
21562
21563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021564 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021565 an indication of this kind is being received over the
21566 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021567
21568 @param pWDICtx: pointer to the WLAN DAL context
21569 pEventData: pointer to the event information structure
21570
Jeff Johnson295189b2012-06-20 16:38:30 -070021571 @see
21572 @return Result of the function call
21573*/
21574WDI_Status
21575WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021576(
Jeff Johnson295189b2012-06-20 16:38:30 -070021577 WDI_ControlBlockType* pWDICtx,
21578 WDI_EventInfoType* pEventData
21579)
21580{
21581 WDI_Status wdiStatus;
21582 eHalStatus halStatus;
21583 WDI_LowLevelIndType wdiInd;
21584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21585
21586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021588 -------------------------------------------------------------------------*/
21589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21590 ( NULL == pEventData->pEventData))
21591 {
21592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021596 }
21597
21598 /*-------------------------------------------------------------------------
21599 Extract indication and send it to UMAC
21600 -------------------------------------------------------------------------*/
21601
21602 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21603 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021604 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021605
21606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21607 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021608
Jeff Johnson295189b2012-06-20 16:38:30 -070021609 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21611 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021612
ltimariub77f24b2013-01-24 18:54:33 -080021613 if ( pWDICtx->wdiLowLevelIndCB )
21614 {
21615 /*Notify UMAC*/
21616 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21617 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021618
21619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021620}/*WDI_ProcessFatalErrorInd*/
21621
21622/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021623 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 an indication of this kind is being received over the
21625 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021626
21627 @param pWDICtx: pointer to the WLAN DAL context
21628 pEventData: pointer to the event information structure
21629
Jeff Johnson295189b2012-06-20 16:38:30 -070021630 @see
21631 @return Result of the function call
21632*/
21633WDI_Status
21634WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021635(
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 WDI_ControlBlockType* pWDICtx,
21637 WDI_EventInfoType* pEventData
21638)
21639{
21640 tDeleteStaContextParams halDelSTACtx;
21641 WDI_LowLevelIndType wdiInd;
21642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21643
21644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021646 -------------------------------------------------------------------------*/
21647 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21648 ( NULL == pEventData->pEventData))
21649 {
21650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021654 }
21655
21656 /*-------------------------------------------------------------------------
21657 Extract indication and send it to UMAC
21658 -------------------------------------------------------------------------*/
21659
21660 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 wpalMemoryCopy( &halDelSTACtx,
21662 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021663 sizeof(halDelSTACtx));
21664
21665 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021666 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021667
21668 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21669 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21670 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21671 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21672
Jeff Johnsone7245742012-09-05 17:12:55 -070021673 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021674 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021675 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021677 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21678 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021679
ltimariub77f24b2013-01-24 18:54:33 -080021680 if ( pWDICtx->wdiLowLevelIndCB )
21681 {
21682 /*Notify UMAC*/
21683 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21684 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021685
21686 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021687}/*WDI_ProcessDelSTAInd*/
21688
21689/**
21690*@brief Process Coex Indication function (called when
21691 an indication of this kind is being received over the
21692 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021693
21694 @param pWDICtx: pointer to the WLAN DAL context
21695 pEventData: pointer to the event information structure
21696
Jeff Johnson295189b2012-06-20 16:38:30 -070021697 @see
21698 @return Result of the function call
21699*/
21700WDI_Status
21701WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021702(
Jeff Johnson295189b2012-06-20 16:38:30 -070021703 WDI_ControlBlockType* pWDICtx,
21704 WDI_EventInfoType* pEventData
21705)
21706{
21707 WDI_LowLevelIndType wdiInd;
21708 tCoexIndMsg halCoexIndMsg;
21709 wpt_uint32 index;
21710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21711
21712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021713 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021714 -------------------------------------------------------------------------*/
21715 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21716 ( NULL == pEventData->pEventData ))
21717 {
21718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021720 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021722 }
21723
21724 /*-------------------------------------------------------------------------
21725 Extract indication and send it to UMAC
21726 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021727 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21728 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021729 sizeof(halCoexIndMsg.coexIndParams) );
21730
21731 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021732 wdiInd.wdiIndicationType = WDI_COEX_IND;
21733 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021734 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21735 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 }
21738
21739 // DEBUG
21740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21741 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021742 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21743 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21744 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21745 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21746 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021747
ltimariub77f24b2013-01-24 18:54:33 -080021748 if ( pWDICtx->wdiLowLevelIndCB )
21749 {
21750 /*Notify UMAC*/
21751 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21752 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021753
21754 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021755}/*WDI_ProcessCoexInd*/
21756
21757/**
21758*@brief Process Tx Complete Indication function (called when
21759 an indication of this kind is being received over the
21760 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021761
21762 @param pWDICtx: pointer to the WLAN DAL context
21763 pEventData: pointer to the event information structure
21764
Jeff Johnson295189b2012-06-20 16:38:30 -070021765 @see
21766 @return Result of the function call
21767*/
21768WDI_Status
21769WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021770(
Jeff Johnson295189b2012-06-20 16:38:30 -070021771 WDI_ControlBlockType* pWDICtx,
21772 WDI_EventInfoType* pEventData
21773)
21774{
21775 WDI_LowLevelIndType wdiInd;
21776 tTxComplIndMsg halTxComplIndMsg;
21777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21778
21779 /*-------------------------------------------------------------------------
21780 Sanity check
21781 -------------------------------------------------------------------------*/
21782 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21783 ( NULL == pEventData->pEventData ))
21784 {
21785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021787 WDI_ASSERT( 0 );
21788 return WDI_STATUS_E_FAILURE;
21789 }
21790
21791 /*-------------------------------------------------------------------------
21792 Extract indication and send it to UMAC
21793 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021794 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21795 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021796 sizeof(halTxComplIndMsg.txComplParams) );
21797
21798 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021799 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021800
21801 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21802 &halTxComplIndMsg.txComplParams,
21803 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021804
ltimariub77f24b2013-01-24 18:54:33 -080021805 if ( pWDICtx->wdiLowLevelIndCB )
21806 {
21807 /*Notify UMAC*/
21808 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21809 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021810
21811 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021812}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021813#ifdef FEATURE_WLAN_TDLS
21814/**
21815*@brief Process TDLS Indication function (called when
21816 an indication of this kind is being received over the
21817 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021818
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021819 @param pWDICtx: pointer to the WLAN DAL context
21820 pEventData: pointer to the event information structure
21821
21822 @see
21823 @return Result of the function call
21824*/
21825WDI_Status
21826WDI_ProcessTdlsInd
21827(
21828 WDI_ControlBlockType* pWDICtx,
21829 WDI_EventInfoType* pEventData
21830)
21831{
21832 WDI_LowLevelIndType wdiInd;
21833 tTdlsIndMsg halTdlsIndMsg;
21834 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21835
21836 /*-------------------------------------------------------------------------
21837 Sanity check
21838 -------------------------------------------------------------------------*/
21839 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21840 ( NULL == pEventData->pEventData ))
21841 {
21842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21843 "%s: Invalid parameters", __func__);
21844 WDI_ASSERT( 0 );
21845 return WDI_STATUS_E_FAILURE;
21846 }
21847
21848 /*-------------------------------------------------------------------------
21849 Extract indication and send it to UMAC
21850 -------------------------------------------------------------------------*/
21851 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21852 pEventData->pEventData,
21853 sizeof(halTdlsIndMsg.tdlsIndParams) );
21854
21855 /*Fill in the indication parameters*/
21856 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21857
21858 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21859 = halTdlsIndMsg.tdlsIndParams.status;
21860
21861 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21862 = halTdlsIndMsg.tdlsIndParams.staIdx;
21863
21864 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21865 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21866
Atul Mittalbb2aad02014-09-22 19:09:36 +053021867 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21868 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021869 /*Notify UMAC*/
21870 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21871
21872 return WDI_STATUS_SUCCESS;
21873}/*WDI_ProcessTdlsInd*/
21874#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021875/**
Viral Modid86bde22012-12-10 13:09:21 -080021876*@brief Process Noa Start Indication function (called when
21877 an indication of this kind is being received over the
21878 bus from HAL)
21879
21880 @param pWDICtx: pointer to the WLAN DAL context
21881 pEventData: pointer to the event information structure
21882
21883 @see
21884 @return Result of the function call
21885*/
21886WDI_Status
21887WDI_ProcessP2pNoaStartInd
21888(
21889 WDI_ControlBlockType* pWDICtx,
21890 WDI_EventInfoType* pEventData
21891)
21892{
21893 WDI_LowLevelIndType wdiInd;
21894 tNoaStartIndMsg halNoaStartIndMsg;
21895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21896
21897 /*-------------------------------------------------------------------------
21898 Sanity check
21899 -------------------------------------------------------------------------*/
21900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21901 ( NULL == pEventData->pEventData ))
21902 {
21903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21904 "%s: Invalid parameters", __func__);
21905 WDI_ASSERT( 0 );
21906 return WDI_STATUS_E_FAILURE;
21907 }
21908
21909 /*-------------------------------------------------------------------------
21910 Extract indication and send it to UMAC
21911 -------------------------------------------------------------------------*/
21912 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21913 pEventData->pEventData,
21914 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21915
21916 /*Fill in the indication parameters*/
21917 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21918
21919 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21920 = halNoaStartIndMsg.noaStartIndParams.status;
21921
21922 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21923 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21924
21925 /*Notify UMAC*/
21926 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21927
21928 return WDI_STATUS_SUCCESS;
21929}/*WDI_ProcessNoaAttrInd*/
21930
21931/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021932*@brief Process Noa Attr Indication function (called when
21933 an indication of this kind is being received over the
21934 bus from HAL)
21935
21936 @param pWDICtx: pointer to the WLAN DAL context
21937 pEventData: pointer to the event information structure
21938
21939 @see
21940 @return Result of the function call
21941*/
21942WDI_Status
21943WDI_ProcessP2pNoaAttrInd
21944(
21945 WDI_ControlBlockType* pWDICtx,
21946 WDI_EventInfoType* pEventData
21947)
21948{
21949 WDI_LowLevelIndType wdiInd;
21950 tNoaAttrIndMsg halNoaAttrIndMsg;
21951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21952
21953 /*-------------------------------------------------------------------------
21954 Sanity check
21955 -------------------------------------------------------------------------*/
21956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21957 ( NULL == pEventData->pEventData ))
21958 {
21959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 WDI_ASSERT( 0 );
21962 return WDI_STATUS_E_FAILURE;
21963 }
21964
21965 /*-------------------------------------------------------------------------
21966 Extract indication and send it to UMAC
21967 -------------------------------------------------------------------------*/
21968 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21969 pEventData->pEventData,
21970 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21971
21972 /*Fill in the indication parameters*/
21973 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021974
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21976 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021977
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21979 = halNoaAttrIndMsg.noaAttrIndParams.index;
21980 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21981 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21982 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21983 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021984
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21986 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21987 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21988 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21989 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21990 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21991 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21992 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021993
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21995 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21996 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21997 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21998 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21999 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
22000 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
22001 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
22002
ltimariub77f24b2013-01-24 18:54:33 -080022003 if ( pWDICtx->wdiLowLevelIndCB )
22004 {
22005 /*Notify UMAC*/
22006 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22007 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022008
22009 return WDI_STATUS_SUCCESS;
22010}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022011
22012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022014 an indication of this kind is being received over the
22015 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022016
22017 @param pWDICtx: pointer to the WLAN DAL context
22018 pEventData: pointer to the event information structure
22019
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 @see
22021 @return Result of the function call
22022*/
22023WDI_Status
22024WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022025(
Jeff Johnson295189b2012-06-20 16:38:30 -070022026 WDI_ControlBlockType* pWDICtx,
22027 WDI_EventInfoType* pEventData
22028)
22029{
22030 WDI_LowLevelIndType wdiInd;
22031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022032
Jeff Johnson295189b2012-06-20 16:38:30 -070022033 /*-------------------------------------------------------------------------
22034 Extract indication and send it to UMAC
22035 -------------------------------------------------------------------------*/
22036 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
22038
ltimariub77f24b2013-01-24 18:54:33 -080022039 if ( pWDICtx->wdiLowLevelIndCB )
22040 {
22041 /*Notify UMAC*/
22042 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22043 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022044
Jeff Johnsone7245742012-09-05 17:12:55 -070022045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022046}/*WDI_ProcessTxPerHitInd*/
22047
Jeff Johnson295189b2012-06-20 16:38:30 -070022048/**
Yue Mab9c86f42013-08-14 15:59:08 -070022049 @brief Process Periodic Tx Pattern Fw Indication function
22050
22051 @param pWDICtx: pointer to the WLAN DAL context
22052 pEventData: pointer to the event information structure
22053
22054 @see
22055 @return Result of the function call
22056*/
22057WDI_Status
22058WDI_ProcessPeriodicTxPtrnFwInd
22059(
22060 WDI_ControlBlockType* pWDICtx,
22061 WDI_EventInfoType* pEventData
22062)
22063{
22064 WDI_LowLevelIndType wdiInd;
22065
22066 /*-------------------------------------------------------------------------
22067 Sanity check
22068 -------------------------------------------------------------------------*/
22069 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22070 (NULL == pEventData->pEventData))
22071 {
22072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22073 "%s: Invalid parameters", __func__);
22074 WDI_ASSERT(0);
22075 return WDI_STATUS_E_FAILURE;
22076 }
22077
22078 /*-------------------------------------------------------------------------
22079 Extract indication and send it to UMAC
22080 -------------------------------------------------------------------------*/
22081 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22082 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22083 sizeof(tHalPeriodicTxPtrnFwInd));
22084
22085 if (pWDICtx->wdiLowLevelIndCB)
22086 {
22087 /*Notify UMAC*/
22088 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22089 }
22090
22091 return WDI_STATUS_SUCCESS;
22092}
22093
22094/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022095 @brief WDI_ProcessFTMCommandReq
22096 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022097
22098 @param pWDICtx: pointer to the WLAN DAL context
22099 pEventData: pointer to the event information structure
22100
Jeff Johnson295189b2012-06-20 16:38:30 -070022101 @see
22102 @return Result of the function call
22103*/
22104WDI_Status
22105WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022106(
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 WDI_ControlBlockType* pWDICtx,
22108 WDI_EventInfoType* pEventData
22109)
22110{
22111 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22112 wpt_uint8 *ftmCommandBuffer = NULL;
22113 wpt_uint16 dataOffset;
22114 wpt_uint16 bufferSize;
22115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 -------------------------------------------------------------------------*/
22118 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22119 ( NULL == pEventData->pEventData))
22120
22121 {
22122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022126 }
22127
22128 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22129
22130 /* Get MSG Buffer */
22131 WDI_GetMessageBuffer(pWDICtx,
22132 WDI_FTM_CMD_REQ,
22133 ftmCommandReq->bodyLength,
22134 &ftmCommandBuffer,
22135 &dataOffset,
22136 &bufferSize);
22137
22138 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22139 ftmCommandReq->FTMCommandBody,
22140 ftmCommandReq->bodyLength);
22141
22142 /* Send MSG */
22143 return WDI_SendMsg(pWDICtx,
22144 ftmCommandBuffer,
22145 bufferSize,
22146 pEventData->pCBfnc,
22147 pEventData->pUserData,
22148 WDI_FTM_CMD_RESP);
22149}
22150
22151/**
22152 @brief WDI_ProcessFTMCommandRsp
22153 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022154
22155 @param pWDICtx: pointer to the WLAN DAL context
22156 pEventData: pointer to the event information structure
22157
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 @see
22159 @return Result of the function call
22160*/
22161WDI_Status
22162WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022163(
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 WDI_ControlBlockType* pWDICtx,
22165 WDI_EventInfoType* pEventData
22166)
22167{
22168 WDI_FTMCommandRspCb ftmCMDRspCb;
22169 tProcessPttRspParams *ftmCMDRspData = NULL;
22170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22171
22172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 -------------------------------------------------------------------------*/
22175 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22176 ( NULL == pEventData->pEventData))
22177 {
22178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022182 }
22183
22184 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22185
22186 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22187
Jeff Johnsone7245742012-09-05 17:12:55 -070022188 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22189 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022190 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22191
22192 /*Notify UMAC*/
22193 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22194
Jeff Johnsone7245742012-09-05 17:12:55 -070022195 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022196}
Jeff Johnson295189b2012-06-20 16:38:30 -070022197/**
22198 @brief WDI_ProcessHalDumpCmdReq
22199 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022200
22201 @param pWDICtx: pointer to the WLAN DAL context
22202 pEventData: pointer to the event information structure
22203
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 @see
22205 @return Result of the function call
22206*/
22207WDI_Status
22208WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022209(
Jeff Johnson295189b2012-06-20 16:38:30 -070022210 WDI_ControlBlockType* pWDICtx,
22211 WDI_EventInfoType* pEventData
22212)
22213{
22214 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22215 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22216 wpt_uint16 usDataOffset = 0;
22217 wpt_uint16 usSendSize = 0;
22218 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022219 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022220
22221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022223 -------------------------------------------------------------------------*/
22224 if (( NULL == pEventData ) ||
22225 ( NULL == pEventData->pEventData) ||
22226 ( NULL == pEventData->pCBfnc ))
22227 {
22228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022232 }
22233
22234 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
22235 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
22236
22237 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022238 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022239 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070022240 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022241 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022242 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022243 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070022244 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070022246 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022247 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070022248
Jeff Johnson295189b2012-06-20 16:38:30 -070022249 /*-----------------------------------------------------------------------
22250 Get message buffer
22251 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022252 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022253 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
22254 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022255 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
22257 {
22258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022259 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
22261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022263 }
22264
Jeff Johnsone7245742012-09-05 17:12:55 -070022265 wpalMemoryCopy( pSendBuffer+usDataOffset,
22266 &halDumpCmdReqMsg.dumpCmdReqParams,
22267 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070022268
22269 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022270 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022271
22272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022275 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22276 wdiHALDumpCmdRspCb, pEventData->pUserData,
22277 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022278}
22279
22280/**
22281 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 Process hal Dump Command Response from HAL, simply route to HDD
22283
22284 @param pWDICtx: pointer to the WLAN DAL context
22285 pEventData: pointer to the event information structure
22286
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 @see
22288 @return Result of the function call
22289*/
22290WDI_Status
22291WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022292(
Jeff Johnson295189b2012-06-20 16:38:30 -070022293 WDI_ControlBlockType* pWDICtx,
22294 WDI_EventInfoType* pEventData
22295)
22296{
22297 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022298 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022299 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22300
22301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 -------------------------------------------------------------------------*/
22304 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22305 ( NULL == pEventData->pEventData))
22306 {
22307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 }
22312
Jeff Johnsone7245742012-09-05 17:12:55 -070022313 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022314
22315 /*Initialize the WDI Response structure */
22316 wdiHALDumpCmdRsp.usBufferLen = 0;
22317 wdiHALDumpCmdRsp.pBuffer = NULL;
22318
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022319 wpalMemoryCopy( &halDumpCmdRspParams,
22320 pEventData->pEventData,
22321 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022322
22323 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022324 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022325
22326 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022327 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022328 {
22329 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022330 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22331 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22332
22333 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22334 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022335 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022336 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022337
Jeff Johnson295189b2012-06-20 16:38:30 -070022338 /*Notify UMAC*/
22339 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22340
22341 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22342 {
22343 /* Free the allocated buffer */
22344 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22345 }
22346 return WDI_STATUS_SUCCESS;
22347}
22348
22349/*==========================================================================
22350 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022351
Jeff Johnson295189b2012-06-20 16:38:30 -070022352 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022354==========================================================================*/
22355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022356 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022357 when it wishes to send up a notification like the ones
22358 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022359
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022361
22362 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022363 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022364 wctsNotifyCBData: the callback data of the user
22365
Jeff Johnson295189b2012-06-20 16:38:30 -070022366 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022367
22368 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022369*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022370void
Jeff Johnson295189b2012-06-20 16:38:30 -070022371WDI_NotifyMsgCTSCB
22372(
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 WCTS_NotifyEventType wctsEvent,
22375 void* wctsNotifyCBData
22376)
22377{
Jeff Johnsone7245742012-09-05 17:12:55 -070022378 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22380
22381 if (NULL == pWDICtx )
22382 {
22383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022386 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022387 }
22388
22389 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22390 {
22391 /* callback presumably occurred after close */
22392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022393 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 }
22396
22397 if ( WCTS_EVENT_OPEN == wctsEvent )
22398 {
22399 /*Flag must be set atomically as it is checked from incoming request
22400 functions*/
22401 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022402 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022403
22404 /*Nothing to do - so try to dequeue any pending request that may have
22405 occurred while we were trying to establish this*/
22406 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022407 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022408 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 {
22411 /*Flag must be set atomically as it is checked from incoming request
22412 functions*/
22413 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022415
22416 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022417 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 wpalMutexRelease(&pWDICtx->wptMutex);
22419
22420 /*Notify that the Control Channel is closed */
22421 wpalEventSet(&pWDICtx->wctsActionEvent);
22422 }
22423
22424}/*WDI_NotifyMsgCTSCB*/
22425
22426
22427/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022428 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022429 when it wishes to send up a packet received over the
22430 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022431
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022433
22434 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 pMsg: the packet
22436 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022437 wctsRxMsgCBData: the callback data of the user
22438
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022440
22441 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022442*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022443void
22444WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022445(
Jeff Johnsone7245742012-09-05 17:12:55 -070022446 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 void* pMsg,
22448 wpt_uint32 uLen,
22449 void* wctsRxMsgCBData
22450)
22451{
Jeff Johnsone7245742012-09-05 17:12:55 -070022452 tHalMsgHeader *pHalMsgHeader;
22453 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22456
22457 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022460 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022461 ( uLen < sizeof(tHalMsgHeader)))
22462 {
22463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022466 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022467 }
22468
22469 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22470 {
22471 /* callback presumably occurred after close */
22472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022473 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022474 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 }
22476
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 context - so no serialization is necessary here
22479 ! - revisit this assumption */
22480
22481 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22482
22483 if ( uLen != pHalMsgHeader->msgLen )
22484 {
22485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22486 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022487 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022488 wpalWlanReload();
22489
Jeff Johnsone7245742012-09-05 17:12:55 -070022490 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022491 }
22492
22493 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22494
22495 /*The message itself starts after the header*/
22496 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22497 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22498 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22499 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22500
22501
22502 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22503 {
22504 /*Stop the timer as the response was received */
22505 /*!UT - check for potential race conditions between stop and response */
22506 wpalTimerStop(&pWDICtx->wptResponseTimer);
22507 }
22508 /* Check if we receive a response message which is not expected */
22509 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22510 {
22511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22512 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22513 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022514 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022515 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22516 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022517
22518 if (gWDICb.bEnableSSR == false)
22519 {
22520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22521 "SSR is not enabled on WDI timeout");
22522 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22523 return;
22524 }
22525 wpalWcnssResetIntr();
22526 /* if this timer fires, it means Riva did not receive the FIQ */
22527 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22528
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 return;
22530 }
22531
22532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22533 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22534
22535 /*Post response event to the state machine*/
22536 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22537
22538}/*WDI_RXMsgCTSCB*/
22539
22540
22541/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022543========================================================================*/
22544
22545/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022546 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022547 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022548
Jeff Johnson295189b2012-06-20 16:38:30 -070022549 @param pWDICtx - pointer to the control block
22550
22551 @return Result of the function call
22552*/
22553WPT_INLINE WDI_Status
22554WDI_CleanCB
22555(
22556 WDI_ControlBlockType* pWDICtx
22557)
22558{
22559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22560
22561 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022562 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022563
Jeff Johnsone7245742012-09-05 17:12:55 -070022564 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022565 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22566 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22567
22568 WDI_ResetAssocSessions( pWDICtx );
22569
22570 return WDI_STATUS_SUCCESS;
22571}/*WDI_CleanCB*/
22572
22573
22574/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022575 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022576
Jeff Johnsone7245742012-09-05 17:12:55 -070022577
22578 @param pWDICtx: pointer to the WLAN DAL context
22579 pEventData: pointer to the event information structure
22580
Jeff Johnson295189b2012-06-20 16:38:30 -070022581 @see
22582 @return Result of the function call
22583*/
22584WPT_INLINE WDI_Status
22585WDI_ProcessRequest
22586(
22587 WDI_ControlBlockType* pWDICtx,
22588 WDI_EventInfoType* pEventData
22589)
22590{
22591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22592
Jeff Johnsone7245742012-09-05 17:12:55 -070022593 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 already checked these pointers*/
22595
22596 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22597 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022598 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022600 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022601 WDI_getReqMsgString(pEventData->wdiRequest),
22602 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22603 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22604 }
22605 else
22606 {
22607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022608 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 pEventData->wdiRequest);
22610 return WDI_STATUS_E_NOT_IMPLEMENT;
22611 }
22612}/*WDI_ProcessRequest*/
22613
22614
22615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022616 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022617 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022618 prefixes it with a send message header
22619
22620 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022621 wdiReqType: type of the request being sent
22622 uBufferLen: message buffer len
22623 pMsgBuffer: resulting allocated buffer
22624 pusDataOffset: offset in the buffer where the caller
22625 can start copying its message data
22626 puBufferSize: the resulting buffer size (offset+buff
22627 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022628
Jeff Johnson295189b2012-06-20 16:38:30 -070022629 @see
22630 @return Result of the function call
22631*/
22632WDI_Status
22633WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022634(
22635 WDI_ControlBlockType* pWDICtx,
22636 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022638 wpt_uint8** pMsgBuffer,
22639 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 wpt_uint16* pusBufferSize
22641)
22642{
22643 tHalMsgHeader halMsgHeader;
22644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22645
Jeff Johnsone7245742012-09-05 17:12:55 -070022646 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022647 again*/
22648
22649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022650 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022651 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022652 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022653 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22654 if ( NULL == *pMsgBuffer )
22655 {
22656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22657 "Unable to allocate message buffer for req %s (%d)",
22658 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022659 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 }
22663
22664 /*-------------------------------------------------------------------------
22665 Fill in the message header
22666 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22668 /* Fill msgVersion */
22669#ifdef WLAN_FEATURE_11AC
22670 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022671 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022672 else
22673#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022674 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022675
Jeff Johnsone7245742012-09-05 17:12:55 -070022676 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22677 *pusDataOffset = sizeof(halMsgHeader);
22678 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22679
22680 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022681}/*WDI_GetMessageBuffer*/
22682
22683
22684/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022685 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022686 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022687 the CB
22688
22689 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022690 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022691
Jeff Johnson295189b2012-06-20 16:38:30 -070022692 usSendSize size of the buffer to be sent
22693 pRspCb: response callback - save in the WDI
22694 CB
22695 pUserData: user data associated with the
22696 callback
22697 wdiExpectedResponse: the code of the response that is
22698 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022699
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 @see
22701 @return Result of the function call
22702*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022703WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022704WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022705(
22706 WDI_ControlBlockType* pWDICtx,
22707 wpt_uint8* pSendBuffer,
22708 wpt_uint32 usSendSize,
22709 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022710 void* pUserData,
22711 WDI_ResponseEnumType wdiExpectedResponse
22712)
22713{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022714 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022715 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22717
22718 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022719 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022720 ------------------------------------------------------------------------*/
22721 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 pWDICtx->pfncRspCB = pRspCb;
22723 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022724
22725 /*-----------------------------------------------------------------------
22726 Call the CTS to send this message over - free message afterwards
22727 - notify transport failure
22728 Note: CTS is reponsible for freeing the message buffer.
22729 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022730 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22731 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22732 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022735 "Failed to send message with expected response %s (%d)"
22736 " over the bus - catastrophic failure",
22737 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22738 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022739
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022740 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22741 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022742 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022743 else
22744 {
22745 /* even when message was placed in CTS deferred Q, we will treat it
22746 success but log this info
22747 */
22748 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22749 {
22750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22751 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22752 "response %s (%d)",
22753 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22754 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022755 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022756 }
22757 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022758
Jeff Johnsond13512a2012-07-17 11:42:19 -070022759 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 if ( NULL != pWDICtx->wdiReqStatusCB )
22761 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022762 /*Inform originator whether request went through or not*/
22763 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22764 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022765 pWDICtx->wdiReqStatusCB = NULL;
22766 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022767 callback(wdiStatus, callbackContext);
22768
22769 /*For WDI requests which have registered a request callback,
22770 inform the WDA caller of the same via setting the return value
22771 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22772 end up repeating the functonality in the req callback for the
22773 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022774 if (wdiStatus != WDI_STATUS_SUCCESS)
22775 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022776 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022777 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022778 }
22779
Jeff Johnsond13512a2012-07-17 11:42:19 -070022780 if ( wdiStatus == WDI_STATUS_SUCCESS )
22781 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 /*Start timer for the expected response */
22783 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022784
22785 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022786 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022787 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022788 }
22789 else
22790 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022791 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022792 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22793 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022794
Jeff Johnsond13512a2012-07-17 11:42:19 -070022795 return wdiStatus;
22796
Jeff Johnson295189b2012-06-20 16:38:30 -070022797}/*WDI_SendMsg*/
22798
22799
22800
22801/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022802 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022803 the bus using the control transport and saves some info
22804 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022805
22806 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 pSendBuffer: buffer to be sent
22808 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022809
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 @see
22811 @return Result of the function call
22812*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022813WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022814WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022815(
22816 WDI_ControlBlockType* pWDICtx,
22817 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 wpt_uint32 usSendSize
22819)
22820{
22821 wpt_uint32 uStatus ;
22822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22823
22824 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022825 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022826 Note: CTS is reponsible for freeing the message buffer.
22827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022829 (void*)pSendBuffer, usSendSize );
22830
22831 /*Inform Upper MAC about the outcome of the request*/
22832 if ( NULL != pWDICtx->wdiReqStatusCB )
22833 {
22834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22835 "Send indication status : %d", uStatus);
22836
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022837 /* even if CTS placed indication into its deferred Q, we treat it
22838 * as success and let CTS drain its queue as per smd interrupt to CTS
22839 */
22840 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 -070022841 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022842 }
22843
22844 /*If sending of the message failed - it is considered catastrophic and
22845 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022846 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22847 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22848
Jeff Johnson295189b2012-06-20 16:38:30 -070022849 {
22850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022851 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022852
22853 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22854 return WDI_STATUS_E_FAILURE;
22855 }
22856
Jeff Johnsone7245742012-09-05 17:12:55 -070022857 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022858}/*WDI_SendIndication*/
22859
22860
22861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022862 @brief WDI_DetectedDeviceError - called internally by DAL when
22863 it has detected a failure in the device
22864
22865 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022866 usErrorCode: error code detected by WDI or received
22867 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022868
Jeff Johnson295189b2012-06-20 16:38:30 -070022869 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022870 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022871*/
22872void
22873WDI_DetectedDeviceError
22874(
22875 WDI_ControlBlockType* pWDICtx,
22876 wpt_uint16 usErrorCode
22877)
22878{
22879 WDI_LowLevelIndType wdiInd;
22880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22881
22882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22883 "Device Error detected code: %d - transitioning to stopped state",
22884 usErrorCode);
22885
Katya Nigamf02ad012014-05-05 16:12:49 +053022886 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22887
Jeff Johnson295189b2012-06-20 16:38:30 -070022888 wpalMutexAcquire(&pWDICtx->wptMutex);
22889
22890 WDI_STATableStop(pWDICtx);
22891
22892 WDI_ResetAssocSessions(pWDICtx);
22893
22894 /*Set the expected state transition to stopped - because the device
22895 experienced a failure*/
22896 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22897
22898 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022899 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022900
Jeff Johnsone7245742012-09-05 17:12:55 -070022901 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022902
22903 /*TO DO: - there should be an attempt to reset the device here*/
22904
22905 wpalMutexRelease(&pWDICtx->wptMutex);
22906
22907 /*------------------------------------------------------------------------
22908 Notify UMAC if a handler is registered
22909 ------------------------------------------------------------------------*/
22910 if (pWDICtx->wdiLowLevelIndCB)
22911 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022912 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22913 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022914
22915 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22916 }
22917}/*WDI_DetectedDeviceError*/
22918
22919/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022920 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022921 we started on send message has expire - this should
22922 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022923 reply - trigger catastrophic failure
22924 @param
22925
Jeff Johnson295189b2012-06-20 16:38:30 -070022926 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022927
22928 @see
22929 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022930*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022931void
Jeff Johnson295189b2012-06-20 16:38:30 -070022932WDI_ResponseTimerCB
22933(
22934 void *pUserData
22935)
22936{
22937 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22939
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022940 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022941 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022945 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022946 }
22947
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022948 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022949 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022950 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022951
22952 /* If response timer is running at this time that means this timer
22953 * event is not for the last request but rather last-to-last request and
22954 * this timer event has come after we recevied respone for last-to-last
22955 * message
22956 */
22957 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22958 {
22959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22960 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022961 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022962 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22964 "uArchTimeStampTmrStart: %llu seconds, "
22965 "uArchTimeStampTmrExp: %llu seconds",
22966 pWDICtx->uArchTimeStampRspTmrStart,
22967 pWDICtx->uArchTimeStampRspTmrExp);
22968
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022969 return;
22970 }
22971
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022972 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022973 {
22974
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022976 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022977 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022978 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022979 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22980 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22982 "uArchTimeStampTmrStart: %llu seconds, "
22983 "uArchTimeStampTmrExp: %llu seconds",
22984 pWDICtx->uArchTimeStampRspTmrStart,
22985 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022986
22987 /* WDI timeout means Riva is not responding or SMD communication to Riva
22988 * is not happening. The only possible way to recover from this error
22989 * is to initiate SSR from APPS.
22990 * There is also an option to re-enable wifi, which will eventually
22991 * trigger SSR
22992 */
22993 if (gWDICb.bEnableSSR == false)
22994 {
22995 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22996 "SSR is not enabled on WDI timeout");
22997 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22998 return;
22999 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023000#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023001 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053023002 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053023003 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053023004 if(wpalIsSsrPanicOnFailure())
23005 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053023006 } else {
23007 /* if this timer fires, it means Riva did not receive the FIQ */
23008 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053023009 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023010#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023011 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23012 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023013#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023014 }
23015 else
23016 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023018 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023019 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023020 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23021 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23023 "uArchTimeStampTmrStart: %llu seconds, "
23024 "uArchTimeStampTmrExp: %llu seconds",
23025 pWDICtx->uArchTimeStampRspTmrStart,
23026 pWDICtx->uArchTimeStampRspTmrExp);
23027
Jeff Johnson295189b2012-06-20 16:38:30 -070023028 }
23029
23030 return;
23031
23032}/*WDI_ResponseTimerCB*/
23033
23034
23035/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023036 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023037
Jeff Johnsone7245742012-09-05 17:12:55 -070023038
23039 @param pWDICtx: pointer to the WLAN DAL context
23040 pEventData: pointer to the event information structure
23041
Jeff Johnson295189b2012-06-20 16:38:30 -070023042 @see
23043 @return Result of the function call
23044*/
23045WPT_INLINE WDI_Status
23046WDI_ProcessResponse
23047(
23048 WDI_ControlBlockType* pWDICtx,
23049 WDI_EventInfoType* pEventData
23050)
23051{
23052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23053
Jeff Johnsone7245742012-09-05 17:12:55 -070023054 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023055 already checked these pointers
23056 ! - revisit this assumption */
23057 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23058 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023059 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023061 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070023062 WDI_getRespMsgString(pEventData->wdiResponse),
23063 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23064 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23065 }
23066 else
23067 {
23068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023069 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023070 pEventData->wdiResponse);
23071 return WDI_STATUS_E_NOT_IMPLEMENT;
23072 }
23073}/*WDI_ProcessResponse*/
23074
23075
23076/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023077 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023078=========================================================================*/
23079
23080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 @brief Utility function used by the DAL Core to help queue a
23082 request that cannot be processed right away.
23083 @param
23084
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 pWDICtx: - pointer to the WDI control block
23086 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023087 queued
23088
23089 @see
23090 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023091*/
23092WDI_Status
23093WDI_QueuePendingReq
23094(
23095 WDI_ControlBlockType* pWDICtx,
23096 WDI_EventInfoType* pEventData
23097)
23098{
Jeff Johnsone7245742012-09-05 17:12:55 -070023099 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023100 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023101 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23103
23104 if ( NULL == pEventDataQueue )
23105 {
23106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023107 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023108 WDI_ASSERT(0);
23109 return WDI_STATUS_MEM_FAILURE;
23110 }
23111
23112 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23113 pEventDataQueue->pUserData = pEventData->pUserData;
23114 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23115 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023116 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023117
23118 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23119 {
23120 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023121
Jeff Johnson295189b2012-06-20 16:38:30 -070023122 if ( NULL == pEventInfo )
23123 {
23124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023125 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023126 WDI_ASSERT(0);
23127 wpalMemoryFree(pEventDataQueue);
23128 return WDI_STATUS_MEM_FAILURE;
23129 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023130
Jeff Johnson295189b2012-06-20 16:38:30 -070023131 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23132
23133 }
23134 pEventDataQueue->pEventData = pEventInfo;
23135
23136 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023137 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023138
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023139 if (eWLAN_PAL_STATUS_E_FAILURE ==
23140 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23141 {
23142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23143 "pEventDataQueue wpal_list_insert_back failed");
23144 WDI_ASSERT(0);
23145 wpalMemoryFree(pEventDataQueue);
23146 wpalMemoryFree(pEventInfo);
23147 return WDI_STATUS_MEM_FAILURE;
23148 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023149
23150 return WDI_STATUS_SUCCESS;
23151}/*WDI_QueuePendingReq*/
23152
23153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023155 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023156 @param
23157
23158 pMsg - pointer to the message
23159
23160 @see
23161 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023162*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023163void
Jeff Johnson295189b2012-06-20 16:38:30 -070023164WDI_PALCtrlMsgCB
23165(
23166 wpt_msg *pMsg
23167)
23168{
23169 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023170 WDI_ControlBlockType* pWDICtx = NULL;
23171 WDI_Status wdiStatus;
23172 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023173 void* pUserData;
23174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23175
23176 if (( NULL == pMsg )||
23177 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23178 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23179 {
23180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023181 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023183 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023184 }
23185
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023186 /*Access to the global state must be locked */
23187 wpalMutexAcquire(&pWDICtx->wptMutex);
23188
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 /*Transition back to the state that we had before serialization
23190 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023191 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023192 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023194
23195 /*-----------------------------------------------------------------------
23196 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023197 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023198 -----------------------------------------------------------------------*/
23199 switch ( pEventData->wdiRequest )
23200 {
23201
Jeff Johnsone7245742012-09-05 17:12:55 -070023202 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023203 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23204 break;
23205
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 case WDI_NV_DOWNLOAD_REQ:
23207 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23208 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23209 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23210 {
23211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023212 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23214 }
23215 else
23216 {
23217 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
23218 }
23219
23220 break;
23221
23222 default:
23223 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23224 break;
23225 }/*switch ( pEventData->wdiRequest )*/
23226
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053023227 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053023228 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 {
23230 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
23231
23232 if ( NULL != pfnReqStatusCB )
23233 {
23234 /*Fail the request*/
23235 pfnReqStatusCB( wdiStatus, pUserData);
23236 }
23237 }
23238
23239 /* Free data - that was allocated when queueing*/
23240 if( pEventData != NULL )
23241 {
23242 if( pEventData->pEventData != NULL )
23243 {
23244 wpalMemoryFree(pEventData->pEventData);
23245 }
23246 wpalMemoryFree(pEventData);
23247 }
23248
23249 if( pMsg != NULL )
23250 {
23251 wpalMemoryFree(pMsg);
23252 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023253
Jeff Johnson295189b2012-06-20 16:38:30 -070023254}/*WDI_PALCtrlMsgCB*/
23255
23256/**
23257 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 and schedule for execution a pending request
23259 @param
23260
Jeff Johnson295189b2012-06-20 16:38:30 -070023261 pWDICtx: - pointer to the WDI control block
23262 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023263 queued
23264
23265 @see
23266 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023267*/
23268WDI_Status
23269WDI_DequeuePendingReq
23270(
23271 WDI_ControlBlockType* pWDICtx
23272)
23273{
Jeff Johnsone7245742012-09-05 17:12:55 -070023274 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023276 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23278
Jeff Johnsone7245742012-09-05 17:12:55 -070023279 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023280
23281 if ( NULL == pNode )
23282 {
23283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023284 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023285 return WDI_STATUS_SUCCESS;
23286 }
23287
23288 /*The node actually points to the 1st element inside the Event Data struct -
23289 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023290 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023291
23292 /*Serialize processing in the control thread
23293 !TO DO: - check to see if these are all the messages params that need
23294 to be filled in*/
23295 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23296
23297 if ( NULL == palMsg )
23298 {
23299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023302 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023305 palMsg->callback = WDI_PALCtrlMsgCB;
23306 palMsg->ptr = pEventData;
23307
23308 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023309 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023310 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023311
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 /*Transition back to BUSY as we need to handle a queued request*/
23313 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023314
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23316
23317 return WDI_STATUS_PENDING;
23318}/*WDI_DequeuePendingReq*/
23319
23320
23321/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023323 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 away.- The assoc requests will be queued by BSSID
23325 @param
23326
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 pWDICtx: - pointer to the WDI control block
23328 pEventData: pointer to the evnt info that needs to be queued
23329 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023330
23331 @see
23332 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023333*/
23334WDI_Status
23335WDI_QueueNewAssocRequest
23336(
23337 WDI_ControlBlockType* pWDICtx,
23338 WDI_EventInfoType* pEventData,
23339 wpt_macAddr macBSSID
23340)
23341{
Jeff Johnsone7245742012-09-05 17:12:55 -070023342 wpt_uint8 i;
23343 WDI_BSSSessionType* pSession = NULL;
23344 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023345 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023346 void* pEventInfo;
23347 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023349
Jeff Johnsone7245742012-09-05 17:12:55 -070023350
23351 /*------------------------------------------------------------------------
23352 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023353 ------------------------------------------------------------------------*/
23354 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23355 {
23356 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23357 {
23358 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 pSession = &pWDICtx->aBSSSessions[i];
23360 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023361 }
23362 }
23363
23364 if ( i >= WDI_MAX_BSS_SESSIONS )
23365 {
23366 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023369
Jeff Johnson295189b2012-06-20 16:38:30 -070023370 /*------------------------------------------------------------------------
23371 Fill in the BSSID for this session and set the usage flag
23372 ------------------------------------------------------------------------*/
23373 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023374 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023375
23376 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 ------------------------------------------------------------------------*/
23379 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23380 if ( NULL == pEventDataQueue )
23381 {
23382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023383 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 WDI_ASSERT(0);
23385 return WDI_STATUS_MEM_FAILURE;
23386 }
23387
23388 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23389 if ( NULL == pSessionIdElement )
23390 {
23391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023392 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 WDI_ASSERT(0);
23394 wpalMemoryFree(pEventDataQueue);
23395 return WDI_STATUS_MEM_FAILURE;
23396 }
23397
23398 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23399 if ( NULL == pEventInfo )
23400 {
23401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023402 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023403 WDI_ASSERT(0);
23404 wpalMemoryFree(pSessionIdElement);
23405 wpalMemoryFree(pEventDataQueue);
23406 return WDI_STATUS_MEM_FAILURE;
23407 }
23408
23409 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23410 pEventDataQueue->pUserData = pEventData->pUserData;
23411 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23412 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023413 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023414
23415 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23416 pEventDataQueue->pEventData = pEventInfo;
23417
23418 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023419 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023420
23421 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023423
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023424 if (eWLAN_PAL_STATUS_E_FAILURE ==
23425 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23426 {
23427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23428 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23429 WDI_ASSERT(0);
23430 wpalMemoryFree(pSessionIdElement);
23431 wpalMemoryFree(pEventDataQueue);
23432 wpalMemoryFree(pEventInfo);
23433 return WDI_STATUS_MEM_FAILURE;
23434 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023435
23436 /*We need to maintain a separate list that keeps track of the order in which
23437 the new assoc requests are being queued such that we can start processing
23438 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 pSessionIdElement->ucIndex = i;
23440 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023441
23442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23443 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023444 if (eWLAN_PAL_STATUS_E_FAILURE ==
23445 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23446 {
23447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23448 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23449 WDI_ASSERT(0);
23450 wpalMemoryFree(pSessionIdElement);
23451 wpalMemoryFree(pEventDataQueue);
23452 wpalMemoryFree(pEventInfo);
23453 return WDI_STATUS_MEM_FAILURE;
23454 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023455
23456 /*Return pending as this is what the status of the request is since it has
23457 been queued*/
23458 return WDI_STATUS_PENDING;
23459}/*WDI_QueueNewAssocRequest*/
23460
23461/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023462 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023463 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023464 away.- The assoc requests will be queued by BSSID
23465 @param
23466
Jeff Johnson295189b2012-06-20 16:38:30 -070023467 pWDICtx: - pointer to the WDI control block
23468 pSession: - session in which to queue
23469 pEventData: pointer to the event info that needs to be
23470 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023471
23472 @see
23473 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023474*/
23475WDI_Status
23476WDI_QueueAssocRequest
23477(
23478 WDI_ControlBlockType* pWDICtx,
23479 WDI_BSSSessionType* pSession,
23480 WDI_EventInfoType* pEventData
23481)
23482{
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023484 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023485 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023487
23488 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023489 Sanity check
23490 ------------------------------------------------------------------------*/
23491 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23492 {
23493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023495
Jeff Johnsone7245742012-09-05 17:12:55 -070023496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023497 }
23498
23499 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023500 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023501 ------------------------------------------------------------------------*/
23502 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23503 if ( NULL == pEventDataQueue )
23504 {
23505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023506 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023507 WDI_ASSERT(0);
23508 return WDI_STATUS_MEM_FAILURE;
23509 }
23510
23511 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23512 if ( NULL == pEventInfo )
23513 {
23514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23515 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023516 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 WDI_ASSERT(0);
23518 wpalMemoryFree(pEventDataQueue);
23519 return WDI_STATUS_MEM_FAILURE;
23520 }
23521
23522 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23523 pEventDataQueue->pUserData = pEventData->pUserData;
23524 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23525 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023526 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023527 pEventDataQueue->pEventData = pEventInfo;
23528
23529 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23530
23531 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023532 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023533
23534 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023535 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023536
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023537 if (eWLAN_PAL_STATUS_E_FAILURE ==
23538 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23539 {
23540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23541 "%s: Cannot allocate memory for queueing event data info",
23542 __func__);
23543 WDI_ASSERT(0);
23544 wpalMemoryFree(pEventDataQueue);
23545 wpalMemoryFree(pEventInfo);
23546 return WDI_STATUS_MEM_FAILURE;
23547 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023548
23549 /*The result of this operation is pending because the request has been
23550 queued and it will be processed at a later moment in time */
23551 return WDI_STATUS_PENDING;
23552}/*WDI_QueueAssocRequest*/
23553
23554/**
23555 @brief Utility function used by the DAL Core to help dequeue
23556 an association request that was pending
23557 The request will be queued up in front of the main
23558 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023559 @param
23560
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023562
23563
23564 @see
23565 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023566*/
23567WDI_Status
23568WDI_DequeueAssocRequest
23569(
23570 WDI_ControlBlockType* pWDICtx
23571)
23572{
Jeff Johnsone7245742012-09-05 17:12:55 -070023573 wpt_list_node* pNode = NULL;
23574 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 WDI_BSSSessionType* pSession;
23576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023577
23578 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 Sanity check
23580 ------------------------------------------------------------------------*/
23581 if ( NULL == pWDICtx )
23582 {
23583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023585
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 }
23588
23589 /*------------------------------------------------------------------------
23590 An association has been completed => a new association can occur
23591 Check to see if there are any pending associations ->
23592 If so , transfer all the pending requests into the busy queue for
23593 processing
23594 These requests have arrived prior to the requests in the busy queue
23595 (bc they needed to be processed in order to be placed in this queue)
23596 => they will be placed at the front of the busy queue
23597 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023599
23600 if ( NULL == pNode )
23601 {
23602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023603 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023604 return WDI_STATUS_SUCCESS;
23605 }
23606
23607 /*The node actually points to the 1st element inside the Session Id struct -
23608 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023609 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023610
23611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23612 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23613
23614 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23615 {
23616 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023617
Jeff Johnson295189b2012-06-20 16:38:30 -070023618 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 the front of the main waiting queue for subsequent execution*/
23620 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 while ( NULL != pNode )
23622 {
23623 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23625 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023627 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023628 }
23629 else
23630 {
23631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023632 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 WPAL_ASSERT(0);
23634 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023636 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023637
Jeff Johnson295189b2012-06-20 16:38:30 -070023638 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23639 wpalMemoryFree(pSessionIdElement);
23640 return WDI_STATUS_SUCCESS;
23641}/*WDI_DequeueAssocRequest*/
23642
23643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 pending requests - all req cb will be called with
23646 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023647 @param
23648
Jeff Johnson295189b2012-06-20 16:38:30 -070023649 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023650
23651 @see
23652 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023653*/
23654WDI_Status
23655WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023656(
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 WDI_ControlBlockType* pWDICtx
23658)
23659{
Jeff Johnsone7245742012-09-05 17:12:55 -070023660 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023661 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023662 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023663 void* pUserData;
23664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23665
Jeff Johnsone7245742012-09-05 17:12:55 -070023666 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023667
23668 /*------------------------------------------------------------------------
23669 Go through all the requests and fail them - this will only be called
23670 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023671 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023672 ------------------------------------------------------------------------*/
23673 while( pNode )
23674 {
23675 /*The node actually points to the 1st element inside the Event Data struct -
23676 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023677 pEventDataQueue = (WDI_EventInfoType*)pNode;
23678
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23680 if ( NULL != pfnReqStatusCB )
23681 {
23682 /*Fail the request*/
23683 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23684 }
23685 /* Free data - that was allocated when queueing */
23686 if ( pEventDataQueue->pEventData != NULL )
23687 {
23688 wpalMemoryFree(pEventDataQueue->pEventData);
23689 }
23690 wpalMemoryFree(pEventDataQueue);
23691
23692 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23693 {
23694 break;
23695 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023696 }
23697
Jeff Johnson295189b2012-06-20 16:38:30 -070023698 return WDI_STATUS_SUCCESS;
23699}/*WDI_ClearPendingRequests*/
23700
23701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 @brief Helper routine used to init the BSS Sessions in the WDI control block
23703
23704
23705 @param pWDICtx: pointer to the WLAN DAL context
23706
Jeff Johnson295189b2012-06-20 16:38:30 -070023707 @see
23708*/
23709void
23710WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023711(
Jeff Johnson295189b2012-06-20 16:38:30 -070023712 WDI_ControlBlockType* pWDICtx
23713)
23714{
Jeff Johnsone7245742012-09-05 17:12:55 -070023715 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23717
23718 /*-------------------------------------------------------------------------
23719 No Sanity check
23720 -------------------------------------------------------------------------*/
23721 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23722 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023723 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23725 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23726 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23727 }
23728}/*WDI_ResetAssocSessions*/
23729
23730/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023731 @brief Helper routine used to find a session based on the BSSID
23732
23733
23734 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023735 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023736 pSession: pointer to the session (if found)
23737
Jeff Johnson295189b2012-06-20 16:38:30 -070023738 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023740*/
23741wpt_uint8
23742WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023743(
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 WDI_ControlBlockType* pWDICtx,
23745 wpt_macAddr macBSSID,
23746 WDI_BSSSessionType** ppSession
23747)
23748{
Jeff Johnsone7245742012-09-05 17:12:55 -070023749 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23751
23752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 -------------------------------------------------------------------------*/
23755 if ( NULL == ppSession )
23756 {
23757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023758 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 }
23761
Jeff Johnsone7245742012-09-05 17:12:55 -070023762 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023763
Jeff Johnsone7245742012-09-05 17:12:55 -070023764 /*------------------------------------------------------------------------
23765 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023766 ------------------------------------------------------------------------*/
23767 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23768 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023769 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23770 (eWLAN_PAL_TRUE ==
23771 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23772 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023773 {
23774 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023775 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 return i;
23777 }
23778 }
23779
Jeff Johnsone7245742012-09-05 17:12:55 -070023780 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023781}/*WDI_FindAssocSession*/
23782
23783/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023784 @brief Helper routine used to find a session based on the BSSID
23785
23786
23787 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 ucBSSIdx: BSS Index of the session
23789 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023790
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023793*/
23794wpt_uint8
23795WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023796(
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 WDI_ControlBlockType* pWDICtx,
23798 wpt_uint16 ucBSSIdx,
23799 WDI_BSSSessionType** ppSession
23800)
23801{
Jeff Johnsone7245742012-09-05 17:12:55 -070023802 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23804
23805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 -------------------------------------------------------------------------*/
23808 if ( NULL == ppSession )
23809 {
23810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023811 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023812 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023813 }
23814
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023816
Jeff Johnsone7245742012-09-05 17:12:55 -070023817 /*------------------------------------------------------------------------
23818 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023819 ------------------------------------------------------------------------*/
23820 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23821 {
23822 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23823 {
23824 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023825 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023826 return i;
23827 }
23828 }
23829
Jeff Johnsone7245742012-09-05 17:12:55 -070023830 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023831}/*WDI_FindAssocSessionByBSSIdx*/
23832
23833/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023834 @brief Helper routine used to find a session based on the BSSID
23835
23836
23837 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023838 ucBSSIdx: BSS Index of the session
23839 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023840
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023842 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023843*/
23844wpt_uint8
23845WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023846(
Jeff Johnson295189b2012-06-20 16:38:30 -070023847 WDI_ControlBlockType* pWDICtx,
23848 wpt_uint16 usIdx,
23849 WDI_BSSSessionType** ppSession
23850)
23851{
23852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23853
23854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023855 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 -------------------------------------------------------------------------*/
23857 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23858 {
23859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023860 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023861 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 }
23863
23864 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023865 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023866
23867 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023868
Jeff Johnson295189b2012-06-20 16:38:30 -070023869}/*WDI_FindAssocSessionByBSSIdx*/
23870
23871/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023872 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023873 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023874
23875
23876 @param pWDICtx: pointer to the WLAN DAL context
23877 pSession: pointer to the session (if found)
23878
Jeff Johnson295189b2012-06-20 16:38:30 -070023879 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023880 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023881*/
23882wpt_uint8
23883WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023884(
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 WDI_ControlBlockType* pWDICtx,
23886 WDI_BSSSessionType** ppSession
23887)
23888{
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 -------------------------------------------------------------------------*/
23894 if ( NULL == ppSession )
23895 {
23896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023897 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023898 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023899 }
23900
Jeff Johnsone7245742012-09-05 17:12:55 -070023901 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023902
Jeff Johnsone7245742012-09-05 17:12:55 -070023903 /*------------------------------------------------------------------------
23904 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023905 ------------------------------------------------------------------------*/
23906 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23907 {
23908 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23909 {
23910 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023911 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023912 return i;
23913 }
23914 }
23915
Jeff Johnsone7245742012-09-05 17:12:55 -070023916 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023917}/*WDI_FindEmptySession*/
23918
23919
23920/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023921 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023922 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023923
23924
23925 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023926 macBSSID: pointer to BSSID. If NULL, get all the session.
23927 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23928 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23929 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 @see
23931 @return Number of sessions in use
23932*/
23933wpt_uint8
23934WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023935(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023936 WDI_ControlBlockType* pWDICtx,
23937 wpt_macAddr macBSSID,
23938 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023939)
23940{
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023943
23944 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 Count all sessions in use
23946 ------------------------------------------------------------------------*/
23947 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23948 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023949 if ( macBSSID && skipBSSID &&
23950 (eWLAN_PAL_TRUE ==
23951 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23952 WDI_MAC_ADDR_LEN)))
23953 {
23954 continue;
23955 }
23956 else if ( pWDICtx->aBSSSessions[i].bInUse )
23957 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023959 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 }
23961
Jeff Johnsone7245742012-09-05 17:12:55 -070023962 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023963}/*WDI_GetActiveSessionsCount*/
23964
23965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023968
23969
23970 @param pWDICtx: pointer to the WLAN DAL context
23971 pSession: pointer to the session (if found)
23972
Jeff Johnson295189b2012-06-20 16:38:30 -070023973 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023974 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023975*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023976void
Jeff Johnson295189b2012-06-20 16:38:30 -070023977WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023978(
Jeff Johnson295189b2012-06-20 16:38:30 -070023979 WDI_ControlBlockType* pWDICtx,
23980 WDI_BSSSessionType* ppSession
23981)
23982{
23983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023984 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023985 -------------------------------------------------------------------------*/
23986 if ( NULL == ppSession )
23987 {
23988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023989 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023990 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023991 }
23992
Jeff Johnsone7245742012-09-05 17:12:55 -070023993 /*------------------------------------------------------------------------
23994 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 ------------------------------------------------------------------------*/
23996 wpal_list_destroy(&ppSession->wptPendingQueue);
23997 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023998 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23999 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
24001 wpal_list_init(&ppSession->wptPendingQueue);
24002
24003}/*WDI_DeleteSession*/
24004
24005/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024006 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070024007 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070024008 @param
24009
Jeff Johnson295189b2012-06-20 16:38:30 -070024010 WDI_AddStaParams: - pointer to the WDI Add STA params
24011 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070024012
24013 @see
24014 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070024015*/
24016void
24017WDI_AddBcastSTAtoSTATable
24018(
24019 WDI_ControlBlockType* pWDICtx,
24020 WDI_AddStaParams * staParams,
24021 wpt_uint16 usBcastStaIdx
24022)
24023{
24024 WDI_AddStaParams wdiAddSTAParam = {0};
24025 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
24026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24027
24028 /*---------------------------------------------------------------------
24029 Sanity check
24030 ---------------------------------------------------------------------*/
24031 if ( NULL == staParams )
24032 {
24033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024035
Jeff Johnsone7245742012-09-05 17:12:55 -070024036 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024037 }
24038
24039 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
24040 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
24041 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
24042 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
24043 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
24044 wdiAddSTAParam.dpuSig = staParams->dpuSig;
24045 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
24046 WDI_MAC_ADDR_LEN );
24047 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
24048 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24049 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24050 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24051 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24052 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24053 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024054
Jeff Johnson295189b2012-06-20 16:38:30 -070024055 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24056}
24057
24058/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024059 @brief NV blob will be divided into fragments of size 4kb and
24060 Sent to HAL
24061
24062 @param pWDICtx: pointer to the WLAN DAL context
24063 pEventData: pointer to the event information structure
24064
Jeff Johnson295189b2012-06-20 16:38:30 -070024065 @see
24066 @return Result of the function call
24067 */
24068
24069WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024070(
Jeff Johnson295189b2012-06-20 16:38:30 -070024071 WDI_ControlBlockType* pWDICtx,
24072 WDI_EventInfoType* pEventData
24073)
24074{
24075
24076 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24077 wpt_uint8* pSendBuffer = NULL;
24078 wpt_uint16 usDataOffset = 0;
24079 wpt_uint16 usSendSize = 0;
24080 wpt_uint16 usCurrentFragmentSize =0;
24081 wpt_uint8* pSrcBuffer = NULL;
24082 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24083 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24084
24085 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24086 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24087 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24088
Jeff Johnsone7245742012-09-05 17:12:55 -070024089 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024090 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24091
24092 /* Update the current Fragment Number */
24093 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24094
24095 /*Update the HAL REQ structure */
24096 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24097 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24098 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24099
24100 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024101 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 image will be sent to HAL*/
24103
Jeff Johnsone7245742012-09-05 17:12:55 -070024104 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024108 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24110 usCurrentFragmentSize = FRAGMENT_SIZE;
24111
24112 /*Update the HAL REQ structure */
24113 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24114 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24115
24116 }
24117 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024118 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 usCurrentFragmentSize = FRAGMENT_SIZE;
24120
24121 /*Update the HAL REQ structure */
24122 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24123 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24124 }
24125
24126 /*-----------------------------------------------------------------------
24127 Get message buffer
24128 -----------------------------------------------------------------------*/
24129 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24130 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24131 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024132 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024133 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24134 {
24135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024136 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024137 pEventData, pwdiNvDownloadReqParams);
24138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 }
24141
24142 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024143 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024144 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24145
24146 /* Appending the NV image fragment */
24147 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24148 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24149 usCurrentFragmentSize);
24150
24151 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024152 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024153
Jeff Johnsone7245742012-09-05 17:12:55 -070024154 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24155 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024156 WDI_NV_DOWNLOAD_RESP);
24157
24158}
Jeff Johnsone7245742012-09-05 17:12:55 -070024159/*============================================================================
24160 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 ============================================================================*/
24162/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024163 @brief Helper routine used to find a session based on the BSSID
24164 @param pContext: pointer to the WLAN DAL context
24165 @param pDPContext: pointer to the Datapath context
24166
Jeff Johnson295189b2012-06-20 16:38:30 -070024167 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024168 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024169*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024170WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024171WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24172{
24173 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24174
24175 pCB->pDPContext = pDPContext;
24176 return;
24177}
24178
24179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024180 @brief Helper routine used to find a session based on the BSSID
24181
24182
24183 @param pContext: pointer to the WLAN DAL context
24184
Jeff Johnson295189b2012-06-20 16:38:30 -070024185 @see
24186 @return pointer to Datapath context
24187*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024188WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024189WDI_DS_GetDatapathContext (void *pContext)
24190{
24191 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24192 return pCB->pDPContext;
24193}
24194/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024195 @brief Helper routine used to find a session based on the BSSID
24196
24197
24198 @param pContext: pointer to the WLAN DAL context
24199 @param pDTDriverContext: pointer to the Transport Driver context
24200
Jeff Johnson295189b2012-06-20 16:38:30 -070024201 @see
24202 @return void
24203*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024204WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024205WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24206{
24207 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24208
24209 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024210 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024211}
24212
24213/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024214 @brief Helper routine used to find a session based on the BSSID
24215
24216
24217 @param pWDICtx: pointer to the WLAN DAL context
24218
Jeff Johnson295189b2012-06-20 16:38:30 -070024219 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024220 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070024221*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024222WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024223WDT_GetTransportDriverContext (void *pContext)
24224{
24225 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024226 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070024227}
24228
Jeff Johnsone7245742012-09-05 17:12:55 -070024229/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070024230 Helper inline converters
24231 ============================================================================*/
24232/*Convert WDI driver type into HAL driver type*/
24233WPT_STATIC WPT_INLINE WDI_Status
24234WDI_HAL_2_WDI_STATUS
24235(
24236 eHalStatus halStatus
24237)
24238{
Jeff Johnsone7245742012-09-05 17:12:55 -070024239 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 the chances of getting inlined*/
24241 switch( halStatus )
24242 {
24243 case eHAL_STATUS_SUCCESS:
24244 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24245 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24246 return WDI_STATUS_SUCCESS;
24247 case eHAL_STATUS_FAILURE:
24248 return WDI_STATUS_E_FAILURE;
24249 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070024250 return WDI_STATUS_MEM_FAILURE;
24251 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024253 default:
24254 return WDI_STATUS_DEV_INTERNAL_FAILURE;
24255 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024256
Jeff Johnsone7245742012-09-05 17:12:55 -070024257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024258}/*WDI_HAL_2_WDI_STATUS*/
24259
24260/*Convert WDI request type into HAL request type*/
24261WPT_STATIC WPT_INLINE tHalHostMsgType
24262WDI_2_HAL_REQ_TYPE
24263(
24264 WDI_RequestEnumType wdiReqType
24265)
24266{
Jeff Johnsone7245742012-09-05 17:12:55 -070024267 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 the chances of getting inlined*/
24269 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070024270 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024271 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024272 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024273 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024274 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024276 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024277 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024278 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024279 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024280 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024281 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024282 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024283 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024284 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024285 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024287 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024288 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024290 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024291 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024292 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024293 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024294 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024295 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024296 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024297 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024298 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024299 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024300 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024301 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024302 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024303 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024304 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 return WLAN_HAL_RMV_STAKEY_REQ;
24306 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024309 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024310 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024311 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024312 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 case WDI_DEL_BA_REQ:
24315 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024316#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 case WDI_TSM_STATS_REQ:
24318 return WLAN_HAL_TSM_STATS_REQ;
24319#endif
24320 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024321 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024323 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024324 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024325 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024326 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024327 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024328 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024329 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 case WDI_ADD_BA_SESSION_REQ:
24331 return WLAN_HAL_ADD_BA_SESSION_REQ;
24332 case WDI_TRIGGER_BA_REQ:
24333 return WLAN_HAL_TRIGGER_BA_REQ;
24334 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024335 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024337 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24339 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24340 case WDI_SET_MAX_TX_POWER_REQ:
24341 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024342 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24343 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024344 case WDI_SET_TX_POWER_REQ:
24345 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24347 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024348#ifdef FEATURE_WLAN_TDLS
24349 case WDI_TDLS_LINK_ESTABLISH_REQ:
24350 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024351 case WDI_TDLS_CHAN_SWITCH_REQ:
24352 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024353#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024354 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024355 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024356 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024357 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024358 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024359 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024361 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024362 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024363 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024364 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024365 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024367 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024369 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024370 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024371 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024372 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024373 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024374 case WDI_REM_BEACON_FILTER_REQ:
24375 return WLAN_HAL_REM_BCN_FILTER_REQ;
24376 case WDI_SET_RSSI_THRESHOLDS_REQ:
24377 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24378 case WDI_HOST_OFFLOAD_REQ:
24379 return WLAN_HAL_HOST_OFFLOAD_REQ;
24380 case WDI_WOWL_ADD_BC_PTRN_REQ:
24381 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24382 case WDI_WOWL_DEL_BC_PTRN_REQ:
24383 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24384 case WDI_WOWL_ENTER_REQ:
24385 return WLAN_HAL_ENTER_WOWL_REQ;
24386 case WDI_WOWL_EXIT_REQ:
24387 return WLAN_HAL_EXIT_WOWL_REQ;
24388 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24389 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24390 case WDI_NV_DOWNLOAD_REQ:
24391 return WLAN_HAL_DOWNLOAD_NV_REQ;
24392 case WDI_FLUSH_AC_REQ:
24393 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24394 case WDI_BTAMP_EVENT_REQ:
24395 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24396#ifdef WLAN_FEATURE_VOWIFI_11R
24397 case WDI_AGGR_ADD_TS_REQ:
24398 return WLAN_HAL_AGGR_ADD_TS_REQ;
24399#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 case WDI_FTM_CMD_REQ:
24401 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024402 case WDI_ADD_STA_SELF_REQ:
24403 return WLAN_HAL_ADD_STA_SELF_REQ;
24404 case WDI_DEL_STA_SELF_REQ:
24405 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024406#ifdef FEATURE_OEM_DATA_SUPPORT
24407 case WDI_START_OEM_DATA_REQ:
24408 return WLAN_HAL_START_OEM_DATA_REQ;
24409#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 case WDI_HOST_RESUME_REQ:
24411 return WLAN_HAL_HOST_RESUME_REQ;
24412 case WDI_HOST_SUSPEND_IND:
24413 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024414 case WDI_TRAFFIC_STATS_IND:
24415 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024416#ifdef WLAN_FEATURE_11W
24417 case WDI_EXCLUDE_UNENCRYPTED_IND:
24418 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24419#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024420 case WDI_KEEP_ALIVE_REQ:
24421 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024422#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024423 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24424 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024425#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024426#ifdef FEATURE_WLAN_SCAN_PNO
24427 case WDI_SET_PREF_NETWORK_REQ:
24428 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24429 case WDI_SET_RSSI_FILTER_REQ:
24430 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24431 case WDI_UPDATE_SCAN_PARAMS_REQ:
24432 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24433#endif // FEATURE_WLAN_SCAN_PNO
24434 case WDI_SET_TX_PER_TRACKING_REQ:
24435 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24436#ifdef WLAN_FEATURE_PACKET_FILTERING
24437 case WDI_8023_MULTICAST_LIST_REQ:
24438 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24439 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024440 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024441 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24442 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24443 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24444 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24445#endif // WLAN_FEATURE_PACKET_FILTERING
24446 case WDI_HAL_DUMP_CMD_REQ:
24447 return WLAN_HAL_DUMP_COMMAND_REQ;
24448#ifdef WLAN_FEATURE_GTK_OFFLOAD
24449 case WDI_GTK_OFFLOAD_REQ:
24450 return WLAN_HAL_GTK_OFFLOAD_REQ;
24451 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24452 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24453#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24454
24455 case WDI_INIT_SCAN_CON_REQ:
24456 return WLAN_HAL_INIT_SCAN_CON_REQ;
24457 case WDI_SET_POWER_PARAMS_REQ:
24458 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24459 case WDI_SET_TM_LEVEL_REQ:
24460 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24461 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24462 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024463#ifdef WLAN_FEATURE_11AC
24464 case WDI_UPDATE_VHT_OP_MODE_REQ:
24465 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24466#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024467 case WDI_GET_ROAM_RSSI_REQ:
24468 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024469 case WDI_DHCP_START_IND:
24470 return WLAN_HAL_DHCP_START_IND;
24471 case WDI_DHCP_STOP_IND:
24472 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024473#ifdef FEATURE_WLAN_LPHB
24474 case WDI_LPHB_CFG_REQ:
24475 return WLAN_HAL_LPHB_CFG_REQ;
24476#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024477 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24478 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24479 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24480 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24481
Rajeev79dbe4c2013-10-05 11:03:42 +053024482#ifdef FEATURE_WLAN_BATCH_SCAN
24483 case WDI_SET_BATCH_SCAN_REQ:
24484 return WLAN_HAL_BATCHSCAN_SET_REQ;
24485 case WDI_STOP_BATCH_SCAN_IND:
24486 return WLAN_HAL_BATCHSCAN_STOP_IND;
24487 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24488 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24489#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024490 case WDI_RATE_UPDATE_IND:
24491 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024492 case WDI_START_HT40_OBSS_SCAN_IND:
24493 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24494 case WDI_STOP_HT40_OBSS_SCAN_IND:
24495 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024496 case WDI_UPDATE_CHAN_REQ:
24497 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024498 case WDI_CH_SWITCH_REQ_V1:
24499 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024500 case WDI_GET_BCN_MISS_RATE_REQ:
24501 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024502
24503#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24504 case WDI_LL_STATS_SET_REQ:
24505 return WLAN_HAL_LL_SET_STATS_REQ;
24506 case WDI_LL_STATS_GET_REQ:
24507 return WLAN_HAL_LL_GET_STATS_REQ;
24508 case WDI_LL_STATS_CLEAR_REQ:
24509 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24510#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024511#ifdef WLAN_FEATURE_EXTSCAN
24512 case WDI_EXTSCAN_START_REQ:
24513 return WLAN_HAL_EXT_SCAN_START_REQ;
24514 case WDI_EXTSCAN_STOP_REQ:
24515 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24516 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24517 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24518 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24519 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24520 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24521 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24522 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24523 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024524 case WDI_EXTSCAN_SET_SSID_HOTLIST_REQ:
24525 return WLAN_HAL_SSID_HOTLIST_SET_REQ;
24526 case WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ:
24527 return WLAN_HAL_SSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053024528 case WDI_HIGH_PRIORITY_DATA_INFO_IND:
24529 return WLAN_HAL_HIGH_PRIORITY_DATA_INFO_REQ;
Dino Mycle41bdc942014-06-10 11:30:24 +053024530#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024531 case WDI_SPOOF_MAC_ADDR_REQ:
24532 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024533 case WDI_GET_FW_STATS_REQ:
24534 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024535 case WDI_ENCRYPT_MSG_REQ:
24536 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024537 case WDI_FW_LOGGING_INIT_REQ:
24538 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024539 case WDI_GET_FRAME_LOG_REQ:
24540 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024541 case WDI_NAN_REQUEST:
24542 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024543 case WDI_SET_RTS_CTS_HTVHT_IND:
24544 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024545 case WDI_MON_START_REQ:
24546 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24547 case WDI_MON_STOP_REQ:
24548 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024549 case WDI_FW_LOGGING_DXE_DONE_IND:
24550 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024551 case WDI_FATAL_EVENT_LOGGING_REQ:
24552 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024553 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24554 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053024555 case WDI_FWR_MEM_DUMP_REQ:
24556 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024557 case WDI_START_RSSI_MONITOR_REQ:
24558 return WLAN_HAL_START_RSSI_MONITORING_REQ;
24559 case WDI_STOP_RSSI_MONITOR_REQ:
24560 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024561 case WDI_WIFI_CONFIG_SET_REQ:
24562 return WLAN_HAL_WIFI_CONFIG_SET_PARAMS_REQ;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024563 case WDI_START_OEM_DATA_REQ_IND_NEW:
24564 return WLAN_HAL_START_OEM_DATA_REQ_IND_NEW;
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024566 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024567 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024568
Jeff Johnson295189b2012-06-20 16:38:30 -070024569}/*WDI_2_HAL_REQ_TYPE*/
24570
24571/*Convert WDI response type into HAL response type*/
24572WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24573HAL_2_WDI_RSP_TYPE
24574(
24575 tHalHostMsgType halMsg
24576)
24577{
Jeff Johnsone7245742012-09-05 17:12:55 -070024578 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024579 the chances of getting inlined*/
24580 switch( halMsg )
24581 {
24582 case WLAN_HAL_START_RSP:
24583 return WDI_START_RESP;
24584 case WLAN_HAL_STOP_RSP:
24585 return WDI_STOP_RESP;
24586 case WLAN_HAL_INIT_SCAN_RSP:
24587 return WDI_INIT_SCAN_RESP;
24588 case WLAN_HAL_START_SCAN_RSP:
24589 return WDI_START_SCAN_RESP;
24590 case WLAN_HAL_END_SCAN_RSP:
24591 return WDI_END_SCAN_RESP;
24592 case WLAN_HAL_FINISH_SCAN_RSP:
24593 return WDI_FINISH_SCAN_RESP;
24594 case WLAN_HAL_CONFIG_STA_RSP:
24595 return WDI_CONFIG_STA_RESP;
24596 case WLAN_HAL_DELETE_STA_RSP:
24597 return WDI_DEL_STA_RESP;
24598 case WLAN_HAL_CONFIG_BSS_RSP:
24599 return WDI_CONFIG_BSS_RESP;
24600 case WLAN_HAL_DELETE_BSS_RSP:
24601 return WDI_DEL_BSS_RESP;
24602 case WLAN_HAL_JOIN_RSP:
24603 return WDI_JOIN_RESP;
24604 case WLAN_HAL_POST_ASSOC_RSP:
24605 return WDI_POST_ASSOC_RESP;
24606 case WLAN_HAL_SET_BSSKEY_RSP:
24607 return WDI_SET_BSS_KEY_RESP;
24608 case WLAN_HAL_SET_STAKEY_RSP:
24609 return WDI_SET_STA_KEY_RESP;
24610 case WLAN_HAL_RMV_BSSKEY_RSP:
24611 return WDI_RMV_BSS_KEY_RESP;
24612 case WLAN_HAL_RMV_STAKEY_RSP:
24613 return WDI_RMV_STA_KEY_RESP;
24614 case WLAN_HAL_SET_BCASTKEY_RSP:
24615 return WDI_SET_STA_BCAST_KEY_RESP;
24616 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24617 // return WDI_RMV_STA_BCAST_KEY_RESP;
24618 case WLAN_HAL_ADD_TS_RSP:
24619 return WDI_ADD_TS_RESP;
24620 case WLAN_HAL_DEL_TS_RSP:
24621 return WDI_DEL_TS_RESP;
24622 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24623 return WDI_UPD_EDCA_PRMS_RESP;
24624 case WLAN_HAL_ADD_BA_RSP:
24625 return WDI_ADD_BA_RESP;
24626 case WLAN_HAL_DEL_BA_RSP:
24627 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024628#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 case WLAN_HAL_TSM_STATS_RSP:
24630 return WDI_TSM_STATS_RESP;
24631#endif
24632 case WLAN_HAL_CH_SWITCH_RSP:
24633 return WDI_CH_SWITCH_RESP;
24634 case WLAN_HAL_SET_LINK_ST_RSP:
24635 return WDI_SET_LINK_ST_RESP;
24636 case WLAN_HAL_GET_STATS_RSP:
24637 return WDI_GET_STATS_RESP;
24638 case WLAN_HAL_UPDATE_CFG_RSP:
24639 return WDI_UPDATE_CFG_RESP;
24640 case WLAN_HAL_ADD_BA_SESSION_RSP:
24641 return WDI_ADD_BA_SESSION_RESP;
24642 case WLAN_HAL_TRIGGER_BA_RSP:
24643 return WDI_TRIGGER_BA_RESP;
24644 case WLAN_HAL_UPDATE_BEACON_RSP:
24645 return WDI_UPD_BCON_PRMS_RESP;
24646 case WLAN_HAL_SEND_BEACON_RSP:
24647 return WDI_SND_BCON_RESP;
24648 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24649 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24650 /*Indications*/
24651 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24652 return WDI_HAL_RSSI_NOTIFICATION_IND;
24653 case WLAN_HAL_MISSED_BEACON_IND:
24654 return WDI_HAL_MISSED_BEACON_IND;
24655 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24656 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24657 case WLAN_HAL_MIC_FAILURE_IND:
24658 return WDI_HAL_MIC_FAILURE_IND;
24659 case WLAN_HAL_FATAL_ERROR_IND:
24660 return WDI_HAL_FATAL_ERROR_IND;
24661 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24662 return WDI_HAL_DEL_STA_IND;
24663 case WLAN_HAL_COEX_IND:
24664 return WDI_HAL_COEX_IND;
24665 case WLAN_HAL_OTA_TX_COMPL_IND:
24666 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024667 case WLAN_HAL_P2P_NOA_ATTR_IND:
24668 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024669 case WLAN_HAL_P2P_NOA_START_IND:
24670 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024671 case WLAN_HAL_DEL_BA_IND:
24672 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 case WLAN_HAL_TX_PER_HIT_IND:
24674 return WDI_HAL_TX_PER_HIT_IND;
24675 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24676 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024677 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24678 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024679 case WLAN_HAL_SET_TX_POWER_RSP:
24680 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024681 case WLAN_HAL_SET_P2P_GONOA_RSP:
24682 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024683#ifdef FEATURE_WLAN_TDLS
24684 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24685 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024686 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24687 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024688 case WLAN_HAL_TDLS_IND:
24689 return WDI_HAL_TDLS_IND;
24690#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024692 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024693 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024694 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024695 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024696 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024697 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024698 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024699 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024700 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024701 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024702 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024703 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024704 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024705 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024706 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024707 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024708 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024709 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24710 return WDI_SET_BEACON_FILTER_RESP;
24711 case WLAN_HAL_REM_BCN_FILTER_RSP:
24712 return WDI_REM_BEACON_FILTER_RESP;
24713 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24714 return WDI_SET_RSSI_THRESHOLDS_RESP;
24715 case WLAN_HAL_HOST_OFFLOAD_RSP:
24716 return WDI_HOST_OFFLOAD_RESP;
24717 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24718 return WDI_WOWL_ADD_BC_PTRN_RESP;
24719 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24720 return WDI_WOWL_DEL_BC_PTRN_RESP;
24721 case WLAN_HAL_ENTER_WOWL_RSP:
24722 return WDI_WOWL_ENTER_RESP;
24723 case WLAN_HAL_EXIT_WOWL_RSP:
24724 return WDI_WOWL_EXIT_RESP;
24725 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24726 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24727 case WLAN_HAL_DOWNLOAD_NV_RSP:
24728 return WDI_NV_DOWNLOAD_RESP;
24729 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24730 return WDI_FLUSH_AC_RESP;
24731 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24732 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024733 case WLAN_HAL_PROCESS_PTT_RSP:
24734 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024735 case WLAN_HAL_ADD_STA_SELF_RSP:
24736 return WDI_ADD_STA_SELF_RESP;
24737case WLAN_HAL_DEL_STA_SELF_RSP:
24738 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024739#ifdef FEATURE_OEM_DATA_SUPPORT
24740 case WLAN_HAL_START_OEM_DATA_RSP:
24741 return WDI_START_OEM_DATA_RESP;
24742#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024743 case WLAN_HAL_HOST_RESUME_RSP:
24744 return WDI_HOST_RESUME_RESP;
24745 case WLAN_HAL_KEEP_ALIVE_RSP:
24746 return WDI_KEEP_ALIVE_RESP;
24747#ifdef FEATURE_WLAN_SCAN_PNO
24748 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24749 return WDI_SET_PREF_NETWORK_RESP;
24750 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024751 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024752 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24753 return WDI_UPDATE_SCAN_PARAMS_RESP;
24754 case WLAN_HAL_PREF_NETW_FOUND_IND:
24755 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24756#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024757#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024758 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24759 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024760#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024761 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24762 return WDI_SET_TX_PER_TRACKING_RESP;
24763#ifdef WLAN_FEATURE_PACKET_FILTERING
24764 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24765 return WDI_8023_MULTICAST_LIST_RESP;
24766 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24767 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24768 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24769 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24770 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24771 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24772#endif // WLAN_FEATURE_PACKET_FILTERING
24773
24774 case WLAN_HAL_DUMP_COMMAND_RSP:
24775 return WDI_HAL_DUMP_CMD_RESP;
24776 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24777 return WDI_SET_POWER_PARAMS_RESP;
24778#ifdef WLAN_FEATURE_VOWIFI_11R
24779 case WLAN_HAL_AGGR_ADD_TS_RSP:
24780 return WDI_AGGR_ADD_TS_RESP;
24781#endif
24782
24783#ifdef WLAN_FEATURE_GTK_OFFLOAD
24784 case WLAN_HAL_GTK_OFFLOAD_RSP:
24785 return WDI_GTK_OFFLOAD_RESP;
24786 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24787 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24788#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24789#ifdef WLAN_WAKEUP_EVENTS
24790 case WLAN_HAL_WAKE_REASON_IND:
24791 return WDI_HAL_WAKE_REASON_IND;
24792#endif // WLAN_WAKEUP_EVENTS
24793
24794 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24795 return WDI_SET_TM_LEVEL_RESP;
24796 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24797 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024798#ifdef WLAN_FEATURE_11AC
24799 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24800 return WDI_UPDATE_VHT_OP_MODE_RESP;
24801#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024802#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024803 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24804 return WDI_GET_ROAM_RSSI_RESP;
24805#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024806
Leo Chang9056f462013-08-01 19:21:11 -070024807#ifdef FEATURE_WLAN_LPHB
24808 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024809 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024810 case WLAN_HAL_LPHB_CFG_RSP:
24811 return WDI_LPHB_CFG_RESP;
24812#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024813
24814 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24815 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024816 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24817 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024818
Rajeev79dbe4c2013-10-05 11:03:42 +053024819#ifdef FEATURE_WLAN_BATCH_SCAN
24820 case WLAN_HAL_BATCHSCAN_SET_RSP:
24821 return WDI_SET_BATCH_SCAN_RESP;
24822 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24823 return WDI_BATCHSCAN_RESULT_IND;
24824#endif // FEATURE_WLAN_BATCH_SCAN
24825
Leo Chang0b0e45a2013-12-15 15:18:55 -080024826#ifdef FEATURE_WLAN_CH_AVOID
24827 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24828 return WDI_HAL_CH_AVOID_IND;
24829#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024830 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24831 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024832 case WLAN_HAL_PRINT_REG_INFO_IND:
24833 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024834 case WLAN_HAL_CH_SWITCH_V1_RSP:
24835 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024836 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24837 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024838#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24839 case WLAN_HAL_LL_SET_STATS_RSP:
24840 return WDI_LL_STATS_SET_RSP;
24841 case WLAN_HAL_LL_GET_STATS_RSP:
24842 return WDI_LL_STATS_GET_RSP;
24843 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24844 return WDI_LL_STATS_CLEAR_RSP;
24845 case WLAN_HAL_LL_NOTIFY_STATS:
24846 return WDI_HAL_LL_STATS_RESULTS_IND;
24847#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024848#ifdef WLAN_FEATURE_EXTSCAN
24849 case WLAN_HAL_EXT_SCAN_START_RSP:
24850 return WDI_EXTSCAN_START_RSP;
24851 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24852 return WDI_EXTSCAN_STOP_RSP;
24853 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24854 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24855 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24856 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24857 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24858 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24859 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24860 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024861 case WLAN_HAL_SSID_HOTLIST_SET_RSP:
24862 return WDI_EXTSCAN_SET_HOTLIST_SSID_RSP;
24863 case WLAN_HAL_SSID_HOTLIST_RESET_RSP:
24864 return WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053024865 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24866 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24867 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24868 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24869 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24870 return WDI_HAL_EXTSCAN_RESULT_IND;
24871 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24872 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024873 case WLAN_HAL_SSID_HOTLIST_RESULT_IND:
24874 return WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND;
Dino Mycle41bdc942014-06-10 11:30:24 +053024875#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024876 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24877 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024878 case WLAN_HAL_FW_STATS_RSP:
24879 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024880 case WLAN_HAL_ENCRYPT_DATA_RSP:
24881 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024882 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24883 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024884 case WLAN_HAL_GET_FRAME_LOG_RSP:
24885 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024886 case WLAN_HAL_NAN_RSP:
24887 return WDI_NAN_RESPONSE;
24888 case WLAN_HAL_NAN_EVT:
24889 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053024890 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
24891 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024892 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24893 return WDI_MON_START_RSP;
24894 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24895 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024896 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24897 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053024898 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
24899 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024900 case WLAN_HAL_START_RSSI_MONITORING_RSP:
24901 return WDI_START_RSSI_MONITOR_RSP;
24902 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
24903 return WDI_STOP_RSSI_MONITOR_RSP;
24904 case WLAN_HAL_RSSI_MONITORING_IND:
24905 return WDI_HAL_RSSI_BREACHED_IND;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024906 case WLAN_HAL_WIFI_CONFIG_SET_PARAMS_RSP:
24907 return WDI_WIFI_CONFIG_SET_RSP;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024908#ifdef FEATURE_OEM_DATA_SUPPORT
24909 case WLAN_HAL_START_OEM_DATA_RSP_IND_NEW:
24910 return WDI_HAL_START_OEM_DATA_RSP_IND_NEW;
24911#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024912 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024913 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024914 }
24915
24916}/*HAL_2_WDI_RSP_TYPE*/
24917
24918
24919/*Convert WDI driver type into HAL driver type*/
24920WPT_STATIC WPT_INLINE tDriverType
24921WDI_2_HAL_DRV_TYPE
24922(
24923 WDI_DriverType wdiDriverType
24924)
24925{
Jeff Johnsone7245742012-09-05 17:12:55 -070024926 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024927 the chances of getting inlined*/
24928 switch( wdiDriverType )
24929 {
24930 case WDI_DRIVER_TYPE_PRODUCTION:
24931 return eDRIVER_TYPE_PRODUCTION;
24932 case WDI_DRIVER_TYPE_MFG:
24933 return eDRIVER_TYPE_MFG;
24934 case WDI_DRIVER_TYPE_DVT:
24935 return eDRIVER_TYPE_DVT;
24936 }
24937
Jeff Johnsone7245742012-09-05 17:12:55 -070024938 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024939}/*WDI_2_HAL_DRV_TYPE*/
24940
24941
24942/*Convert WDI stop reason into HAL stop reason*/
24943WPT_STATIC WPT_INLINE tHalStopType
24944WDI_2_HAL_STOP_REASON
24945(
24946 WDI_StopType wdiDriverType
24947)
24948{
Jeff Johnsone7245742012-09-05 17:12:55 -070024949 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024950 the chances of getting inlined*/
24951 switch( wdiDriverType )
24952 {
24953 case WDI_STOP_TYPE_SYS_RESET:
24954 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024955 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24956 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024957 case WDI_STOP_TYPE_RF_KILL:
24958 return HAL_STOP_TYPE_RF_KILL;
24959 }
24960
Jeff Johnsone7245742012-09-05 17:12:55 -070024961 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024962}/*WDI_2_HAL_STOP_REASON*/
24963
24964
24965/*Convert WDI scan mode type into HAL scan mode type*/
24966WPT_STATIC WPT_INLINE eHalSysMode
24967WDI_2_HAL_SCAN_MODE
24968(
24969 WDI_ScanMode wdiScanMode
24970)
24971{
Jeff Johnsone7245742012-09-05 17:12:55 -070024972 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024973 the chances of getting inlined*/
24974 switch( wdiScanMode )
24975 {
24976 case WDI_SCAN_MODE_NORMAL:
24977 return eHAL_SYS_MODE_NORMAL;
24978 case WDI_SCAN_MODE_LEARN:
24979 return eHAL_SYS_MODE_LEARN;
24980 case WDI_SCAN_MODE_SCAN:
24981 return eHAL_SYS_MODE_SCAN;
24982 case WDI_SCAN_MODE_PROMISC:
24983 return eHAL_SYS_MODE_PROMISC;
24984 case WDI_SCAN_MODE_SUSPEND_LINK:
24985 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024986 case WDI_SCAN_MODE_ROAM_SCAN:
24987 return eHAL_SYS_MODE_ROAM_SCAN;
24988 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24989 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024990 }
24991
Jeff Johnsone7245742012-09-05 17:12:55 -070024992 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024993}/*WDI_2_HAL_SCAN_MODE*/
24994
24995/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024996WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024997WDI_2_HAL_SEC_CH_OFFSET
24998(
24999 WDI_HTSecondaryChannelOffset wdiSecChOffset
25000)
25001{
Jeff Johnsone7245742012-09-05 17:12:55 -070025002 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025003 the chances of getting inlined*/
25004 switch( wdiSecChOffset )
25005 {
25006 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025007 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025008 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025009 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070025010 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070025011 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
25012#ifdef WLAN_FEATURE_11AC
25013 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25014 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25015 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25016 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25017 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25018 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25019 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25020 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25021 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25022 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25023 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25024 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25025 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25026 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25027#endif
25028 default:
25029 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025030 }
25031
Jeff Johnsone7245742012-09-05 17:12:55 -070025032 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025033}/*WDI_2_HAL_SEC_CH_OFFSET*/
25034
25035/*Convert WDI BSS type into HAL BSS type*/
25036WPT_STATIC WPT_INLINE tSirBssType
25037WDI_2_HAL_BSS_TYPE
25038(
25039 WDI_BssType wdiBSSType
25040)
25041{
Jeff Johnsone7245742012-09-05 17:12:55 -070025042 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025043 the chances of getting inlined*/
25044 switch( wdiBSSType )
25045 {
25046 case WDI_INFRASTRUCTURE_MODE:
25047 return eSIR_INFRASTRUCTURE_MODE;
25048 case WDI_INFRA_AP_MODE:
25049 return eSIR_INFRA_AP_MODE;
25050 case WDI_IBSS_MODE:
25051 return eSIR_IBSS_MODE;
25052 case WDI_BTAMP_STA_MODE:
25053 return eSIR_BTAMP_STA_MODE;
25054 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025055 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025056 case WDI_BSS_AUTO_MODE:
25057 return eSIR_AUTO_MODE;
25058 }
25059
Jeff Johnsone7245742012-09-05 17:12:55 -070025060 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025061}/*WDI_2_HAL_BSS_TYPE*/
25062
25063/*Convert WDI NW type into HAL NW type*/
25064WPT_STATIC WPT_INLINE tSirNwType
25065WDI_2_HAL_NW_TYPE
25066(
25067 WDI_NwType wdiNWType
25068)
25069{
Jeff Johnsone7245742012-09-05 17:12:55 -070025070 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025071 the chances of getting inlined*/
25072 switch( wdiNWType )
25073 {
25074 case WDI_11A_NW_TYPE:
25075 return eSIR_11A_NW_TYPE;
25076 case WDI_11B_NW_TYPE:
25077 return eSIR_11B_NW_TYPE;
25078 case WDI_11G_NW_TYPE:
25079 return eSIR_11G_NW_TYPE;
25080 case WDI_11N_NW_TYPE:
25081 return eSIR_11N_NW_TYPE;
25082 }
25083
Jeff Johnsone7245742012-09-05 17:12:55 -070025084 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025085}/*WDI_2_HAL_NW_TYPE*/
25086
25087/*Convert WDI chanel bonding type into HAL cb type*/
25088WPT_STATIC WPT_INLINE ePhyChanBondState
25089WDI_2_HAL_CB_STATE
25090(
25091 WDI_PhyChanBondState wdiCbState
25092)
25093{
Jeff Johnsone7245742012-09-05 17:12:55 -070025094 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025095 the chances of getting inlined*/
25096 switch ( wdiCbState )
25097 {
25098 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25099 return PHY_SINGLE_CHANNEL_CENTERED;
25100 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25101 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25102 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25103 return PHY_DOUBLE_CHANNEL_CENTERED;
25104 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25105 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025106#ifdef WLAN_FEATURE_11AC
25107 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25108 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25109 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25110 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25111 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25112 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25113 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25114 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25115 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25116 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25117 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25118 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25119 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25120 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25121#endif
25122 case WDI_MAX_CB_STATE:
25123 default:
25124 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025125 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025126
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 return PHY_CHANNEL_BONDING_STATE_MAX;
25128}/*WDI_2_HAL_CB_STATE*/
25129
25130/*Convert WDI chanel bonding type into HAL cb type*/
25131WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
25132WDI_2_HAL_HT_OPER_MODE
25133(
25134 WDI_HTOperatingMode wdiHTOperMode
25135)
25136{
Jeff Johnsone7245742012-09-05 17:12:55 -070025137 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025138 the chances of getting inlined*/
25139 switch ( wdiHTOperMode )
25140 {
25141 case WDI_HT_OP_MODE_PURE:
25142 return eSIR_HT_OP_MODE_PURE;
25143 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
25144 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
25145 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
25146 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
25147 case WDI_HT_OP_MODE_MIXED:
25148 return eSIR_HT_OP_MODE_MIXED;
25149 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025150
Jeff Johnson295189b2012-06-20 16:38:30 -070025151 return eSIR_HT_OP_MODE_MAX;
25152}/*WDI_2_HAL_HT_OPER_MODE*/
25153
25154/*Convert WDI mimo PS type into HAL mimo PS type*/
25155WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
25156WDI_2_HAL_MIMO_PS
25157(
25158 WDI_HTMIMOPowerSaveState wdiHTOperMode
25159)
25160{
Jeff Johnsone7245742012-09-05 17:12:55 -070025161 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025162 the chances of getting inlined*/
25163 switch ( wdiHTOperMode )
25164 {
25165 case WDI_HT_MIMO_PS_STATIC:
25166 return eSIR_HT_MIMO_PS_STATIC;
25167 case WDI_HT_MIMO_PS_DYNAMIC:
25168 return eSIR_HT_MIMO_PS_DYNAMIC;
25169 case WDI_HT_MIMO_PS_NA:
25170 return eSIR_HT_MIMO_PS_NA;
25171 case WDI_HT_MIMO_PS_NO_LIMIT:
25172 return eSIR_HT_MIMO_PS_NO_LIMIT;
25173 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025174
Jeff Johnson295189b2012-06-20 16:38:30 -070025175 return eSIR_HT_MIMO_PS_MAX;
25176}/*WDI_2_HAL_MIMO_PS*/
25177
25178/*Convert WDI ENC type into HAL ENC type*/
25179WPT_STATIC WPT_INLINE tAniEdType
25180WDI_2_HAL_ENC_TYPE
25181(
25182 WDI_EncryptType wdiEncType
25183)
25184{
Jeff Johnsone7245742012-09-05 17:12:55 -070025185 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025186 the chances of getting inlined*/
25187 switch ( wdiEncType )
25188 {
25189 case WDI_ENCR_NONE:
25190 return eSIR_ED_NONE;
25191
25192 case WDI_ENCR_WEP40:
25193 return eSIR_ED_WEP40;
25194
25195 case WDI_ENCR_WEP104:
25196 return eSIR_ED_WEP104;
25197
25198 case WDI_ENCR_TKIP:
25199 return eSIR_ED_TKIP;
25200
25201 case WDI_ENCR_CCMP:
25202 return eSIR_ED_CCMP;
25203
25204 case WDI_ENCR_AES_128_CMAC:
25205 return eSIR_ED_AES_128_CMAC;
25206#if defined(FEATURE_WLAN_WAPI)
25207 case WDI_ENCR_WPI:
25208 return eSIR_ED_WPI;
25209#endif
25210 default:
25211 return eSIR_ED_NOT_IMPLEMENTED;
25212 }
25213
25214}/*WDI_2_HAL_ENC_TYPE*/
25215
25216/*Convert WDI WEP type into HAL WEP type*/
25217WPT_STATIC WPT_INLINE tAniWepType
25218WDI_2_HAL_WEP_TYPE
25219(
25220 WDI_WepType wdiWEPType
25221)
25222{
Jeff Johnsone7245742012-09-05 17:12:55 -070025223 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025224 the chances of getting inlined*/
25225 switch ( wdiWEPType )
25226 {
25227 case WDI_WEP_STATIC:
25228 return eSIR_WEP_STATIC;
25229
25230 case WDI_WEP_DYNAMIC:
25231 return eSIR_WEP_DYNAMIC;
25232 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025233
Jeff Johnson295189b2012-06-20 16:38:30 -070025234 return eSIR_WEP_MAX;
25235}/*WDI_2_HAL_WEP_TYPE*/
25236
25237WPT_STATIC WPT_INLINE tSirLinkState
25238WDI_2_HAL_LINK_STATE
25239(
25240 WDI_LinkStateType wdiLinkState
25241)
25242{
Jeff Johnsone7245742012-09-05 17:12:55 -070025243 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025244 the chances of getting inlined*/
25245 switch ( wdiLinkState )
25246 {
25247 case WDI_LINK_IDLE_STATE:
25248 return eSIR_LINK_IDLE_STATE;
25249
25250 case WDI_LINK_PREASSOC_STATE:
25251 return eSIR_LINK_PREASSOC_STATE;
25252
25253 case WDI_LINK_POSTASSOC_STATE:
25254 return eSIR_LINK_POSTASSOC_STATE;
25255
25256 case WDI_LINK_AP_STATE:
25257 return eSIR_LINK_AP_STATE;
25258
25259 case WDI_LINK_IBSS_STATE:
25260 return eSIR_LINK_IBSS_STATE;
25261
25262 case WDI_LINK_BTAMP_PREASSOC_STATE:
25263 return eSIR_LINK_BTAMP_PREASSOC_STATE;
25264
25265 case WDI_LINK_BTAMP_POSTASSOC_STATE:
25266 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
25267
25268 case WDI_LINK_BTAMP_AP_STATE:
25269 return eSIR_LINK_BTAMP_AP_STATE;
25270
25271 case WDI_LINK_BTAMP_STA_STATE:
25272 return eSIR_LINK_BTAMP_STA_STATE;
25273
25274 case WDI_LINK_LEARN_STATE:
25275 return eSIR_LINK_LEARN_STATE;
25276
25277 case WDI_LINK_SCAN_STATE:
25278 return eSIR_LINK_SCAN_STATE;
25279
25280 case WDI_LINK_FINISH_SCAN_STATE:
25281 return eSIR_LINK_FINISH_SCAN_STATE;
25282
25283 case WDI_LINK_INIT_CAL_STATE:
25284 return eSIR_LINK_INIT_CAL_STATE;
25285
25286 case WDI_LINK_FINISH_CAL_STATE:
25287 return eSIR_LINK_FINISH_CAL_STATE;
25288
Jeff Johnson295189b2012-06-20 16:38:30 -070025289 case WDI_LINK_LISTEN_STATE:
25290 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025291
Gopichand Nakkala924e4552013-05-08 19:18:14 +053025292 case WDI_LINK_SEND_ACTION_STATE:
25293 return eSIR_LINK_SEND_ACTION_STATE;
25294
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 default:
25296 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070025297 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025298}
25299
Jeff Johnsone7245742012-09-05 17:12:55 -070025300/*Translate a STA Context from WDI into HAL*/
25301WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025302void
25303WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025304(
Jeff Johnson295189b2012-06-20 16:38:30 -070025305 tConfigStaParams* phalConfigSta,
25306 WDI_ConfigStaReqInfoType* pwdiConfigSta
25307)
25308{
25309 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025310#ifdef WLAN_FEATURE_11AC
25311 /* Get the Version 1 Handler */
25312 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25313 if (WDI_getFwWlanFeatCaps(DOT11AC))
25314 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025315 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025316 }
25317#endif
25318 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025319 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025320
Jeff Johnsone7245742012-09-05 17:12:55 -070025321 wpalMemoryCopy(phalConfigSta->bssId,
25322 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25323
25324 wpalMemoryCopy(phalConfigSta->staMac,
25325 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025326
25327 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25328 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25329 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25330 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25331 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25332 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25333 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25334 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25335 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25336 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25337 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25338 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25339 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25340 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25341 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25342 phalConfigSta->action = pwdiConfigSta->wdiAction;
25343 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25344 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25345 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25346 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25347 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25348 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25349 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025350
Jeff Johnson295189b2012-06-20 16:38:30 -070025351 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25352
Jeff Johnsone7245742012-09-05 17:12:55 -070025353 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025354 pwdiConfigSta->wdiSupportedRates.opRateMode;
25355 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25356 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025357 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025358 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25359 }
25360 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25361 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025362 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025363 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25364 }
25365 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25366 {
25367 phalConfigSta->supportedRates.aniLegacyRates[i] =
25368 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25369 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025370 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025371 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25372 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25373 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025374 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025375 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25376 }
25377 phalConfigSta->supportedRates.rxHighestDataRate =
25378 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25379
Jeff Johnsone7245742012-09-05 17:12:55 -070025380#ifdef WLAN_FEATURE_11AC
25381 if(phalConfigSta_V1 != NULL)
25382 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025383 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25384 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25385 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25386 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025387 }
25388#endif
25389
Jeff Johnson295189b2012-06-20 16:38:30 -070025390 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025391
Jeff Johnsone7245742012-09-05 17:12:55 -070025392#ifdef WLAN_FEATURE_11AC
25393 if(phalConfigSta_V1 != NULL)
25394 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025395 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25396 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025397 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025398 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025399 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25400 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25401
Jeff Johnsone7245742012-09-05 17:12:55 -070025402 }
25403#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025404}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025405
25406/*Translate a Rate set info from WDI into HAL*/
25407WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025408WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025409(
Jeff Johnson295189b2012-06-20 16:38:30 -070025410 tSirMacRateSet* pHalRateSet,
25411 WDI_RateSet* pwdiRateSet
25412)
25413{
Jeff Johnsone7245742012-09-05 17:12:55 -070025414 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25416
25417 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25418 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25419
25420 for ( i = 0; i < pHalRateSet->numRates; i++ )
25421 {
25422 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25423 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025424
Jeff Johnson295189b2012-06-20 16:38:30 -070025425}/*WDI_CopyWDIRateSetToHALRateSet*/
25426
25427
25428/*Translate an EDCA Parameter Record from WDI into HAL*/
25429WPT_STATIC WPT_INLINE void
25430WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025431(
Jeff Johnson295189b2012-06-20 16:38:30 -070025432 tSirMacEdcaParamRecord* phalEdcaParam,
25433 WDI_EdcaParamRecord* pWDIEdcaParam
25434)
25435{
Jeff Johnsone7245742012-09-05 17:12:55 -070025436 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025437 the chances of getting inlined*/
25438
25439 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25440 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25441 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25442 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25443
25444 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25445 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25446 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25447}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25448
25449
25450/*Copy a management frame header from WDI fmt into HAL fmt*/
25451WPT_STATIC WPT_INLINE void
25452WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25453(
25454 tSirMacMgmtHdr* pmacMgmtHdr,
25455 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25456)
25457{
25458 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25459 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25460 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25461 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25462 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25463 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25464 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25465 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25466 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25467 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25468 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25469
25470 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25471 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25472
Jeff Johnsone7245742012-09-05 17:12:55 -070025473 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025474 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025475 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025476 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025477 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025478 pwdiMacMgmtHdr->bssId, 6);
25479
25480 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25481 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25482 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25483
25484}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25485
25486
25487/*Copy config bss parameters from WDI fmt into HAL fmt*/
25488WPT_STATIC WPT_INLINE void
25489WDI_CopyWDIConfigBSSToHALConfigBSS
25490(
25491 tConfigBssParams* phalConfigBSS,
25492 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25493)
25494{
25495
25496 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025497#ifdef WLAN_FEATURE_11AC
25498 /* Get the Version 1 Handler */
25499 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25500 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025501 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025502#endif
25503
Jeff Johnson295189b2012-06-20 16:38:30 -070025504 wpalMemoryCopy( phalConfigBSS->bssId,
25505 pwdiConfigBSS->macBSSID,
25506 WDI_MAC_ADDR_LEN);
25507
25508#ifdef HAL_SELF_STA_PER_BSS
25509 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25510 pwdiConfigBSS->macSelfAddr,
25511 WDI_MAC_ADDR_LEN);
25512#endif
25513
25514 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25515
25516 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25517 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25518
Jeff Johnsone7245742012-09-05 17:12:55 -070025519 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025520 pwdiConfigBSS->ucShortSlotTimeSupported;
25521 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25522 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25523 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25524 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25525 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025526 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025527 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25528 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25529 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25530 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25531 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25532 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25533 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25534 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25535 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25536 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25537 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25538
Jeff Johnsone7245742012-09-05 17:12:55 -070025539 phalConfigBSS->htOperMode =
25540 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025541
25542 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25543 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25544 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25545 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25546
25547#ifdef WLAN_FEATURE_VOWIFI
25548 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25549#endif
25550
25551 /*! Used 32 as magic number because that is how the ssid is declared inside the
25552 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025553 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025554 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25555 pwdiConfigBSS->wdiSSID.ucLength : 32;
25556 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 pwdiConfigBSS->wdiSSID.sSSID,
25558 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025559
25560 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25561 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025562
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25564 &pwdiConfigBSS->wdiRateSet);
25565
25566 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25567
25568 if(phalConfigBSS->edcaParamsValid)
25569 {
25570 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25571 &pwdiConfigBSS->wdiBEEDCAParams);
25572 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25573 &pwdiConfigBSS->wdiBKEDCAParams);
25574 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25575 &pwdiConfigBSS->wdiVIEDCAParams);
25576 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25577 &pwdiConfigBSS->wdiVOEDCAParams);
25578 }
25579
Jeff Johnsone7245742012-09-05 17:12:55 -070025580 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025581
25582 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25583
25584#ifdef WLAN_FEATURE_VOWIFI_11R
25585
Jeff Johnsone7245742012-09-05 17:12:55 -070025586 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025588
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 if( phalConfigBSS->extSetStaKeyParamValid )
25590 {
25591 /*-----------------------------------------------------------------------
25592 Copy the STA Key parameters into the HAL message
25593 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025594 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025595 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25596
Jeff Johnsone7245742012-09-05 17:12:55 -070025597 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025598 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25599
25600 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25601
25602 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25603
25604 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25605
Jeff Johnson295189b2012-06-20 16:38:30 -070025606 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25607 keyIndex++)
25608 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025609 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25611 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25612 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25613 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25614 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25615 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025616 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025618 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025619 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025621 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25622 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025623 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025624 WDI_MAX_KEY_LENGTH);
25625 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025626 }
25627 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25628 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025629 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 sizeof(phalConfigBSS->extSetStaKeyParam) );
25631 }
25632
25633#endif /*WLAN_FEATURE_VOWIFI_11R*/
25634
Jeff Johnsone7245742012-09-05 17:12:55 -070025635#ifdef WLAN_FEATURE_11AC
25636 if(phalConfigBSS_V1 != NULL)
25637 {
25638 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25639 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25640 }
25641#endif
25642
Jeff Johnson295189b2012-06-20 16:38:30 -070025643}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25644
25645
Jeff Johnsone7245742012-09-05 17:12:55 -070025646/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025647 pointed to by user data */
25648WPT_STATIC WPT_INLINE void
25649WDI_ExtractRequestCBFromEvent
25650(
25651 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025652 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025653 void** ppUserData
25654)
25655{
25656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25657 switch ( pEvent->wdiRequest )
25658 {
25659 case WDI_START_REQ:
25660 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25661 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25662 break;
25663 case WDI_STOP_REQ:
25664 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25665 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25666 break;
25667 case WDI_INIT_SCAN_REQ:
25668 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25669 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25670 break;
25671 case WDI_START_SCAN_REQ:
25672 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25673 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25674 break;
25675 case WDI_END_SCAN_REQ:
25676 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25677 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25678 break;
25679 case WDI_FINISH_SCAN_REQ:
25680 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25681 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25682 break;
25683 case WDI_JOIN_REQ:
25684 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25685 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25686 break;
25687 case WDI_CONFIG_BSS_REQ:
25688 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25689 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25690 break;
25691 case WDI_DEL_BSS_REQ:
25692 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25693 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25694 break;
25695 case WDI_POST_ASSOC_REQ:
25696 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25697 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25698 break;
25699 case WDI_DEL_STA_REQ:
25700 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25701 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25702 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025703
25704 case WDI_ADD_STA_SELF_REQ:
25705 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25706 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25707 break;
25708
Jeff Johnson295189b2012-06-20 16:38:30 -070025709 case WDI_DEL_STA_SELF_REQ:
25710 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25711 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25712 break;
25713
25714 case WDI_SET_BSS_KEY_REQ:
25715 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25716 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25717 break;
25718 case WDI_RMV_BSS_KEY_REQ:
25719 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25720 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25721 break;
25722 case WDI_SET_STA_KEY_REQ:
25723 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25724 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25725 break;
25726 case WDI_RMV_STA_KEY_REQ:
25727 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25728 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25729 break;
25730 case WDI_ADD_TS_REQ:
25731 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25732 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25733 break;
25734 case WDI_DEL_TS_REQ:
25735 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25736 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25737 break;
25738 case WDI_UPD_EDCA_PRMS_REQ:
25739 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25740 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25741 break;
25742 case WDI_ADD_BA_SESSION_REQ:
25743 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25744 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25745 break;
25746 case WDI_DEL_BA_REQ:
25747 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25748 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25749 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025750#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025751 case WDI_TSM_STATS_REQ:
25752 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25753 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25754 break;
25755#endif
25756 case WDI_CH_SWITCH_REQ:
25757 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25758 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25759 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025760 case WDI_CH_SWITCH_REQ_V1:
25761 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25762 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25763 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025764 case WDI_CONFIG_STA_REQ:
25765 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25766 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25767 break;
25768 case WDI_SET_LINK_ST_REQ:
25769 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25770 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25771 break;
25772 case WDI_GET_STATS_REQ:
25773 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25774 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25775 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025776#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025777 case WDI_GET_ROAM_RSSI_REQ:
25778 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25779 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25780 break;
25781#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 case WDI_UPDATE_CFG_REQ:
25783 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25784 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25785 break;
25786 case WDI_ADD_BA_REQ:
25787 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25788 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25789 break;
25790 case WDI_TRIGGER_BA_REQ:
25791 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25792 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25793 break;
25794 case WDI_UPD_BCON_PRMS_REQ:
25795 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25796 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25797 break;
25798 case WDI_SND_BCON_REQ:
25799 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25800 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25801 break;
25802 case WDI_ENTER_BMPS_REQ:
25803 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25804 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25805 break;
25806 case WDI_EXIT_BMPS_REQ:
25807 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25808 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25809 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025810 case WDI_ENTER_IMPS_REQ:
25811 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25812 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25813 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025814 case WDI_ENTER_UAPSD_REQ:
25815 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25816 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25817 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025818 case WDI_EXIT_UAPSD_REQ:
25819 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25820 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25821 break;
25822 case WDI_SET_UAPSD_PARAM_REQ:
25823 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25824 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25825 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025826 case WDI_UPDATE_UAPSD_PARAM_REQ:
25827 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25828 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25829 break;
25830 case WDI_CONFIGURE_RXP_FILTER_REQ:
25831 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25832 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25833 break;
25834 case WDI_SET_BEACON_FILTER_REQ:
25835 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25836 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25837 break;
25838 case WDI_REM_BEACON_FILTER_REQ:
25839 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25840 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025841 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025842 case WDI_SET_RSSI_THRESHOLDS_REQ:
25843 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25844 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25845 break;
25846 case WDI_HOST_OFFLOAD_REQ:
25847 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25848 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25849 break;
25850 case WDI_WOWL_ADD_BC_PTRN_REQ:
25851 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25852 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25853 break;
25854 case WDI_WOWL_DEL_BC_PTRN_REQ:
25855 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25856 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25857 break;
25858 case WDI_WOWL_ENTER_REQ:
25859 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25860 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25861 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025862 case WDI_WOWL_EXIT_REQ:
25863 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25864 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25865 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025866 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25867 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25868 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25869 break;
25870 case WDI_FLUSH_AC_REQ:
25871 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25872 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25873 break;
25874 case WDI_BTAMP_EVENT_REQ:
25875 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25876 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25877 break;
25878 case WDI_KEEP_ALIVE_REQ:
25879 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25880 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25881 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025882#if defined FEATURE_WLAN_SCAN_PNO
25883 case WDI_SET_PREF_NETWORK_REQ:
25884 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25885 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25886 break;
25887 case WDI_SET_RSSI_FILTER_REQ:
25888 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25889 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25890 break;
25891 case WDI_UPDATE_SCAN_PARAMS_REQ:
25892 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25893 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25894 break;
25895#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025896 case WDI_SET_TX_PER_TRACKING_REQ:
25897 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25898 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025899 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025900#if defined WLAN_FEATURE_PACKET_FILTERING
25901 case WDI_8023_MULTICAST_LIST_REQ:
25902 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25903 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25904 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025905 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25906 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25907 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25908 break;
25909 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25910 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25911 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25912 break;
25913 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25914 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25915 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25916 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025917#endif
25918 case WDI_SET_POWER_PARAMS_REQ:
25919 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25920 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25921 break;
25922#if defined WLAN_FEATURE_GTK_OFFLOAD
25923 case WDI_GTK_OFFLOAD_REQ:
25924 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25925 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25926 break;
25927 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25928 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25929 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25930 break;
25931#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025932
Jeff Johnson295189b2012-06-20 16:38:30 -070025933 default:
25934 *ppfnReqCB = NULL;
25935 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025936 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025937 }
25938}/*WDI_ExtractRequestCBFromEvent*/
25939
25940
25941/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025942 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025943 frame xtl is enabled for a particular STA.
25944
25945 WDI_PostAssocReq must have been called.
25946
Jeff Johnsone7245742012-09-05 17:12:55 -070025947 @param uSTAIdx: STA index
25948
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 @see WDI_PostAssocReq
25950 @return Result of the function call
25951*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025952wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025953WDI_IsHwFrameTxTranslationCapable
25954(
25955 wpt_uint8 uSTAIdx
25956)
25957{
Jeff Johnsone7245742012-09-05 17:12:55 -070025958 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025959 uma value*/
25960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025961 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025962 ------------------------------------------------------------------------*/
25963 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25964 {
25965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25966 "WDI API call before module is initialized - Fail request");
25967
Jeff Johnsone7245742012-09-05 17:12:55 -070025968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025969 }
25970
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025971#ifdef WLAN_SOFTAP_VSTA_FEATURE
25972 if (IS_VSTA_IDX(uSTAIdx))
25973 {
25974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25975 "STA %d is a Virtual STA, "
25976 "HW frame translation disabled", uSTAIdx);
25977 return eWLAN_PAL_FALSE;
25978 }
25979#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025980
Jeff Johnson295189b2012-06-20 16:38:30 -070025981 return gWDICb.bFrameTransEnabled;
25982}/*WDI_IsHwFrameTxTranslationCapable*/
25983
Katya Nigam6201c3e2014-05-27 17:51:42 +053025984
25985/**
25986 @brief WDI_IsSelfSTA - check if staid is self sta index
25987
25988
25989 @param pWDICtx: pointer to the WLAN DAL context
25990 ucSTAIdx: station index
25991
25992 @return Result of the function call
25993*/
25994wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25995{
25996 wpt_uint8 ucSTAType;
25997
25998 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25999 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
26000 {
26001 if( ucSTAType == WDI_STA_ENTRY_SELF )
26002 return eWLAN_PAL_TRUE;
26003 }
26004
26005 return eWLAN_PAL_FALSE;
26006}
26007
26008
26009
Jeff Johnson295189b2012-06-20 16:38:30 -070026010#ifdef FEATURE_WLAN_SCAN_PNO
26011/**
26012 @brief WDI_SetPreferredNetworkList
26013
Jeff Johnsone7245742012-09-05 17:12:55 -070026014 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026015 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026016
Jeff Johnson295189b2012-06-20 16:38:30 -070026017 wdiPNOScanCb: callback for passing back the response
26018 of the Set PNO operation received from the
26019 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026020
Jeff Johnson295189b2012-06-20 16:38:30 -070026021 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026022 callback
26023
Jeff Johnson295189b2012-06-20 16:38:30 -070026024 @return Result of the function call
26025*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026026WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026027WDI_SetPreferredNetworkReq
26028(
26029 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26030 WDI_PNOScanCb wdiPNOScanCb,
26031 void* pUserData
26032)
26033{
26034 WDI_EventInfoType wdiEventData = {{0}};
26035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26036
26037 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026038 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026039 ------------------------------------------------------------------------*/
26040 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26041 {
26042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26043 "WDI API call before module is initialized - Fail request");
26044
Jeff Johnsone7245742012-09-05 17:12:55 -070026045 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026046 }
26047
26048 /*------------------------------------------------------------------------
26049 Fill in Event data and post to the Main FSM
26050 ------------------------------------------------------------------------*/
26051 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026052 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026053 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026054 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026055 wdiEventData.pUserData = pUserData;
26056
26057 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26058}
26059
26060
26061/**
26062 @brief WDI_SetRssiFilterReq
26063
Jeff Johnsone7245742012-09-05 17:12:55 -070026064 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026065 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026066
Jeff Johnson295189b2012-06-20 16:38:30 -070026067 wdiRssiFilterCb: callback for passing back the response
26068 of the Set RSSI Filter operation received from the
26069 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026070
Jeff Johnson295189b2012-06-20 16:38:30 -070026071 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026072 callback
26073
Jeff Johnson295189b2012-06-20 16:38:30 -070026074 @return Result of the function call
26075*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026076WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026077WDI_SetRssiFilterReq
26078(
26079 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26080 WDI_RssiFilterCb wdiRssiFilterCb,
26081 void* pUserData
26082)
26083{
26084 WDI_EventInfoType wdiEventData = {{0}};
26085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26086
26087 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026088 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026089 ------------------------------------------------------------------------*/
26090 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26091 {
26092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26093 "WDI API call before module is initialized - Fail request");
26094
Jeff Johnsone7245742012-09-05 17:12:55 -070026095 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026096 }
26097
26098 /*------------------------------------------------------------------------
26099 Fill in Event data and post to the Main FSM
26100 ------------------------------------------------------------------------*/
26101 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026102 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026103 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026104 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026105 wdiEventData.pUserData = pUserData;
26106
26107 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26108}/*WDI_SetRssiFilterReq*/
26109
26110/**
26111 @brief WDI_UpdateScanParamsReq
26112
Jeff Johnsone7245742012-09-05 17:12:55 -070026113 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026114 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026115
Jeff Johnson295189b2012-06-20 16:38:30 -070026116 wdiUpdateScanParamsCb: callback for passing back the response
26117 of the Set PNO operation received from the
26118 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026119
Jeff Johnson295189b2012-06-20 16:38:30 -070026120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026121 callback
26122
Jeff Johnson295189b2012-06-20 16:38:30 -070026123 @return Result of the function call
26124*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026125WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026126WDI_UpdateScanParamsReq
26127(
26128 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
26129 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
26130 void* pUserData
26131)
26132{
26133 WDI_EventInfoType wdiEventData = {{0}};
26134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26135
26136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026137 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026138 ------------------------------------------------------------------------*/
26139 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26140 {
26141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26142 "WDI API call before module is initialized - Fail request");
26143
Jeff Johnsone7245742012-09-05 17:12:55 -070026144 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026145 }
26146
26147 /*------------------------------------------------------------------------
26148 Fill in Event data and post to the Main FSM
26149 ------------------------------------------------------------------------*/
26150 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026151 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026152 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026153 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 wdiEventData.pUserData = pUserData;
26155
26156 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26157}
26158
26159/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026160 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026161 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026162
26163 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 pwdiPNOScanReqParams: pointer to the info received
26165 from upper layers
26166 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026167 and its size
26168
Jeff Johnson295189b2012-06-20 16:38:30 -070026169 @return Result of the function call
26170*/
26171
26172WDI_Status
26173WDI_PackPreferredNetworkList
26174(
26175 WDI_ControlBlockType* pWDICtx,
26176 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26177 wpt_uint8** ppSendBuffer,
26178 wpt_uint16* pSize
26179)
26180{
Jeff Johnsone7245742012-09-05 17:12:55 -070026181 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026182 wpt_uint16 usDataOffset = 0;
26183 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026184 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026185 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026186 /*-----------------------------------------------------------------------
26187 Get message buffer
26188 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026189 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026190 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026191 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026192 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026193 {
26194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026195 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026196 pwdiPNOScanReqParams);
26197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026199 }
26200
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026201 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
26202
Jeff Johnson295189b2012-06-20 16:38:30 -070026203 /*-------------------------------------------------------------------------
26204 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26205 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026206 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026207 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026208 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026209 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26210
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026211 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026212 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026213 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026214 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026215 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26216
26217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026218 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026219 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26220 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26221 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26222
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026223 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026224 {
26225 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026226 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026227 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26228
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026229 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026230 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026231 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026232
26233 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026234 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026235 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026236
26237 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026238 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026239 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026240
Jeff Johnsone7245742012-09-05 17:12:55 -070026241 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026242 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026243 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070026244 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
26245 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26246 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
26247 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026248
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026249 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026251 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026252
26253 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026254 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026255 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26256
26257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026258 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026259 pPrefNetwListParams->aNetworks[i].ssId.length,
26260 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026261 }
26262
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026263 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026264 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026265 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26266 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26267 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26268
26269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026270 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026271 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26273 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26274
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026275 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026276 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026277 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026278 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026279 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026280 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26281 }
26282
26283 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026284 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026285 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26286 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26287 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026288 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026289
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026290 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026291 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026292 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026293
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026294 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026295 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26296 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26297 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026298 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026299
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026300 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026301 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026302 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026303
26304 /*Set the output values*/
26305 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026306 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026307
26308 return WDI_STATUS_SUCCESS;
26309}/*WDI_PackPreferredNetworkList*/
26310
26311/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026312 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026313 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026314
26315 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026316 pwdiPNOScanReqParams: pointer to the info received
26317 from upper layers
26318 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026319 and its size
26320
Jeff Johnson295189b2012-06-20 16:38:30 -070026321 @return Result of the function call
26322*/
26323
26324WDI_Status
26325WDI_PackPreferredNetworkListNew
26326(
26327 WDI_ControlBlockType* pWDICtx,
26328 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26329 wpt_uint8** ppSendBuffer,
26330 wpt_uint16* pSize
26331)
26332{
Jeff Johnsone7245742012-09-05 17:12:55 -070026333 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026334 wpt_uint16 usDataOffset = 0;
26335 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026336 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026337 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026338
26339 /*-----------------------------------------------------------------------
26340 Get message buffer
26341 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026342 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026343 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026344 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026345 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026346 {
26347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026348 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026349 pwdiPNOScanReqParams);
26350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026352 }
26353
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026354 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26355
Jeff Johnson295189b2012-06-20 16:38:30 -070026356 /*-------------------------------------------------------------------------
26357 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26358 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026359 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026360 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026361 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26363
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026364 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026365 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026366 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026367 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026368 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26369
26370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026371 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026372 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26373 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26374 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26375
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026376 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026377 {
26378 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026379 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026380 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26381
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026382 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026383 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026384 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026385
26386 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026387 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026388 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026389
26390 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026391 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026392 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026393
26394 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026395 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026396 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026397
Jeff Johnsone7245742012-09-05 17:12:55 -070026398 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026399 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026400 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026401 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26402
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026403 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026404 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026405 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026406
26407 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026408 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026409 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26410
26411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026412 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026413 pPrefNetwListParams->aNetworks[i].ssId.length,
26414 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026415 }
26416
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026417 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026418 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026419 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26420 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26421 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26422
26423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026424 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026425 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026426 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26427 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26428
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026429 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026430 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026431 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026432 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026433 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026434 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26435 }
26436
26437 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026438 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026439 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26440 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26441 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026442 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026443
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026444 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026445 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026446 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026447
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026448 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026449 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26450 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26451 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026452 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026453
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026454 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026455 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026456 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026457
Jeff Johnson295189b2012-06-20 16:38:30 -070026458
26459 /*Set the output values*/
26460 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026461 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026462
26463 return WDI_STATUS_SUCCESS;
26464}/*WDI_PackPreferredNetworkListNew*/
26465
26466/**
26467 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026468
26469 @param pWDICtx: pointer to the WLAN DAL context
26470 pEventData: pointer to the event information structure
26471
Jeff Johnson295189b2012-06-20 16:38:30 -070026472 @return Result of the function call
26473*/
26474WDI_Status
26475WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026476(
Jeff Johnson295189b2012-06-20 16:38:30 -070026477 WDI_ControlBlockType* pWDICtx,
26478 WDI_EventInfoType* pEventData
26479)
26480{
26481 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26482 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026483 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026484 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026485 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026486
26487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026489 -------------------------------------------------------------------------*/
26490 if (( NULL == pEventData ) ||
26491 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26492 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26493 {
26494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026495 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026498 }
26499
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026500 /*----------------------------------------------------------------------
26501 Avoid Enable PNO during any active session or an ongoing session
26502 ----------------------------------------------------------------------*/
26503 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26504 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26505 {
26506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26507 "%s:(Active/Ongoing Session) - Fail request", __func__);
26508
26509 return WDI_STATUS_E_FAILURE;
26510 }
26511
Jeff Johnson295189b2012-06-20 16:38:30 -070026512 /*-------------------------------------------------------------------------
26513 Pack the PNO request structure based on version
26514 -------------------------------------------------------------------------*/
26515 if ( pWDICtx->wdiPNOVersion > 0 )
26516 {
26517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026518 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026519 pWDICtx->wdiPNOVersion);
26520
26521 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26522 &pSendBuffer, &usSendSize);
26523 }
26524 else
26525 {
26526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026527 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026528 pWDICtx->wdiPNOVersion);
26529
26530 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26531 &pSendBuffer, &usSendSize);
26532 }
26533
26534 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26535 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26536 {
26537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026538 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026540 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026541 }
26542
26543 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026544 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026545
26546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026547 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026548 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026549 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26550 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026551}
26552
26553/**
26554 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026555
26556 @param pWDICtx: pointer to the WLAN DAL context
26557 pEventData: pointer to the event information structure
26558
Jeff Johnson295189b2012-06-20 16:38:30 -070026559 @see
26560 @return Result of the function call
26561*/
26562WDI_Status
26563WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026564(
Jeff Johnson295189b2012-06-20 16:38:30 -070026565 WDI_ControlBlockType* pWDICtx,
26566 WDI_EventInfoType* pEventData
26567)
26568{
26569 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26570 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026571 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026572 wpt_uint16 usDataOffset = 0;
26573 wpt_uint16 usSendSize = 0;
26574 wpt_uint8 ucRssiThreshold;
26575
26576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026578 -------------------------------------------------------------------------*/
26579 if (( NULL == pEventData ) ||
26580 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26581 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26582 {
26583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026587 }
26588
26589 /*-----------------------------------------------------------------------
26590 Get message buffer
26591 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026592 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026593 sizeof(ucRssiThreshold),
26594 &pSendBuffer, &usDataOffset, &usSendSize))||
26595 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26596 {
26597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026598 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026599 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026602 }
26603
26604 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26605
Jeff Johnsone7245742012-09-05 17:12:55 -070026606 wpalMemoryCopy( pSendBuffer+usDataOffset,
26607 &ucRssiThreshold,
26608 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026609
26610 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026611 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026612
26613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026614 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26617 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026618}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026619#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26620/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026621 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026622
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026623 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026624 by the Device Interface
26625
26626 wdiRoamOffloadScancb: callback for passing back the response
26627 of the Roam Candidate Lookup Req operation received from the
26628 device
26629
26630 pUserData: user data will be passed back with the
26631 callback
26632 @return Result of the function call
26633*/
26634WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026635WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026636(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026637 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026638 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26639 void* pUserData
26640)
26641{
26642 WDI_EventInfoType wdiEventData = {{0}};
26643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26644
26645 /*------------------------------------------------------------------------
26646 Sanity Check
26647 ------------------------------------------------------------------------*/
26648 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26649 {
26650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26651 "WDI API call before module is initialized - Fail request");
26652
26653 return WDI_STATUS_E_NOT_ALLOWED;
26654 }
26655
26656 /*------------------------------------------------------------------------
26657 Fill in Event data and post to the Main FSM
26658 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026659 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26660 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26661 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026662 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26663 wdiEventData.pUserData = pUserData;
26664
26665 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26666}
26667
26668void
26669WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26670{
26671 switch (wdiEdType)
26672 {
26673 case WDI_ED_NONE:
26674 *EdType = eED_NONE;
26675 break;
26676 case WDI_ED_WEP40:
26677 case WDI_ED_WEP104:
26678 *EdType = eED_WEP;
26679 break;
26680 case WDI_ED_TKIP:
26681 *EdType = eED_TKIP;
26682 break;
26683 case WDI_ED_CCMP:
26684#ifdef WLAN_FEATURE_11W
26685 case WDI_ED_AES_128_CMAC:
26686#endif
26687 *EdType = eED_CCMP;
26688 break;
26689#ifdef FEATURE_WLAN_WAPI
26690 case WDI_ED_WPI:
26691 *EdType = eED_WPI;
26692 break;
26693#endif
26694 case WDI_ED_ANY:
26695 *EdType = eED_ANY;
26696 break;
26697
26698 default:
26699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26700 "%s: Unknown Encryption Type", __func__);
26701 break;
26702 }
26703}
26704
26705/**
26706 @brief Helper function to pack Start Roam Candidate Lookup
26707 Request parameters
26708
26709 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026710 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026711 from upper layers
26712 ppSendBuffer, pSize - out pointers of the packed buffer
26713 and its size
26714
26715 @return Result of the function call
26716*/
26717
26718WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026719WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026720(
26721 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026722 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026723 wpt_uint8** ppSendBuffer,
26724 wpt_uint16* pSize
26725)
26726{
26727 wpt_uint8* pSendBuffer = NULL;
26728 wpt_uint16 usDataOffset = 0;
26729 wpt_uint16 usSendSize = 0;
26730 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26731 wpt_uint8 i;
26732 /*-----------------------------------------------------------------------
26733 Get message buffer
26734 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026735 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026736 sizeof(tRoamCandidateListParams),
26737 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026738 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026739 {
26740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026741 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026742 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026743 WDI_ASSERT(0);
26744 return WDI_STATUS_E_FAILURE;
26745 }
26746 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026747 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026748 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026749 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026750 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026751 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026752 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026753 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026754 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026755 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026756 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026757
26758 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026759 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026760 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026761 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026762 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26763 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026764 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26765 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26766 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26767 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26768 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026769 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026770 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026771 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026772 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26773 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26774 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26775 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26776 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26777 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26778 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026779 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026780 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026781 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26782 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26783 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026784
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26786 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26787 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26788 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26789 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26790 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026791 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026792 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26793 pRoamCandidateListParams->RoamScanOffloadEnabled,
26794 pRoamCandidateListParams->Command,
26795 pRoamCandidateListParams->StartScanReason,
26796 pRoamCandidateListParams->NeighborScanTimerPeriod,
26797 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26798 pRoamCandidateListParams->NeighborScanChannelMinTime,
26799 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26800 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26801 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26802 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26803 pRoamCandidateListParams->ConnectedNetwork.authentication,
26804 pRoamCandidateListParams->ConnectedNetwork.encryption,
26805 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26806 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26807 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026808 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026809 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026810 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026811 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026812 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26813 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026814 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026815 pRoamCandidateListParams->us24GProbeSize);
26816 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026817 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026818 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026819 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026820 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26821 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026822 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026823 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026824 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26825 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26826 pRoamCandidateListParams->nProbes =
26827 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26828 pRoamCandidateListParams->HomeAwayTime =
26829 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026831 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26832 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026834 }
26835
26836
26837 /*Set the output values*/
26838 *ppSendBuffer = pSendBuffer;
26839 *pSize = usSendSize;
26840 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026841}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026842
26843/**
26844 @brief Process Start Roam Candidate Lookup Request function
26845
26846 @param pWDICtx: pointer to the WLAN DAL context
26847 pEventData: pointer to the event information structure
26848
26849 @return Result of the function call
26850*/
26851WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026852WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026853(
26854 WDI_ControlBlockType* pWDICtx,
26855 WDI_EventInfoType* pEventData
26856)
26857{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026858 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026859 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26860 wpt_uint8* pSendBuffer = NULL;
26861 wpt_uint16 usSendSize = 0;
26862 WDI_Status wdiStatus;
26863 /*-------------------------------------------------------------------------
26864 Sanity check
26865 -------------------------------------------------------------------------*/
26866 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026867 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026868 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26869 {
26870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26871 "%s: Invalid parameters", __func__);
26872 WDI_ASSERT(0);
26873 return WDI_STATUS_E_FAILURE;
26874 }
26875
26876 /*-------------------------------------------------------------------------
26877 Pack the Start Roam Candidate Lookup request structure based on version
26878 -------------------------------------------------------------------------*/
26879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26880 "%s: Packing Roam Candidate Lookup request ", __func__);
26881
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026882 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026883 &pSendBuffer, &usSendSize);
26884
26885 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26886 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26887 {
26888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26889 "%s: failed to pack request parameters", __func__);
26890 WDI_ASSERT(0);
26891 return wdiStatus;
26892 }
26893
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026894 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26895 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026896
26897 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026898 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026899 -------------------------------------------------------------------------*/
26900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026901 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026902}
26903
26904/**
26905 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26906 response is being received over the bus from HAL)
26907
26908 @param pWDICtx: pointer to the WLAN DAL context
26909 pEventData: pointer to the event information structure
26910
26911 @see
26912 @return Result of the function call
26913*/
26914WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026915WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026916(
26917 WDI_ControlBlockType* pWDICtx,
26918 WDI_EventInfoType* pEventData
26919)
26920{
26921 WDI_Status wdiStatus;
26922 eHalStatus halStatus;
26923 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26924
26925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26926
26927 /*-------------------------------------------------------------------------
26928 Sanity check
26929 -------------------------------------------------------------------------*/
26930 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26931 ( NULL == pEventData->pEventData ))
26932 {
26933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26934 "%s: Invalid parameters", __func__);
26935 WDI_ASSERT(0);
26936 return WDI_STATUS_E_FAILURE;
26937 }
26938
26939 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26940
26941 /*-------------------------------------------------------------------------
26942 Extract response and send it to UMAC
26943 -------------------------------------------------------------------------*/
26944 halStatus = *((eHalStatus*)pEventData->pEventData);
26945 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26946
26947 /*Notify UMAC*/
26948 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26949
26950 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026951}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026952#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026953
26954/**
26955 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026956
26957 @param pWDICtx: pointer to the WLAN DAL context
26958 pEventData: pointer to the event information structure
26959
Jeff Johnson295189b2012-06-20 16:38:30 -070026960 @see
26961 @return Result of the function call
26962*/
26963WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026964WDI_PackUpdateScanParamsReq
26965(
26966 WDI_ControlBlockType* pWDICtx,
26967 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26968 wpt_uint8** ppSendBuffer,
26969 wpt_uint16* pSize
26970)
26971{
26972 wpt_uint8* pSendBuffer = NULL;
26973 wpt_uint16 usDataOffset = 0;
26974 wpt_uint16 usSendSize = 0;
26975 tUpdateScanParams updateScanParams = {0};
26976
26977
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026979 "Begin WDI Update Scan Parameters Old Style Params");
26980 /*-----------------------------------------------------------------------
26981 Get message buffer
26982 -----------------------------------------------------------------------*/
26983 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26984 sizeof(updateScanParams),
26985 &pSendBuffer, &usDataOffset, &usSendSize))||
26986 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26987 {
26988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026989 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026990 pwdiUpdateScanParams);
26991 WDI_ASSERT(0);
26992 return WDI_STATUS_E_FAILURE;
26993 }
26994
26995 //
26996 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26997 //
26998
26999 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27000 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27001
27002 updateScanParams.ucChannelCount =
27003 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27004 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
27005 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27006 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
27007
27008 wpalMemoryCopy( updateScanParams.aChannels,
27009 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27010 updateScanParams.ucChannelCount);
27011
27012
27013 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27014 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27015 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27016 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27017 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27018
27019 wpalMemoryCopy( pSendBuffer+usDataOffset,
27020 &updateScanParams,
27021 sizeof(updateScanParams));
27022
27023 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27024 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27025
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080027026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027027 "End Update Scan Parameters Old Style");
27028
27029 /*Set the output values*/
27030 *ppSendBuffer = pSendBuffer;
27031 *pSize = usSendSize;
27032
27033 return WDI_STATUS_SUCCESS;
27034}
27035
27036/**
27037 @brief Process Update Scan Params function
27038
27039 @param pWDICtx: pointer to the WLAN DAL context
27040 pEventData: pointer to the event information structure
27041
27042 @see
27043 @return Result of the function call
27044*/
27045WDI_Status
27046WDI_PackUpdateScanParamsReqEx
27047(
27048 WDI_ControlBlockType* pWDICtx,
27049 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
27050 wpt_uint8** ppSendBuffer,
27051 wpt_uint16* pSize
27052)
27053{
27054 wpt_uint8* pSendBuffer = NULL;
27055 wpt_uint16 usDataOffset = 0;
27056 wpt_uint16 usSendSize = 0;
27057 tUpdateScanParamsEx updateScanParams = {0};
27058
27059
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027060 /*-----------------------------------------------------------------------
27061 Get message buffer
27062 -----------------------------------------------------------------------*/
27063 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27064 sizeof(updateScanParams),
27065 &pSendBuffer, &usDataOffset, &usSendSize))||
27066 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27067 {
27068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027069 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027070 pwdiUpdateScanParams);
27071 WDI_ASSERT(0);
27072 return WDI_STATUS_E_FAILURE;
27073 }
27074
27075 //
27076 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27077 //
27078
27079 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27080 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27081
27082 updateScanParams.ucChannelCount =
27083 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27084 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
27085 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27086 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
27087
27088 wpalMemoryCopy( updateScanParams.aChannels,
27089 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27090 updateScanParams.ucChannelCount);
27091
27092
27093 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27094 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27095 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27096 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27097 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27098
27099 wpalMemoryCopy( pSendBuffer+usDataOffset,
27100 &updateScanParams,
27101 sizeof(updateScanParams));
27102
27103 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27104 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27105
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027106 /*Set the output values*/
27107 *ppSendBuffer = pSendBuffer;
27108 *pSize = usSendSize;
27109
27110 return WDI_STATUS_SUCCESS;
27111}
27112
27113/**
27114 @brief Process Update Scan Params function
27115
27116 @param pWDICtx: pointer to the WLAN DAL context
27117 pEventData: pointer to the event information structure
27118
27119 @see
27120 @return Result of the function call
27121*/
27122WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027123WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027124(
Jeff Johnson295189b2012-06-20 16:38:30 -070027125 WDI_ControlBlockType* pWDICtx,
27126 WDI_EventInfoType* pEventData
27127)
27128{
27129 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
27130 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027131 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027132 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027133 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027134
27135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027136 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027137 -------------------------------------------------------------------------*/
27138 if (( NULL == pEventData ) ||
27139 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
27140 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
27141 {
27142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027143 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027146 }
27147
27148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27149 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070027150
27151 //
27152 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27153 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027154 if ( pWDICtx->wlanVersion.revision < 1 )
27155 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027156 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027157 &pSendBuffer, &usSendSize);
27158 }
27159 else
27160 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027161 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
27162 &pSendBuffer, &usSendSize);
27163 }
27164
27165 if(WDI_STATUS_SUCCESS != wdiStatus)
27166 {
27167 //memory allocation failed
27168 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027169 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027170
Jeff Johnson295189b2012-06-20 16:38:30 -070027171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027172 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027173 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027174 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027175 wdiUpdateScanParamsCb, pEventData->pUserData,
27176 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027177}
27178
27179/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027180 @brief Process Update Channel Params function
27181
27182 @param pWDICtx: pointer to the WLAN DAL context
27183 pEventData: pointer to the event information structure
27184
27185 @see
27186 @return Result of the function call
27187*/
27188WDI_Status
27189WDI_ProcessUpdateChannelParamsReq
27190(
27191 WDI_ControlBlockType* pWDICtx,
27192 WDI_EventInfoType* pEventData
27193)
27194{
27195 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
27196 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
27197 wpt_uint8* pSendBuffer = NULL;
27198 wpt_uint16 usDataOffset = 0;
27199 wpt_uint16 usSendSize = 0;
27200 tUpdateChannelReqType *updateChannelParams;
27201 wpt_uint32 usUpdateChanParamSize;
27202 wpt_uint8 num_channels = 0;
27203
27204 /*-------------------------------------------------------------------------
27205 Sanity check
27206 -------------------------------------------------------------------------*/
27207 if (( NULL == pEventData ) ||
27208 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
27209 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
27210 {
27211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27212 "%s: Invalid parameters", __func__);
27213 WDI_ASSERT(0);
27214 return WDI_STATUS_E_FAILURE;
27215 }
27216 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053027217 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027218
27219 /*-----------------------------------------------------------------------
27220 Get message buffer
27221 -----------------------------------------------------------------------*/
27222 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27223 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
27224 &pSendBuffer, &usDataOffset, &usSendSize))||
27225 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
27226 {
27227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27228 "Unable to get send buffer in Update Channel Params req %p",
27229 pwdiUpdateChanListParams);
27230 WDI_ASSERT(0);
27231 return WDI_STATUS_E_FAILURE;
27232 }
27233 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
27234
27235 updateChannelParams->numChan = num_channels;
27236 wpalMemoryCopy(&updateChannelParams->chanParam,
27237 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
27238 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
27239
27240 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
27241 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
27242
27243 /*-------------------------------------------------------------------------
27244 Send Update channel request to fw
27245 -------------------------------------------------------------------------*/
27246 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27247 wdiUpdateChanParamsCb, pEventData->pUserData,
27248 WDI_UPDATE_CHAN_RESP);
27249}
27250
27251/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027252 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070027253
27254 @param pWDICtx: pointer to the WLAN DAL context
27255 pEventData: pointer to the event information structure
27256
Jeff Johnson295189b2012-06-20 16:38:30 -070027257 @see
27258 @return Result of the function call
27259*/
27260WDI_Status
27261WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070027262(
Jeff Johnson295189b2012-06-20 16:38:30 -070027263 WDI_ControlBlockType* pWDICtx,
27264 WDI_EventInfoType* pEventData
27265)
27266{
Srikant Kuppa066904f2013-05-07 13:56:02 -070027267 WDI_LowLevelIndType wdiInd;
27268 tpPrefNetwFoundParams pNetwFoundParams;
27269 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027270
27271
27272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027274 -------------------------------------------------------------------------*/
27275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27276 ( NULL == pEventData->pEventData ))
27277 {
27278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027280 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070027281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027282 }
27283
27284 /*-------------------------------------------------------------------------
27285 Extract indication and send it to UMAC
27286 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070027287 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
27288
27289 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
27290 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
27291 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
27292
27293 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
27294 {
27295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27296 "%s: fail to allocate memory", __func__);
27297 return WDI_STATUS_MEM_FAILURE;
27298 }
27299
27300 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27301 (pNetwFoundParams->ssId.length < 32 )?
27302 pNetwFoundParams->ssId.length : 32;
27303 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27304 pNetwFoundParams->ssId.ssId,
27305 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27306 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27307 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27308 pNetwFoundParams->frameLength;
27309 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27310 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27311 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027312
27313 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027314 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027315
Jeff Johnson295189b2012-06-20 16:38:30 -070027316 // DEBUG
27317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027318 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027319 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027320 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027321 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027322 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027323 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27324
ltimariub77f24b2013-01-24 18:54:33 -080027325 if ( pWDICtx->wdiLowLevelIndCB )
27326 {
27327 /*Notify UMAC*/
27328 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27329 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027330
27331 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027332}
27333
27334/**
27335 @brief Process PNO Rsp function (called when a
27336 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027337
27338 @param pWDICtx: pointer to the WLAN DAL context
27339 pEventData: pointer to the event information structure
27340
Jeff Johnson295189b2012-06-20 16:38:30 -070027341 @see
27342 @return Result of the function call
27343*/
27344WDI_Status
27345WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027346(
Jeff Johnson295189b2012-06-20 16:38:30 -070027347 WDI_ControlBlockType* pWDICtx,
27348 WDI_EventInfoType* pEventData
27349)
27350{
27351 WDI_Status wdiStatus;
27352 eHalStatus halStatus;
27353 WDI_PNOScanCb wdiPNOScanCb = NULL;
27354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27355
27356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027358 -------------------------------------------------------------------------*/
27359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27360 ( NULL == pEventData->pEventData ))
27361 {
27362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027366 }
27367
27368
Jeff Johnsone7245742012-09-05 17:12:55 -070027369 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027370
27371 /*-------------------------------------------------------------------------
27372 Extract response and send it to UMAC
27373 -------------------------------------------------------------------------*/
27374 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027375 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027376
27377 /*Notify UMAC*/
27378 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27379
Jeff Johnsone7245742012-09-05 17:12:55 -070027380 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027381}/*WDI_ProcessSetPreferredNetworkRsp*/
27382
27383/**
27384 @brief Process RSSI Filter Rsp function (called when a
27385 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027386
27387 @param pWDICtx: pointer to the WLAN DAL context
27388 pEventData: pointer to the event information structure
27389
Jeff Johnson295189b2012-06-20 16:38:30 -070027390 @see
27391 @return Result of the function call
27392*/
27393WDI_Status
27394WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027395(
Jeff Johnson295189b2012-06-20 16:38:30 -070027396 WDI_ControlBlockType* pWDICtx,
27397 WDI_EventInfoType* pEventData
27398)
27399{
27400 WDI_Status wdiStatus;
27401 eHalStatus halStatus;
27402 WDI_RssiFilterCb wdiRssiFilterCb;
27403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27404
27405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027406 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027407 -------------------------------------------------------------------------*/
27408 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27409 ( NULL == pEventData->pEventData ))
27410 {
27411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027415 }
27416
Jeff Johnsone7245742012-09-05 17:12:55 -070027417 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027418
27419 /*-------------------------------------------------------------------------
27420 Extract response and send it to UMAC
27421 -------------------------------------------------------------------------*/
27422 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027423 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027424
27425 /*Notify UMAC*/
27426 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27427
Jeff Johnsone7245742012-09-05 17:12:55 -070027428 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027429}/*WDI_ProcessSetRssiFilterRsp*/
27430
27431/**
27432 @brief Process Update Scan Params Rsp function (called when a
27433 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027434
27435 @param pWDICtx: pointer to the WLAN DAL context
27436 pEventData: pointer to the event information structure
27437
Jeff Johnson295189b2012-06-20 16:38:30 -070027438 @see
27439 @return Result of the function call
27440*/
27441WDI_Status
27442WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027443(
Jeff Johnson295189b2012-06-20 16:38:30 -070027444 WDI_ControlBlockType* pWDICtx,
27445 WDI_EventInfoType* pEventData
27446)
27447{
27448 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027449 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027450 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027451 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27453
27454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027456 -------------------------------------------------------------------------*/
27457 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27458 ( NULL == pEventData->pEventData ))
27459 {
27460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027464 }
27465
27466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027467 "%s: Process UPD scan params ptr : %p",
27468 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027469
Jeff Johnsone7245742012-09-05 17:12:55 -070027470 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027471
27472 /*-------------------------------------------------------------------------
27473 Extract response and send it to UMAC
27474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027475 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27476 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027477 sizeof(halUpdScanParams.status));
27478
27479 uStatus = halUpdScanParams.status;
27480
27481 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027482 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027483
27484 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027485 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027486
Jeff Johnsone7245742012-09-05 17:12:55 -070027487 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027488
27489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027490 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027491 halUpdScanParams.status);
27492
27493 /*Notify UMAC*/
27494 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27495
Jeff Johnsone7245742012-09-05 17:12:55 -070027496 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027497}
27498#endif // FEATURE_WLAN_SCAN_PNO
27499
27500#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027501WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027502WDI_8023MulticastListReq
27503(
27504 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27505 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27506 void* pUserData
27507)
27508{
27509 WDI_EventInfoType wdiEventData;
27510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27511
27512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027513 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027514
27515 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027516 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027517 ------------------------------------------------------------------------*/
27518 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27519 {
27520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27521 "WDI API call before module is initialized - Fail request");
27522
Jeff Johnsone7245742012-09-05 17:12:55 -070027523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027524 }
27525
27526 /*------------------------------------------------------------------------
27527 Fill in Event data and post to the Main FSM
27528 ------------------------------------------------------------------------*/
27529 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027530 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027531 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027532 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027533 wdiEventData.pUserData = pUserData;
27534
27535 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27536}
27537
Jeff Johnsone7245742012-09-05 17:12:55 -070027538WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027539WDI_ReceiveFilterSetFilterReq
27540(
27541 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27542 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27543 void* pUserData
27544)
27545{
27546 WDI_EventInfoType wdiEventData;
27547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27548
27549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027550 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027551
27552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027554 ------------------------------------------------------------------------*/
27555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27556 {
27557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27558 "WDI API call before module is initialized - Fail request");
27559
Jeff Johnsone7245742012-09-05 17:12:55 -070027560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027561 }
27562
27563 /*------------------------------------------------------------------------
27564 Fill in Event data and post to the Main FSM
27565 ------------------------------------------------------------------------*/
27566 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027567 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27568 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027569 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27570 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027571 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027572 wdiEventData.pUserData = pUserData;
27573
27574
27575 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27576}
27577
Jeff Johnsone7245742012-09-05 17:12:55 -070027578WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027579WDI_FilterMatchCountReq
27580(
27581 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27582 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27583 void* pUserData
27584)
27585{
27586 WDI_EventInfoType wdiEventData;
27587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27588
27589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027590 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027591
27592 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027593 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027594 ------------------------------------------------------------------------*/
27595 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27596 {
27597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27598 "WDI API call before module is initialized - Fail request");
27599
Jeff Johnsone7245742012-09-05 17:12:55 -070027600 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027601 }
27602
27603 /*------------------------------------------------------------------------
27604 Fill in Event data and post to the Main FSM
27605 ------------------------------------------------------------------------*/
27606 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027607 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027608 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027609 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027610 wdiEventData.pUserData = pUserData;
27611
27612
27613 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27614}
27615
Jeff Johnsone7245742012-09-05 17:12:55 -070027616WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027617WDI_ReceiveFilterClearFilterReq
27618(
27619 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27620 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27621 void* pUserData
27622)
27623{
27624 WDI_EventInfoType wdiEventData;
27625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27626
27627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027628 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027629
27630 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027631 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027632 ------------------------------------------------------------------------*/
27633 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27634 {
27635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27636 "WDI API call before module is initialized - Fail request");
27637
Jeff Johnsone7245742012-09-05 17:12:55 -070027638 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027639 }
27640
27641 /*------------------------------------------------------------------------
27642 Fill in Event data and post to the Main FSM
27643 ------------------------------------------------------------------------*/
27644 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027645 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027646 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027647 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027648 wdiEventData.pUserData = pUserData;
27649
27650
27651 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27652}
27653
27654/**
27655 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027656
27657 @param pWDICtx: pointer to the WLAN DAL context
27658 pEventData: pointer to the event information structure
27659
Jeff Johnson295189b2012-06-20 16:38:30 -070027660 @see
27661 @return Result of the function call
27662*/
27663WDI_Status
27664WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027665(
Jeff Johnson295189b2012-06-20 16:38:30 -070027666 WDI_ControlBlockType* pWDICtx,
27667 WDI_EventInfoType* pEventData
27668)
27669{
27670 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27671 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027672 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027673 wpt_uint16 usDataOffset = 0;
27674 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027675 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027676 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027677 wpt_uint8 ucCurrentBSSSesIdx = 0;
27678 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027679
27680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027681 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027682
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027683 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27684 if( NULL == pRcvFltMcAddrListType )
27685 {
27686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27687 "Failed to alloc in WDI_Process8023MulticastListReq");
27688 return WDI_STATUS_E_FAILURE;
27689 }
27690
Jeff Johnson295189b2012-06-20 16:38:30 -070027691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027693 -------------------------------------------------------------------------*/
27694 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027695 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027696 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027697 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027698 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27699 {
27700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027701 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027702 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027704 return WDI_STATUS_E_FAILURE;
27705 }
27706
27707 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27708 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27709 &pBSSSes);
27710 if ( NULL == pBSSSes )
27711 {
27712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027713 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027714 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027716 }
27717
27718 /*-----------------------------------------------------------------------
27719 Get message buffer
27720 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027721 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27722 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027723 sizeof(tHalRcvFltMcAddrListType),
27724 &pSendBuffer, &usDataOffset, &usSendSize))||
27725 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27726 {
27727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27728 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027729 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027730 pEventData, pwdiFltPktSetMcListReqParamsType,
27731 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027732 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027735 }
27736
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027737 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027738 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027739 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027740 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027741 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027742 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27743 sizeof(tSirMacAddr));
27744 }
27745
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027746 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027747 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027748 pRcvFltMcAddrListType,
27749 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027750
27751 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027752 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027753
27754
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027755 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027757 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027758 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027759 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027760 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027761 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027762}
27763
27764/**
27765 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027766
27767 @param pWDICtx: pointer to the WLAN DAL context
27768 pEventData: pointer to the event information structure
27769
Jeff Johnson295189b2012-06-20 16:38:30 -070027770 @see
27771 @return Result of the function call
27772*/
27773WDI_Status
27774WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027775(
Jeff Johnson295189b2012-06-20 16:38:30 -070027776 WDI_ControlBlockType* pWDICtx,
27777 WDI_EventInfoType* pEventData
27778)
27779{
27780 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27781 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027782 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027783 wpt_uint16 usDataOffset = 0;
27784 wpt_uint16 usSendSize = 0;
27785 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027786 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027787 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027788 wpt_uint8 ucCurrentBSSSesIdx = 0;
27789 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027790 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27791 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027792
27793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027794 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027795
27796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027798 -------------------------------------------------------------------------*/
27799 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027800 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027801 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027802 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027803 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27804 {
27805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027808 return WDI_STATUS_E_FAILURE;
27809 }
27810
27811 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27812 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27813 &pBSSSes);
27814 if ( NULL == pBSSSes )
27815 {
27816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027817 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027819 }
27820
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027821 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27822 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027823
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027824 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27825 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27826 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27827
27828 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27829 usSessRcvPktFilterCfgSize);
27830
27831 if(NULL == pSessRcvPktFilterCfg)
27832 {
27833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27834 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027835 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027836 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027837 WDI_ASSERT(0);
27838 return WDI_STATUS_E_FAILURE;
27839 }
27840
27841 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27842
27843 /*-----------------------------------------------------------------------
27844 Get message buffer
27845 -----------------------------------------------------------------------*/
27846
27847 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27848 usSessRcvPktFilterCfgSize,
27849 &pSendBuffer, &usDataOffset, &usSendSize))||
27850 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27851 {
27852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27853 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027854 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027855 pEventData, pwdiSetRcvPktFilterReqInfo,
27856 wdiReceiveFilterSetFilterCb);
27857 WDI_ASSERT(0);
27858 wpalMemoryFree(pSessRcvPktFilterCfg);
27859 return WDI_STATUS_E_FAILURE;
27860 }
27861
27862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027863 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027864 usSendSize,pSessRcvPktFilterCfg);
27865
27866 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27867 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27868 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27869 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27870
27871 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27872
27873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27874 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27875 pSessRcvPktFilterCfg->filterType);
27876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27877 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27878 pSessRcvPktFilterCfg->coleasceTime);
27879
27880 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27881 {
27882 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27883 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27884 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27885 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27886 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27887 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27888 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27889 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27890
27891 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27892 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27893 8);
27894 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27895 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27896 8);
27897
27898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027899 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027900 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27901 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27902
27903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027904 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027905 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27906 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27907
27908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027909 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027910 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27911 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27912 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27913 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27914 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27915 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27916
27917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027918 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027919 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27920 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27921 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27922 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27923 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27924 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27925 }
27926
27927 wpalMemoryCopy( pSendBuffer+usDataOffset,
27928 pSessRcvPktFilterCfg,
27929 usSessRcvPktFilterCfgSize);
27930
27931
27932 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27933 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27934
27935 wpalMemoryFree(pSessRcvPktFilterCfg);
27936
27937 }
27938 /*If SLM_SESSIONIZATION is not supported then do this */
27939 else
27940 {
27941 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27942 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27943 * sizeof(tHalRcvPktFilterParams));
27944
27945 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027946 usRcvPktFilterCfgSize);
27947
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027948 if(NULL == pRcvPktFilterCfg)
27949 {
27950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27951 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027952 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027953 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027954 WDI_ASSERT(0);
27955 return WDI_STATUS_E_FAILURE;
27956 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027957
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027958 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027959
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027960 /*-----------------------------------------------------------------------
27961 Get message buffer
27962 -----------------------------------------------------------------------*/
27963 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027964 usRcvPktFilterCfgSize,
27965 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027966 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27967 {
27968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027969 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027970 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027971 pEventData, pwdiSetRcvPktFilterReqInfo,
27972 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027973 WDI_ASSERT(0);
27974 wpalMemoryFree(pRcvPktFilterCfg);
27975 return WDI_STATUS_E_FAILURE;
27976 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027977
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027979 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027980 usSendSize,usRcvPktFilterCfgSize);
27981
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027982 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27983 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27984 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27985 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027986
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027988 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027989 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027991 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027992 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027993
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027994 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27995 {
27996 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27997 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27998 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27999 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
28000 pRcvPktFilterCfg->paramsData[i].dataOffset =
28001 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
28002 pRcvPktFilterCfg->paramsData[i].dataLength =
28003 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070028004
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028005 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070028006 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
28007 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028008 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070028009 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
28010 8);
28011
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028013 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070028014 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070028015 pRcvPktFilterCfg->paramsData[i].cmpFlag);
28016
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028018 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028019 pRcvPktFilterCfg->paramsData[i].dataOffset,
28020 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070028021
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028023 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028024 pRcvPktFilterCfg->paramsData[i].compareData[0],
28025 pRcvPktFilterCfg->paramsData[i].compareData[1],
28026 pRcvPktFilterCfg->paramsData[i].compareData[2],
28027 pRcvPktFilterCfg->paramsData[i].compareData[3],
28028 pRcvPktFilterCfg->paramsData[i].compareData[4],
28029 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070028030
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028032 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028033 pRcvPktFilterCfg->paramsData[i].dataMask[0],
28034 pRcvPktFilterCfg->paramsData[i].dataMask[1],
28035 pRcvPktFilterCfg->paramsData[i].dataMask[2],
28036 pRcvPktFilterCfg->paramsData[i].dataMask[3],
28037 pRcvPktFilterCfg->paramsData[i].dataMask[4],
28038 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
28039 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028040
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028041 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070028042 pRcvPktFilterCfg,
28043 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070028044
28045
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028046 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
28047 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028048
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028050 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028051 wpalMemoryFree(pRcvPktFilterCfg);
28052 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028054 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028055 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028056 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028057 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028058 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028059}
28060
28061/**
28062 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028063
28064 @param pWDICtx: pointer to the WLAN DAL context
28065 pEventData: pointer to the event information structure
28066
Jeff Johnson295189b2012-06-20 16:38:30 -070028067 @see
28068 @return Result of the function call
28069*/
28070WDI_Status
28071WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028072(
Jeff Johnson295189b2012-06-20 16:38:30 -070028073 WDI_ControlBlockType* pWDICtx,
28074 WDI_EventInfoType* pEventData
28075)
28076{
28077 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
28078 NULL;
28079 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
28080 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028081 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028082 wpt_uint16 usDataOffset = 0;
28083 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028084 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
28085 wpt_uint8 ucCurrentBSSSesIdx = 0;
28086 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028087
28088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028089 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028090
28091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028093 -------------------------------------------------------------------------*/
28094 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028095 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028096 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028097 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028098 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
28099 {
28100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028104 }
28105
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028106 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28107 pwdiRcvFltPktMatchCntReqParamsType->bssId,
28108 &pBSSSes);
28109 if ( NULL == pBSSSes )
28110 {
28111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028112 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028113 return WDI_STATUS_E_FAILURE;
28114 }
28115
Jeff Johnson295189b2012-06-20 16:38:30 -070028116 /*-----------------------------------------------------------------------
28117 Get message buffer
28118 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028119 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28120 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028121 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028122 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028123 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028124 {
28125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28126 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028127 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028128 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
28129 wdiFilterMatchCountCb);
28130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028132 }
28133
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028134 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
28135 wpalMemoryCopy( pSendBuffer+usDataOffset,
28136 &rcvFltPktMatchCntReqParam,
28137 sizeof(rcvFltPktMatchCntReqParam));
28138
Jeff Johnson295189b2012-06-20 16:38:30 -070028139 //
28140 // Don't need to fill send buffer other than header
28141 //
28142 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028143 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028144
28145
28146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028147 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028148 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028149 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28150 wdiFilterMatchCountCb,
28151 pEventData->pUserData,
28152 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028153}
28154
28155/**
28156 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028157
28158 @param pWDICtx: pointer to the WLAN DAL context
28159 pEventData: pointer to the event information structure
28160
Jeff Johnson295189b2012-06-20 16:38:30 -070028161 @see
28162 @return Result of the function call
28163*/
28164WDI_Status
28165WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028166(
Jeff Johnson295189b2012-06-20 16:38:30 -070028167 WDI_ControlBlockType* pWDICtx,
28168 WDI_EventInfoType* pEventData
28169)
Jeff Johnsone7245742012-09-05 17:12:55 -070028170{
Jeff Johnson295189b2012-06-20 16:38:30 -070028171 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
28172 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028173 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028174 wpt_uint16 usDataOffset = 0;
28175 wpt_uint16 usSendSize = 0;
28176 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028177 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070028178 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028179
28180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028181 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028182
28183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028184 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028185 -------------------------------------------------------------------------*/
28186 if (( NULL == pEventData ) ||
28187 ( NULL == (pwdiRcvFltPktClearReqParamsType =
28188 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028189 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028190 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
28191 {
28192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028193 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028195 return WDI_STATUS_E_FAILURE;
28196 }
28197
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028198 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028199 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
28200 &pBSSSes);
28201 if ( NULL == pBSSSes )
28202 {
28203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028204 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028206 }
28207
28208 /*-----------------------------------------------------------------------
28209 Get message buffer
28210 -----------------------------------------------------------------------*/
28211 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028212 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028213 sizeof(tHalRcvFltPktClearParam),
28214 &pSendBuffer, &usDataOffset, &usSendSize))||
28215 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
28216 {
28217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28218 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028219 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028220 pEventData, pwdiRcvFltPktClearReqParamsType,
28221 wdiRcvFltPktClearFilterCb);
28222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028224 }
28225
28226
28227 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028228 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070028229 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028230 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070028231
Jeff Johnsone7245742012-09-05 17:12:55 -070028232 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
28233 wpalMemoryCopy( pSendBuffer+usDataOffset,
28234 &rcvFltPktClearParam,
28235 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070028236
28237 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028238 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028239
28240
28241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028242 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028243 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028244 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028245 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028246 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028247}
28248
28249/**
28250 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028251
28252 @param pWDICtx: pointer to the WLAN DAL context
28253 pEventData: pointer to the event information structure
28254
Jeff Johnson295189b2012-06-20 16:38:30 -070028255 @see
28256 @return Result of the function call
28257*/
28258WDI_Status
28259WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028260(
Jeff Johnson295189b2012-06-20 16:38:30 -070028261 WDI_ControlBlockType* pWDICtx,
28262 WDI_EventInfoType* pEventData
28263)
28264{
Jeff Johnson295189b2012-06-20 16:38:30 -070028265 eHalStatus halStatus;
28266 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028267 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
28268 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28270
28271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028272 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028273
28274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028275 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028276 -------------------------------------------------------------------------*/
28277 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28278 ( NULL == pEventData->pEventData ))
28279 {
28280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028281 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028284 }
28285
Jeff Johnsone7245742012-09-05 17:12:55 -070028286 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028287
28288 /*-------------------------------------------------------------------------
28289 Extract response and send it to UMAC
28290 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028291 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28292 {
28293 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
28294 pEventData->pEventData,
28295 sizeof(halRcvFltPktSetMcListRsp));
28296
28297 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
28298 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
28299 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28300 halRcvFltPktSetMcListRsp.bssIdx;
28301 }
28302 else
28303 {
28304 halStatus = *((eHalStatus*)pEventData->pEventData);
28305 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28306 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028307
28308 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028309 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028310
Jeff Johnsone7245742012-09-05 17:12:55 -070028311 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028312}
28313
28314/**
28315 @brief Process Set Rsp function (called when a
28316 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028317
28318 @param pWDICtx: pointer to the WLAN DAL context
28319 pEventData: pointer to the event information structure
28320
Jeff Johnson295189b2012-06-20 16:38:30 -070028321 @see
28322 @return Result of the function call
28323*/
28324WDI_Status
28325WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028326(
Jeff Johnson295189b2012-06-20 16:38:30 -070028327 WDI_ControlBlockType* pWDICtx,
28328 WDI_EventInfoType* pEventData
28329)
28330{
Jeff Johnson295189b2012-06-20 16:38:30 -070028331 eHalStatus halStatus;
28332 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028333 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28334 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28336
28337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028338 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028339
28340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028341 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028342 -------------------------------------------------------------------------*/
28343 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28344 ( NULL == pEventData->pEventData ))
28345 {
28346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028347 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028350 }
28351
28352 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028353 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028354
28355 /*-------------------------------------------------------------------------
28356 Extract response and send it to UMAC
28357 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028358 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28359 {
28360 wpalMemoryCopy( &halSetPktFilterRspParams,
28361 pEventData->pEventData,
28362 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028363
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028364 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28365 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28366 }
28367 else
28368 {
28369 halStatus = *((eHalStatus*)pEventData->pEventData);
28370 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28371 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028372 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028373 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028374
Jeff Johnsone7245742012-09-05 17:12:55 -070028375 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028376}
28377
28378/**
28379 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028380
28381 @param pWDICtx: pointer to the WLAN DAL context
28382 pEventData: pointer to the event information structure
28383
Jeff Johnson295189b2012-06-20 16:38:30 -070028384 @see
28385 @return Result of the function call
28386*/
28387WDI_Status
28388WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028389(
Jeff Johnson295189b2012-06-20 16:38:30 -070028390 WDI_ControlBlockType* pWDICtx,
28391 WDI_EventInfoType* pEventData
28392)
28393{
Jeff Johnson295189b2012-06-20 16:38:30 -070028394 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028395 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028396 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28397 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028398
28399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28400
28401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028402 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028403
28404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028405 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028406 -------------------------------------------------------------------------*/
28407 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28408 ( NULL == pEventData->pEventData ))
28409 {
28410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028411 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028414 }
28415
Jeff Johnsone7245742012-09-05 17:12:55 -070028416 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028417
28418 /*-------------------------------------------------------------------------
28419 Extract response and send it to UMAC
28420 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028421 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28422 {
28423 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28424 pEventData->pEventData,
28425 sizeof(halRcvFltrPktMatachRsp));
28426
28427 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28428 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28429 }
28430 else
28431 {
28432 halStatus = *((eHalStatus*)pEventData->pEventData);
28433 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28434 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028435
28436 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028437 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028438
Jeff Johnsone7245742012-09-05 17:12:55 -070028439 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028440}
28441
28442/**
28443 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028444
28445 @param pWDICtx: pointer to the WLAN DAL context
28446 pEventData: pointer to the event information structure
28447
Jeff Johnson295189b2012-06-20 16:38:30 -070028448 @see
28449 @return Result of the function call
28450*/
28451WDI_Status
28452WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028453(
Jeff Johnson295189b2012-06-20 16:38:30 -070028454 WDI_ControlBlockType* pWDICtx,
28455 WDI_EventInfoType* pEventData
28456)
28457{
Jeff Johnson295189b2012-06-20 16:38:30 -070028458 eHalStatus halStatus;
28459 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028460 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28461 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28463
28464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028465 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028466
28467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028469 -------------------------------------------------------------------------*/
28470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28471 ( NULL == pEventData->pEventData ))
28472 {
28473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028477 }
28478
28479 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028480 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028481
28482 /*-------------------------------------------------------------------------
28483 Extract response and send it to UMAC
28484 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028485 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28486 {
28487 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28488 pEventData->pEventData,
28489 sizeof(halRcvFltPktClearRspMsg));
28490
28491 wdiRcvFltPktClearRspParamsType.wdiStatus =
28492 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28493 wdiRcvFltPktClearRspParamsType.bssIdx =
28494 halRcvFltPktClearRspMsg.bssIdx;
28495 }
28496 else
28497 {
28498 halStatus = *((eHalStatus*)pEventData->pEventData);
28499 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28500 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028501
28502 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028503 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028504
Jeff Johnsone7245742012-09-05 17:12:55 -070028505 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028506}
28507#endif // WLAN_FEATURE_PACKET_FILTERING
28508
28509/**
28510 @brief Process Shutdown Rsp function
28511 There is no shutdown response comming from HAL
28512 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028513
Jeff Johnson295189b2012-06-20 16:38:30 -070028514 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028515 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028516
28517 @see
28518 @return Result of the function call
28519*/
28520WDI_Status
28521WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028522(
Jeff Johnson295189b2012-06-20 16:38:30 -070028523 WDI_ControlBlockType* pWDICtx,
28524 WDI_EventInfoType* pEventData
28525)
28526{
28527 /*There is no shutdown response comming from HAL - function just kept for
28528 simmetry */
28529 WDI_ASSERT(0);
28530 return WDI_STATUS_SUCCESS;
28531}/*WDI_ProcessShutdownRsp*/
28532
28533/**
28534 @brief WDI_SetPowerParamsReq
28535
Jeff Johnsone7245742012-09-05 17:12:55 -070028536 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028537 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028538
Jeff Johnson295189b2012-06-20 16:38:30 -070028539 wdiPowerParamsCb: callback for passing back the response
28540 of the Set Power Params operation received from the
28541 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028542
Jeff Johnson295189b2012-06-20 16:38:30 -070028543 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028544 callback
28545
Jeff Johnson295189b2012-06-20 16:38:30 -070028546 @return Result of the function call
28547*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028548WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028549WDI_SetPowerParamsReq
28550(
28551 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28552 WDI_SetPowerParamsCb wdiPowerParamsCb,
28553 void* pUserData
28554)
28555{
28556 WDI_EventInfoType wdiEventData;
28557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28558
28559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028560 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028561 ------------------------------------------------------------------------*/
28562 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28563 {
28564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28565 "WDI API call before module is initialized - Fail request");
28566
Jeff Johnsone7245742012-09-05 17:12:55 -070028567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028568 }
28569
28570 /*------------------------------------------------------------------------
28571 Fill in Event data and post to the Main FSM
28572 ------------------------------------------------------------------------*/
28573 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028574 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028575 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028576 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028577 wdiEventData.pUserData = pUserData;
28578
28579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28580}/*WDI_SetPowerParamsReq*/
28581
28582/**
28583 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028584
28585 @param pWDICtx: pointer to the WLAN DAL context
28586 pEventData: pointer to the event information structure
28587
Jeff Johnson295189b2012-06-20 16:38:30 -070028588 @see
28589 @return Result of the function call
28590*/
28591WDI_Status
28592WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028593(
Jeff Johnson295189b2012-06-20 16:38:30 -070028594 WDI_ControlBlockType* pWDICtx,
28595 WDI_EventInfoType* pEventData
28596)
28597{
28598 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28599 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028600 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028601 wpt_uint16 usDataOffset = 0;
28602 wpt_uint16 usSendSize = 0;
28603 tSetPowerParamsType powerParams;
28604
28605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028607 -------------------------------------------------------------------------*/
28608 if (( NULL == pEventData ) ||
28609 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28610 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28611 {
28612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028616 }
28617
28618 /*-----------------------------------------------------------------------
28619 Get message buffer
28620 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028621 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028622 sizeof(powerParams),
28623 &pSendBuffer, &usDataOffset, &usSendSize))||
28624 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28625 {
28626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028627 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028628 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028631 }
28632
28633 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028634 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028635 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28636
28637 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028638 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028639 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28640
28641 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028642 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028643 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28644
28645 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028646 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028647 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28648
28649 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028650 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028651 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28652
28653 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028654 powerParams.uBETInterval =
28655 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028656
Yue Mac24062f2013-05-13 17:01:29 -070028657 /* MAX LI for modulated DTIM */
28658 powerParams.uMaxLIModulatedDTIM =
28659 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028660
28661 wpalMemoryCopy( pSendBuffer+usDataOffset,
28662 &powerParams,
28663 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028664
28665 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028666 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028667
28668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028669 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028670 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028671 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28672 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028673}
28674
28675/**
28676 @brief Process Power Params Rsp function (called when a
28677 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028678
28679 @param pWDICtx: pointer to the WLAN DAL context
28680 pEventData: pointer to the event information structure
28681
Jeff Johnson295189b2012-06-20 16:38:30 -070028682 @see
28683 @return Result of the function call
28684*/
28685WDI_Status
28686WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028687(
Jeff Johnson295189b2012-06-20 16:38:30 -070028688 WDI_ControlBlockType* pWDICtx,
28689 WDI_EventInfoType* pEventData
28690)
28691{
28692 WDI_Status wdiStatus;
28693 eHalStatus halStatus;
28694 WDI_SetPowerParamsCb wdiPowerParamsCb;
28695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28696
28697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028698 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028699 -------------------------------------------------------------------------*/
28700 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28701 ( NULL == pEventData->pEventData ))
28702 {
28703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028704 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028706 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028707 }
28708
Jeff Johnsone7245742012-09-05 17:12:55 -070028709 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028710
28711 /*-------------------------------------------------------------------------
28712 Extract response and send it to UMAC
28713 -------------------------------------------------------------------------*/
28714 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028715 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028716
28717 /*Notify UMAC*/
28718 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28719
Jeff Johnsone7245742012-09-05 17:12:55 -070028720 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028721}/*WDI_ProcessSetPowerParamsRsp*/
28722
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028723/**
28724 @brief WDI_dhcpStartInd
28725 Host will send an event to the FW when DHCP is initiated
28726
28727 @param
28728 WDI_DHCPInd: DHCP Indication
28729 @see
28730 @return Result of the function call
28731*/
28732WDI_Status
28733WDI_dhcpStartInd
28734(
28735 WDI_DHCPInd *wdiDHCPInd
28736)
28737{
28738 WDI_EventInfoType wdiEventData;
28739
28740 /*------------------------------------------------------------------------
28741 Sanity Check
28742 ------------------------------------------------------------------------*/
28743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28744 {
28745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28746 "WDI API call before module is initialized - Fail request");
28747
28748 return WDI_STATUS_E_NOT_ALLOWED;
28749 }
28750
28751 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28752 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028753 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028754 wdiEventData.pCBfnc = NULL;
28755 wdiEventData.pUserData = NULL;
28756
28757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28758}
28759
28760
28761/**
28762 @brief WDI_dhcpStopInd
28763 Host will send an event to the FW when DHCP is completed
28764
28765 @param
28766 WDI_DHCPInd: DHCP Indication
28767 @see
28768 @return Result of the function call
28769*/
28770WDI_Status
28771WDI_dhcpStopInd
28772(
28773 WDI_DHCPInd *wdiDHCPInd
28774)
28775{
28776 WDI_EventInfoType wdiEventData;
28777
28778 /*------------------------------------------------------------------------
28779 Sanity Check
28780 ------------------------------------------------------------------------*/
28781 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28782 {
28783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28784 "WDI API call before module is initialized - Fail request");
28785
28786 return WDI_STATUS_E_NOT_ALLOWED;
28787 }
28788
28789 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28790 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028791 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028792 wdiEventData.pCBfnc = NULL;
28793 wdiEventData.pUserData = NULL;
28794
28795 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28796}
28797
28798
28799/**
28800 @brief Process DHCP Start Indication message and post it to HAL
28801
28802 @param pWDICtx: pointer to the WLAN DAL context
28803 pEventData: pointer to the event information structure
28804
28805 @see
28806 @return Result of the function call
28807*/
28808WDI_Status
28809WDI_ProcessDHCPStartInd
28810(
28811 WDI_ControlBlockType* pWDICtx,
28812 WDI_EventInfoType* pEventData
28813)
28814{
28815 wpt_uint8* pSendBuffer = NULL;
28816 wpt_uint16 usDataOffset = 0;
28817 wpt_uint16 usSendSize = 0;
28818 wpt_uint16 usLen = 0;
28819 WDI_DHCPInd* pwdiDHCPInd = NULL;
28820 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028821 WDI_Status wdiStatus;
28822
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028823
28824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28825
28826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28827 "%s", __func__);
28828
28829 /*-------------------------------------------------------------------------
28830 Sanity check
28831 -------------------------------------------------------------------------*/
28832 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28833 {
28834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28835 "%s: Invalid parameters", __func__);
28836 WDI_ASSERT(0);
28837 return WDI_STATUS_E_FAILURE;
28838 }
28839 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28840 /*-----------------------------------------------------------------------
28841 Get message buffer
28842 -----------------------------------------------------------------------*/
28843
28844 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28845 WDI_DHCP_START_IND,
28846 sizeof(tDHCPInfo),
28847 &pSendBuffer, &usDataOffset, &usSendSize))||
28848 ( usSendSize < (usDataOffset + usLen )))
28849 {
28850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28851 "Unable to get send buffer in DHCP Start req %p ",
28852 pEventData);
28853 WDI_ASSERT(0);
28854 return WDI_STATUS_E_FAILURE;
28855 }
28856
Sandeep Puligillaee789512014-02-13 19:14:52 +053028857 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028858 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28859 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28860 WDI_MAC_ADDR_LEN);
28861
28862 pWDICtx->pReqStatusUserData = NULL;
28863 pWDICtx->pfncRspCB = NULL;
28864
28865 /*-------------------------------------------------------------------------
28866 Send DHCP Start Indication to HAL
28867 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028868 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28869 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028870}/*WDI_ProcessDHCPStartInd*/
28871
28872/**
28873 @brief Process DHCP Stop indication message and post it to HAL
28874
28875 @param pWDICtx: pointer to the WLAN DAL context
28876 pEventData: pointer to the event information structure
28877
28878 @see
28879 @return Result of the function call
28880*/
28881WDI_Status
28882WDI_ProcessDHCPStopInd
28883(
28884 WDI_ControlBlockType* pWDICtx,
28885 WDI_EventInfoType* pEventData
28886)
28887{
28888 wpt_uint8* pSendBuffer = NULL;
28889 wpt_uint16 usDataOffset = 0;
28890 wpt_uint16 usSendSize = 0;
28891 wpt_uint16 usLen = 0;
28892 WDI_DHCPInd* pwdiDHCPInd = NULL;
28893 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028894 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028895
28896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28897
28898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28899 "%s", __func__);
28900
28901 /*-------------------------------------------------------------------------
28902 Sanity check
28903 -------------------------------------------------------------------------*/
28904
28905 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28906 {
28907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28908 "%s: Invalid parameters", __func__);
28909 WDI_ASSERT(0);
28910 return WDI_STATUS_E_FAILURE;
28911 }
28912 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28913 /*-----------------------------------------------------------------------
28914 Get message buffer
28915 -----------------------------------------------------------------------*/
28916
28917 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28918 WDI_DHCP_STOP_IND,
28919 sizeof(tDHCPInfo),
28920 &pSendBuffer, &usDataOffset, &usSendSize))||
28921 ( usSendSize < (usDataOffset + usLen )))
28922 {
28923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28924 "Unable to get send buffer in DHCP Start req %p ",
28925 pEventData);
28926 WDI_ASSERT(0);
28927 return WDI_STATUS_E_FAILURE;
28928 }
28929
Sandeep Puligillaee789512014-02-13 19:14:52 +053028930 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028931 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28932 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28933 WDI_MAC_ADDR_LEN);
28934
28935 pWDICtx->pReqStatusUserData = NULL;
28936 pWDICtx->pfncRspCB = NULL;
28937 /*-------------------------------------------------------------------------
28938 Send DHCP Stop indication to HAL
28939 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028940 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28941 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028942
28943}/*WDI_ProcessDHCPStopInd*/
28944
28945
Jeff Johnson295189b2012-06-20 16:38:30 -070028946#ifdef WLAN_FEATURE_GTK_OFFLOAD
28947/**
28948 @brief WDI_GTKOffloadReq will be called when the upper MAC
28949 wants to set GTK Rekey Counter while in power save. Upon
28950 the call of this API the WLAN DAL will pack and send a
28951 HAL GTK offload request message to the lower RIVA
28952 sub-system if DAL is in state STARTED.
28953
28954 In state BUSY this request will be queued. Request won't
28955 be allowed in any other state.
28956
28957 WDI_PostAssocReq must have been called.
28958
28959 @param pwdiGtkOffloadParams: the GTK offload as specified
28960 by the Device Interface
28961
28962 wdiGtkOffloadCb: callback for passing back the response
28963 of the GTK offload operation received from the device
28964
28965 pUserData: user data will be passed back with the
28966 callback
28967
28968 @see WDI_PostAssocReq
28969 @return Result of the function call
28970*/
28971WDI_Status
28972WDI_GTKOffloadReq
28973(
28974 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28975 WDI_GtkOffloadCb wdiGtkOffloadCb,
28976 void* pUserData
28977)
28978{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028979 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28981
28982 /*------------------------------------------------------------------------
28983 Sanity Check
28984 ------------------------------------------------------------------------*/
28985 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28986 {
28987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28988 "WDI API call before module is initialized - Fail request");
28989
28990 return WDI_STATUS_E_NOT_ALLOWED;
28991 }
28992
28993 /*------------------------------------------------------------------------
28994 Fill in Event data and post to the Main FSM
28995 ------------------------------------------------------------------------*/
28996 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28997 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028998 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028999 wdiEventData.pCBfnc = wdiGtkOffloadCb;
29000 wdiEventData.pUserData = pUserData;
29001
29002 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29003}
29004
29005
29006/**
29007 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
29008 MAC wants to get GTK Rekey Counter while in power save.
29009 Upon the call of this API the WLAN DAL will pack and
29010 send a HAL GTK offload request message to the lower RIVA
29011 sub-system if DAL is in state STARTED.
29012
29013 In state BUSY this request will be queued. Request won't
29014 be allowed in any other state.
29015
29016 WDI_PostAssocReq must have been called.
29017
29018 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
29019 Information Message as specified by the
29020 Device Interface
29021
29022 wdiGtkOffloadGetInfoCb: callback for passing back the
29023 response of the GTK offload operation received from the
29024 device
29025
29026 pUserData: user data will be passed back with the
29027 callback
29028
29029 @see WDI_PostAssocReq
29030 @return Result of the function call
29031*/
29032WDI_Status
29033WDI_GTKOffloadGetInfoReq
29034(
29035 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
29036 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
29037 void* pUserData
29038)
29039{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029040 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29042
29043 /*------------------------------------------------------------------------
29044 Sanity Check
29045 ------------------------------------------------------------------------*/
29046 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29047 {
29048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29049 "WDI API call before module is initialized - Fail request");
29050
29051 return WDI_STATUS_E_NOT_ALLOWED;
29052 }
29053
29054 /*------------------------------------------------------------------------
29055 Fill in Event data and post to the Main FSM
29056 ------------------------------------------------------------------------*/
29057 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
29058 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
29059 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
29060 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
29061 wdiEventData.pUserData = pUserData;
29062
29063 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29064}
29065
29066
29067/**
29068 @brief Process set GTK Offload Request function
29069
29070 @param pWDICtx: pointer to the WLAN DAL context
29071 pEventData: pointer to the event information structure
29072
29073 @see
29074 @return Result of the function call
29075*/
29076WDI_Status
29077WDI_ProcessGTKOffloadReq
29078(
29079 WDI_ControlBlockType* pWDICtx,
29080 WDI_EventInfoType* pEventData
29081)
29082{
29083 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
29084 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
29085 wpt_uint8* pSendBuffer = NULL;
29086 wpt_uint16 usDataOffset = 0;
29087 wpt_uint16 usSendSize = 0;
29088 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029089 wpt_uint8 ucCurrentSessionId = 0;
29090 WDI_BSSSessionType* pBSSSes = NULL;
29091
Jeff Johnson295189b2012-06-20 16:38:30 -070029092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29093
29094 /*-------------------------------------------------------------------------
29095 Sanity check
29096 -------------------------------------------------------------------------*/
29097 if (( NULL == pEventData ) ||
29098 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
29099 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
29100 {
29101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029102 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029103 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029104 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029105 }
29106
29107 /*-----------------------------------------------------------------------
29108 Get message buffer
29109 -----------------------------------------------------------------------*/
29110 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
29111 sizeof(gtkOffloadReqParams),
29112 &pSendBuffer, &usDataOffset, &usSendSize))||
29113 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
29114 {
29115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029116 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029117 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
29118 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029119 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029120 }
29121
29122 //
29123 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
29124 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029125 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29126 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
29127 &pBSSSes);
29128 if ( NULL == pBSSSes )
29129 {
29130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029131 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029132 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029133 }
29134
29135 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
29136
Jeff Johnson295189b2012-06-20 16:38:30 -070029137 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
29138 // Copy KCK
29139 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
29140 // Copy KEK
29141 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
29142 // Copy KeyReplayCounter
29143 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
29144
29145 wpalMemoryCopy( pSendBuffer+usDataOffset,
29146 &gtkOffloadReqParams,
29147 sizeof(gtkOffloadReqParams));
29148
29149 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
29150 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
29151
29152 /*-------------------------------------------------------------------------
29153 Send Get STA Request to HAL
29154 -------------------------------------------------------------------------*/
29155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29156 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029157
29158fail:
29159 // Release the message buffer so we don't leak
29160 wpalMemoryFree(pSendBuffer);
29161
29162failRequest:
29163 //WDA should have failure check to avoid the memory leak
29164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029165}
29166
29167
29168/**
29169 @brief Process GTK Offload Get Information Request function
29170
29171 @param pWDICtx: pointer to the WLAN DAL context
29172 pEventData: pointer to the event information structure
29173
29174 @see
29175 @return Result of the function call
29176*/
29177WDI_Status
29178WDI_ProcessGTKOffloadGetInfoReq
29179(
29180 WDI_ControlBlockType* pWDICtx,
29181 WDI_EventInfoType* pEventData
29182)
29183{
29184 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
29185 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
29186 wpt_uint8* pSendBuffer = NULL;
29187 wpt_uint16 usDataOffset = 0;
29188 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029189 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
29190 wpt_uint8 ucCurrentSessionId = 0;
29191 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029192
29193 /*-------------------------------------------------------------------------
29194 Sanity check
29195 -------------------------------------------------------------------------*/
29196 if (( NULL == pEventData ) ||
29197 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
29198 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
29199 {
29200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029202 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029203 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029204 }
29205
29206 /*-----------------------------------------------------------------------
29207 Get message buffer
29208 -----------------------------------------------------------------------*/
29209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029210 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029211 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029212 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029213 {
29214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029215 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029216 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
29217 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029218 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029219 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029220 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29221 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
29222 &pBSSSes);
29223 if ( NULL == pBSSSes )
29224 {
29225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029226 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029227 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029228 }
29229 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070029230
29231 //
29232 // Don't need to fill send buffer other than header
29233 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029234 wpalMemoryCopy( pSendBuffer+usDataOffset,
29235 &halGtkOffloadGetInfoReqParams,
29236 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029237
29238 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
29239 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
29240
29241 /*-------------------------------------------------------------------------
29242 Send Get STA Request to HAL
29243 -------------------------------------------------------------------------*/
29244 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29245 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029246fail:
29247 // Release the message buffer so we don't leak
29248 wpalMemoryFree(pSendBuffer);
29249
29250failRequest:
29251 //WDA should have failure check to avoid the memory leak
29252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029253}
29254
29255/**
29256 @brief Process host offload Rsp function (called when a
29257 response is being received over the bus from HAL)
29258
29259 @param pWDICtx: pointer to the WLAN DAL context
29260 pEventData: pointer to the event information structure
29261
29262 @see
29263 @return Result of the function call
29264*/
29265WDI_Status
29266WDI_ProcessGtkOffloadRsp
29267(
29268 WDI_ControlBlockType* pWDICtx,
29269 WDI_EventInfoType* pEventData
29270)
29271{
Jeff Johnson295189b2012-06-20 16:38:30 -070029272 eHalStatus halStatus;
29273 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029274 tHalGtkOffloadRspParams halGtkOffloadRspParams;
29275 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029276
29277 /*-------------------------------------------------------------------------
29278 Sanity check
29279 -------------------------------------------------------------------------*/
29280 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29281 ( NULL == pEventData->pEventData))
29282 {
29283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029285 WDI_ASSERT(0);
29286 return WDI_STATUS_E_FAILURE;
29287 }
29288
Wilson Yang00256342013-10-10 23:13:38 -070029289 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
29290
Jeff Johnson295189b2012-06-20 16:38:30 -070029291 /*-------------------------------------------------------------------------
29292 Extract response and send it to UMAC
29293 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029294 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29295 {
29296 wpalMemoryCopy( &halGtkOffloadRspParams,
29297 pEventData->pEventData,
29298 sizeof(halGtkOffloadRspParams));
29299
29300 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029301 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029302 wdiGtkOffloadRsparams.bssIdx =
29303 halGtkOffloadRspParams.bssIdx;
29304 }
29305 else
29306 {
29307 halStatus = *((eHalStatus*)pEventData->pEventData);
29308 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29309 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029310
29311 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029312 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029313
29314 return WDI_STATUS_SUCCESS;
29315}
29316
29317/**
29318 @brief Process GTK Offload Get Information Response function
29319
29320 @param pWDICtx: pointer to the WLAN DAL context
29321 pEventData: pointer to the event information structure
29322
29323 @see
29324 @return Result of the function call
29325*/
29326WDI_Status
29327WDI_ProcessGTKOffloadGetInfoRsp
29328(
29329 WDI_ControlBlockType* pWDICtx,
29330 WDI_EventInfoType* pEventData
29331)
29332{
Jeff Johnson295189b2012-06-20 16:38:30 -070029333 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029334 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029335 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29336 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029337 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029338
Jeff Johnson295189b2012-06-20 16:38:30 -070029339
29340 /*-------------------------------------------------------------------------
29341 Sanity check
29342 -------------------------------------------------------------------------*/
29343 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29344 ( NULL == pEventData->pEventData ))
29345 {
29346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029347 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029348 WDI_ASSERT(0);
29349 return WDI_STATUS_E_FAILURE;
29350 }
29351
Wilson Yang00256342013-10-10 23:13:38 -070029352 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29353
29354 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029355 Extract response and send it to UMAC
29356 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029357 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29358 {
29359 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29360 pEventData->pEventData,
29361 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029362
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029363 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029364 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029365 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29366 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29367 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29368 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29369 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29370 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29371 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29372 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029373
29374 wpalMutexAcquire(&pWDICtx->wptMutex);
29375 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29376 &pBSSSes);
29377
29378 if ( NULL == pBSSSes )
29379 {
29380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29381 "Association sequence for this BSS does not exist or "
29382 "association no longer in progress - mysterious HAL response");
29383 wpalMutexRelease(&pWDICtx->wptMutex);
29384 return WDI_STATUS_E_NOT_ALLOWED;
29385 }
29386
29387 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29388 sizeof (wpt_macAddr));
29389 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029390 }
29391 else
29392 {
29393 halStatus = *((eHalStatus*)pEventData->pEventData);
29394 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29395 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029396 /*Notify UMAC*/
29397 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29398 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029399 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029400
29401 return WDI_STATUS_SUCCESS;
29402}
29403#endif // WLAN_FEATURE_GTK_OFFLOAD
29404
29405#ifdef WLAN_WAKEUP_EVENTS
29406WDI_Status
29407WDI_ProcessWakeReasonInd
29408(
29409 WDI_ControlBlockType* pWDICtx,
29410 WDI_EventInfoType* pEventData
29411)
29412{
29413 WDI_LowLevelIndType *pWdiInd;
29414 tpWakeReasonParams pWakeReasonParams;
29415 wpt_uint32 allocSize = 0;
29416
29417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029418 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029419
29420 /*-------------------------------------------------------------------------
29421 Sanity check
29422 -------------------------------------------------------------------------*/
29423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29424 ( NULL == pEventData->pEventData ))
29425 {
29426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029428 WDI_ASSERT( 0 );
29429 return WDI_STATUS_E_FAILURE;
29430 }
29431
29432 /*-------------------------------------------------------------------------
29433 Extract indication and send it to UMAC
29434 -------------------------------------------------------------------------*/
29435 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29436
29437 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29438
29439 //Allocate memory for WDI_WakeReasonIndType structure
29440 pWdiInd = wpalMemoryAllocate(allocSize) ;
29441
29442 if(NULL == pWdiInd)
29443 {
29444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029445 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029446 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029447 WDI_ASSERT(0);
29448 return WDI_STATUS_E_FAILURE;
29449 }
29450
29451 wpalMemoryZero(pWdiInd, allocSize);
29452
29453 /* Fill in the indication parameters*/
29454 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29455 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29456 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29457 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29458 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29459 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29460 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29461 &(pWakeReasonParams->aDataStart[0]),
29462 pWakeReasonParams->ulStoredDataLen);
29463
ltimariub77f24b2013-01-24 18:54:33 -080029464
29465 if ( pWDICtx->wdiLowLevelIndCB )
29466 {
29467 /*Notify UMAC*/
29468 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29469 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029470
29471 //Free memory allocated for WDI_WakeReasonIndType structure
29472 wpalMemoryFree(pWdiInd);
29473
29474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029475 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029476
29477 return WDI_STATUS_SUCCESS;
29478}
29479#endif // WLAN_WAKEUP_EVENTS
29480
29481void WDI_GetWcnssCompiledApiVersion
29482(
29483 WDI_WlanVersionType *pWcnssApiVersion
29484)
29485{
29486 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29487 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29488 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29489 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29490}
29491
29492/**
29493 @brief Process Set TM Level Rsp function (called when a
29494 response is being received over the bus from HAL)
29495
29496 @param pWDICtx: pointer to the WLAN DAL context
29497 pEventData: pointer to the event information structure
29498
29499 @see
29500 @return Result of the function call
29501*/
29502WDI_Status
29503WDI_ProcessSetTmLevelRsp
29504(
29505 WDI_ControlBlockType* pWDICtx,
29506 WDI_EventInfoType* pEventData
29507)
29508{
29509 WDI_Status wdiStatus;
29510 eHalStatus halStatus;
29511 WDI_SetTmLevelCb wdiSetTmLevelCb;
29512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29513
29514 /*-------------------------------------------------------------------------
29515 Sanity check
29516 -------------------------------------------------------------------------*/
29517 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29518 ( NULL == pEventData->pEventData ))
29519 {
29520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029522 WDI_ASSERT(0);
29523 return WDI_STATUS_E_FAILURE;
29524 }
29525
29526 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29527
29528 /*-------------------------------------------------------------------------
29529 Extract response and send it to UMAC
29530 -------------------------------------------------------------------------*/
29531 halStatus = *((eHalStatus*)pEventData->pEventData);
29532 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29533
29534 /*Notify UMAC*/
29535 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29536
29537 return WDI_STATUS_SUCCESS;
29538}/*WDI_ProcessSetTmLevelRsp*/
29539
29540/**
29541 @brief Process Set Thermal Mitigation level Changed request
29542
29543 @param pWDICtx: pointer to the WLAN DAL context
29544 pEventData: pointer to the event information structure
29545
29546 @see
29547 @return Result of the function call
29548*/
29549WDI_Status
29550WDI_ProcessSetTmLevelReq
29551(
29552 WDI_ControlBlockType* pWDICtx,
29553 WDI_EventInfoType* pEventData
29554)
29555{
29556 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29557 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29558 wpt_uint8* pSendBuffer = NULL;
29559 wpt_uint16 usDataOffset = 0;
29560 wpt_uint16 usSendSize = 0;
29561 tSetThermalMitgationType halTmMsg;
29562
29563 /*-------------------------------------------------------------------------
29564 Sanity check
29565 -------------------------------------------------------------------------*/
29566 if (( NULL == pEventData ) ||
29567 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29568 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29569 {
29570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029572 WDI_ASSERT(0);
29573 return WDI_STATUS_E_FAILURE;
29574 }
29575
29576 /*-----------------------------------------------------------------------
29577 Get message buffer
29578 -----------------------------------------------------------------------*/
29579 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29580 sizeof(halTmMsg),
29581 &pSendBuffer, &usDataOffset, &usSendSize))||
29582 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29583 {
29584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029585 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029586 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29587 WDI_ASSERT(0);
29588 return WDI_STATUS_E_FAILURE;
29589 }
29590
29591 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29592 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29593
29594 wpalMemoryCopy( pSendBuffer+usDataOffset,
29595 &halTmMsg,
29596 sizeof(halTmMsg));
29597
29598 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29599 pWDICtx->pfncRspCB = NULL;
29600 /*-------------------------------------------------------------------------
29601 Send Get STA Request to HAL
29602 -------------------------------------------------------------------------*/
29603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29604 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29605}
29606
29607/* Fill the value from the global features enabled array to the global capabilities
29608 * bitmap struct
29609 */
29610static void
29611FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29612{
29613 wpt_int8 i;
29614 for (i=0; i<len; i++)
29615 {
29616 setFeatCaps(fCaps, enabledFeat[i]);
29617 }
29618}
29619
29620/**
29621 @brief WDI_featureCapsExchangeReq
29622 Post feature capability bitmap exchange event.
29623 Host will send its own capability to FW in this req and
29624 expect FW to send its capability back as a bitmap in Response
29625
29626 @param
29627
29628 wdiFeatureCapsExchangeCb: callback called on getting the response.
29629 It is kept to mantain similarity between WDI reqs and if needed, can
29630 be used in future. Currently, It is set to NULL
29631
29632 pUserData: user data will be passed back with the
29633 callback
29634
29635 @see
29636 @return Result of the function call
29637*/
29638WDI_Status
29639WDI_featureCapsExchangeReq
29640(
29641 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29642 void* pUserData
29643)
29644{
29645 WDI_EventInfoType wdiEventData;
29646 wpt_int32 fCapsStructSize;
29647
29648 /*------------------------------------------------------------------------
29649 Sanity Check
29650 ------------------------------------------------------------------------*/
29651 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29652 {
29653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29654 "WDI API call before module is initialized - Fail request");
29655
29656 return WDI_STATUS_E_NOT_ALLOWED;
29657 }
29658
29659 /* Allocate memory separately for global variable carrying FW caps */
29660 fCapsStructSize = sizeof(tWlanFeatCaps);
29661 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29662 if ( NULL == gpHostWlanFeatCaps )
29663 {
29664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029665 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029666 WDI_ASSERT(0);
29667 return WDI_STATUS_MEM_FAILURE;
29668 }
29669
29670 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29671
29672 /*------------------------------------------------------------------------
29673 Fill in Event data and post to the Main FSM
29674 ------------------------------------------------------------------------*/
29675 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29676 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029678 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029679 gpHostWlanFeatCaps->featCaps[0],
29680 gpHostWlanFeatCaps->featCaps[1],
29681 gpHostWlanFeatCaps->featCaps[2],
29682 gpHostWlanFeatCaps->featCaps[3]
29683 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029685 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029686 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29687 wdiEventData.pEventData = gpHostWlanFeatCaps;
29688 wdiEventData.uEventDataSize = fCapsStructSize;
29689 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29690 wdiEventData.pUserData = pUserData;
29691
29692 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29693}
29694
29695/**
Yathish9f22e662012-12-10 14:21:35 -080029696 @brief Disable Active mode offload in Host
29697
29698 @param void
29699 @see
29700 @return void
29701*/
29702void
29703WDI_disableCapablityFeature(wpt_uint8 feature_index)
29704{
29705 supportEnabledFeatures[feature_index] = 0;
29706 return;
29707}
29708
29709/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029710 @brief Process Host-FW Capability Exchange Request function
29711
29712 @param pWDICtx: pointer to the WLAN DAL context
29713 pEventData: pointer to the event information structure
29714
29715 @see
29716 @return Result of the function call
29717*/
29718WDI_Status
29719WDI_ProcessFeatureCapsExchangeReq
29720(
29721 WDI_ControlBlockType* pWDICtx,
29722 WDI_EventInfoType* pEventData
29723)
29724{
29725 wpt_uint8* pSendBuffer = NULL;
29726 wpt_uint16 usDataOffset = 0;
29727 wpt_uint16 usSendSize = 0;
29728 wpt_uint16 usLen = 0;
29729
29730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29731
29732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029733 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029734
29735 /*-------------------------------------------------------------------------
29736 Sanity check
29737 -------------------------------------------------------------------------*/
29738 /* Call back function is NULL since not required for cap exchange req */
29739 if (( NULL == pEventData ) ||
29740 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29741 {
29742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029744 WDI_ASSERT(0);
29745 return WDI_STATUS_E_FAILURE;
29746 }
29747
29748 /*-----------------------------------------------------------------------
29749 Get message buffer
29750 -----------------------------------------------------------------------*/
29751 usLen = sizeof(tWlanFeatCaps);
29752
29753 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29754 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29755 usLen,
29756 &pSendBuffer, &usDataOffset, &usSendSize))||
29757 ( usSendSize < (usDataOffset + usLen )))
29758 {
29759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029760 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029761 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29762 WDI_ASSERT(0);
29763 return WDI_STATUS_E_FAILURE;
29764 }
29765
29766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029767 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029768 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29769 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29770 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29771 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29772 );
29773
29774 /* Copy host caps after the offset in the send buffer */
29775 wpalMemoryCopy( pSendBuffer+usDataOffset,
29776 (tWlanFeatCaps *)pEventData->pEventData,
29777 usLen);
29778
29779 /*-------------------------------------------------------------------------
29780 Send Start Request to HAL
29781 -------------------------------------------------------------------------*/
29782 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29783 (WDI_StartRspCb)pEventData->pCBfnc,
29784 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29785
29786}/*WDI_ProcessFeatureCapsExchangeReq*/
29787
29788/**
29789 @brief Process Host-FW Capability Exchange Response function
29790
29791 @param pWDICtx: pointer to the WLAN DAL context
29792 pEventData: pointer to the event information structure
29793
29794 @see
29795 @return Result of the function call
29796*/
29797WDI_Status
29798WDI_ProcessFeatureCapsExchangeRsp
29799(
29800 WDI_ControlBlockType* pWDICtx,
29801 WDI_EventInfoType* pEventData
29802)
29803{
29804 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29805 wpt_int32 fCapsStructSize;
29806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29807
29808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029809 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029810
29811 /*-------------------------------------------------------------------------
29812 Sanity check
29813 -------------------------------------------------------------------------*/
29814 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29815 ( NULL == pEventData->pEventData ))
29816 {
29817 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029819 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029820 WDI_ASSERT(0);
29821 return WDI_STATUS_E_FAILURE;
29822 }
29823
29824 /* Allocate memory separately for global variable carrying FW caps */
29825 fCapsStructSize = sizeof(tWlanFeatCaps);
29826 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29827 if ( NULL == gpFwWlanFeatCaps )
29828 {
29829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029830 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029831 WDI_ASSERT(0);
29832 return WDI_STATUS_MEM_FAILURE;
29833 }
29834
29835 /*-------------------------------------------------------------------------
29836 Unpack HAL Response Message - the header was already extracted by the
29837 main Response Handling procedure
29838 -------------------------------------------------------------------------*/
29839 /*-------------------------------------------------------------------------
29840 Extract response and send it to UMAC
29841 -------------------------------------------------------------------------*/
29842
29843 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29844 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029846 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029847 gpFwWlanFeatCaps->featCaps[0],
29848 gpFwWlanFeatCaps->featCaps[1],
29849 gpFwWlanFeatCaps->featCaps[2],
29850 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029851 );
Mukul Sharmaf1bd9322015-10-20 16:03:42 +053029852
Ratheesh S P36dbc932015-08-07 14:28:57 +053029853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029854 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029855 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29856
29857 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29858 if (wdiFeatureCapsExchangeCb != NULL)
29859 wdiFeatureCapsExchangeCb(NULL, NULL);
29860
29861 return WDI_STATUS_SUCCESS;
29862}
29863
Mohit Khanna4a70d262012-09-11 16:30:12 -070029864#ifdef WLAN_FEATURE_11AC
29865WDI_Status
29866WDI_ProcessUpdateVHTOpModeRsp
29867(
29868 WDI_ControlBlockType* pWDICtx,
29869 WDI_EventInfoType* pEventData
29870)
29871{
29872 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29873 WDI_Status wdiStatus;
29874 eHalStatus halStatus;
29875
29876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29877
29878 /*-------------------------------------------------------------------------
29879 Sanity check
29880 -------------------------------------------------------------------------*/
29881 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29882 ( NULL == pEventData->pEventData))
29883 {
29884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029885 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029886 WDI_ASSERT(0);
29887 return WDI_STATUS_E_FAILURE;
29888 }
29889 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29890
29891 /*-------------------------------------------------------------------------
29892 Extract response and send it to UMAC
29893 -------------------------------------------------------------------------*/
29894 halStatus = *((eHalStatus*)pEventData->pEventData);
29895 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29896
29897 /*Notify UMAC*/
29898 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29899
29900 return WDI_STATUS_SUCCESS;
29901}
29902#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029903/**
29904 @brief WDI_getHostWlanFeatCaps
29905 WDI API that returns whether the feature passed to it as enum value in
29906 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29907 variable storing host capability bitmap to find this. This can be used by
29908 other moduels to decide certain things like call different APIs based on
29909 whether a particular feature is supported.
29910
29911 @param
29912
29913 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29914
29915 @see
29916 @return
29917 0 - if the feature is NOT supported in host
29918 any non-zero value - if the feature is SUPPORTED in host.
29919*/
29920wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29921{
29922 wpt_uint8 featSupported = 0;
29923 if (gpHostWlanFeatCaps != NULL)
29924 {
29925 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29926 }
29927 else
29928 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029930 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029931 }
29932 return featSupported;
29933}
29934
29935/**
29936 @brief WDI_getFwWlanFeatCaps
29937 WDI API that returns whether the feature passed to it as enum value in
29938 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29939 variable storing host capability bitmap to find this. This can be used by
29940 other moduels to decide certain things like call different APIs based on
29941 whether a particular feature is supported.
29942
29943 @param
29944
29945 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29946 in wlan_hal_msg.h.
29947
29948 @see
29949 @return
29950 0 - if the feature is NOT supported in FW
29951 any non-zero value - if the feature is SUPPORTED in FW.
29952*/
29953wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29954{
29955 wpt_uint8 featSupported = 0;
29956 if (gpFwWlanFeatCaps != NULL)
29957 {
29958 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29959 }
29960 else
29961 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029963 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029964 }
29965 return featSupported;
29966}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029967
Katya Nigamf0511f62015-05-05 16:40:57 +053029968wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29969{
29970 /* 5gHz Channel */
29971 if( channel >= 34 && channel <= 165 )
29972 {
29973 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29974 {
29975 if ( channel== 36 || channel == 52 || channel == 100 ||
29976 channel == 116 || channel == 149 )
29977 {
29978 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29979 }
29980 else if ( channel == 40 || channel == 56 || channel == 104 ||
29981 channel == 120 || channel == 153 )
29982 {
29983 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29984 }
29985 else if ( channel == 44 || channel == 60 || channel == 108 ||
29986 channel == 124 || channel == 157 )
29987 {
29988 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29989 }
29990 else if ( channel == 48 || channel == 64 || channel == 112 ||
29991 channel == 128 || channel == 144 || channel == 161 )
29992 {
29993 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29994 }
29995 else if ( channel == 165 )
29996 {
29997 return PHY_SINGLE_CHANNEL_CENTERED;
29998 }
29999 }
30000
30001 else
30002 {
30003 if ( channel== 40 || channel == 48 || channel == 56 ||
30004 channel == 64 || channel == 104 || channel == 112 ||
30005 channel == 120 || channel == 128 || channel == 136 ||
30006 channel == 144 || channel == 153 || channel == 161 )
30007 {
30008 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30009 }
30010 else if ( channel== 36 || channel == 44 || channel == 52 ||
30011 channel == 60 || channel == 100 || channel == 108 ||
30012 channel == 116 || channel == 124 || channel == 132 ||
30013 channel == 140 || channel == 149 || channel == 157 )
30014 {
30015 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30016 }
30017 else if ( channel == 165 )
30018 {
30019 return PHY_SINGLE_CHANNEL_CENTERED;
30020 }
30021 }
30022 }
30023
30024 /* 2.4Ghz Channel */
30025 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
30026 {
30027 if (channel >= 1 && channel <= 7)
30028 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30029 else if (channel >= 8 && channel <= 13)
30030 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30031 else if (channel ==14)
30032 return PHY_SINGLE_CHANNEL_CENTERED;
30033 }
30034 return PHY_SINGLE_CHANNEL_CENTERED;
30035}
30036
Mohit Khanna4a70d262012-09-11 16:30:12 -070030037#ifdef WLAN_FEATURE_11AC
30038WDI_Status
30039WDI_ProcessUpdateVHTOpModeReq
30040(
30041 WDI_ControlBlockType* pWDICtx,
30042 WDI_EventInfoType* pEventData
30043)
30044{
30045 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
30046 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
30047 wpt_uint8* pSendBuffer = NULL;
30048 wpt_uint16 usDataOffset = 0;
30049 wpt_uint16 usSendSize = 0;
30050
30051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30052
30053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030054 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030055
30056 /*-------------------------------------------------------------------------
30057 Sanity check
30058 -------------------------------------------------------------------------*/
30059 if (( NULL == pEventData ) ||
30060 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
30061 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
30062 {
30063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030064 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030065 WDI_ASSERT(0);
30066 return WDI_STATUS_E_FAILURE;
30067 }
30068
30069 /*-----------------------------------------------------------------------
30070 Get message buffer
30071 -----------------------------------------------------------------------*/
30072 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
30073 sizeof(WDI_UpdateVHTOpMode),
30074 &pSendBuffer, &usDataOffset, &usSendSize))||
30075 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
30076 {
30077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30078 "Unable to get send buffer in update vht opMode req");
30079 WDI_ASSERT(0);
30080 return WDI_STATUS_E_FAILURE;
30081 }
30082
30083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030084 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030085
30086 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
30087 sizeof(WDI_UpdateVHTOpMode));
30088
30089 /*-------------------------------------------------------------------------
30090 Send Start Request to HAL
30091 -------------------------------------------------------------------------*/
30092 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30093 wdiVHTOpModeCb,
30094 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
30095
30096}
30097
30098WDI_Status
30099WDI_UpdateVHTOpModeReq
30100(
30101 WDI_UpdateVHTOpMode *pData,
30102 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
30103 void* pUserData
30104)
30105{
30106 WDI_EventInfoType wdiEventData;
30107
30108 /*------------------------------------------------------------------------
30109 Sanity Check
30110 ------------------------------------------------------------------------*/
30111 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30112 {
30113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30114 "WDI API call before module is initialized - Fail request");
30115
30116 return WDI_STATUS_E_NOT_ALLOWED;
30117 }
30118
30119 /*------------------------------------------------------------------------
30120 Fill in Event data and post to the Main FSM
30121 ------------------------------------------------------------------------*/
30122 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
30123 wdiEventData.pEventData = pData;
30124 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
30125 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
30126 wdiEventData.pUserData = pUserData;
30127
30128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030129 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030130
30131 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30132
30133}
30134#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030135
30136/**
30137 @brief WDI_TransportChannelDebug -
30138 Display DXE Channel debugging information
30139 User may request to display DXE channel snapshot
30140 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030141
Jeff Johnsonb88db982012-12-10 13:34:59 -080030142 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053030143 @param debugFlags : Enable stall detect features
30144 defined by WPAL_DeviceDebugFlags
30145 These features may effect
30146 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030147 @see
30148 @return none
30149*/
30150void WDI_TransportChannelDebug
30151(
30152 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053030153 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030154)
30155{
Mihir Shete40a55652014-03-02 14:14:47 +053030156 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030157 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070030158}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030159/**
30160 @brief WDI_SsrTimerCB
30161 Callback function for SSR timer, if this is called then the graceful
30162 shutdown for Riva did not happen.
30163
30164 @param pUserData : user data to timer
30165
30166 @see
30167 @return none
30168*/
30169void
30170WDI_SsrTimerCB
30171(
30172 void *pUserData
30173)
30174{
30175 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
30176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30177
30178 if (NULL == pWDICtx )
30179 {
30180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030181 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030182 WDI_ASSERT(0);
30183 return;
30184 }
30185 wpalRivaSubystemRestart();
30186
30187 return;
30188
30189}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070030190
30191/**
30192 @brief WDI_SetEnableSSR -
30193 This API is called to enable/disable SSR on WDI timeout.
30194
30195 @param enableSSR : enable/disable SSR
30196
30197 @see
30198 @return none
30199*/
30200void WDI_SetEnableSSR(wpt_boolean enableSSR)
30201{
30202 gWDICb.bEnableSSR = enableSSR;
30203}
Leo Chang9056f462013-08-01 19:21:11 -070030204
30205
30206#ifdef FEATURE_WLAN_LPHB
30207/**
Leo Changd9df8aa2013-09-26 13:32:26 -070030208 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070030209 This function will be invoked when FW detects low power
30210 heart beat failure
30211
30212 @param pWDICtx : wdi context
30213 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070030214 @see
30215 @return Result of the function call
30216*/
30217WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070030218WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070030219(
30220 WDI_ControlBlockType* pWDICtx,
30221 WDI_EventInfoType* pEventData
30222)
30223{
30224 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070030225 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070030226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30227
30228 /*-------------------------------------------------------------------------
30229 Sanity check
30230 -------------------------------------------------------------------------*/
30231 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30232 (NULL == pEventData->pEventData))
30233 {
30234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30235 "%s: Invalid parameters", __func__);
30236 WDI_ASSERT(0);
30237 return WDI_STATUS_E_FAILURE;
30238 }
30239
30240 /*-------------------------------------------------------------------------
30241 Extract indication and send it to UMAC
30242 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070030243 wpalMemoryCopy(&lphbIndicationParam,
30244 pEventData->pEventData,
30245 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070030246
Leo Changd9df8aa2013-09-26 13:32:26 -070030247 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070030248 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030249 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030250 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030251 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030252 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070030253 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070030254 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070030255 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070030256 /*Notify UMAC*/
30257 if (pWDICtx->wdiLowLevelIndCB)
30258 {
30259 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30260 }
30261
30262 return WDI_STATUS_SUCCESS;
30263}
30264
30265/**
30266 @brief WDI_ProcessLphbCfgRsp -
30267 LPHB configuration response from FW
30268
30269 @param pWDICtx : wdi context
30270 pEventData : indication data
30271
30272 @see
30273 @return Result of the function call
30274*/
30275WDI_Status WDI_ProcessLphbCfgRsp
30276(
30277 WDI_ControlBlockType* pWDICtx,
30278 WDI_EventInfoType* pEventData
30279)
30280{
30281 WDI_Status wdiStatus;
30282 eHalStatus halStatus;
30283 WDI_LphbCfgCb wdiLphbCfgCb;
30284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30285
30286 /*-------------------------------------------------------------------------
30287 Sanity check
30288 -------------------------------------------------------------------------*/
30289 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30290 (NULL == pEventData->pEventData))
30291 {
30292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30293 "%s: Invalid parameters", __func__);
30294 WDI_ASSERT(0);
30295 return WDI_STATUS_E_FAILURE;
30296 }
30297
30298 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
30299
30300 /*-------------------------------------------------------------------------
30301 Extract response and send it to UMAC
30302 -------------------------------------------------------------------------*/
30303 halStatus = *((eHalStatus*)pEventData->pEventData);
30304 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30305
30306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30307 "LPHB Cfg Rsp Return status %d", wdiStatus);
30308 /*Notify UMAC*/
30309 if (NULL != wdiLphbCfgCb)
30310 {
30311 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30312 }
30313
30314 return WDI_STATUS_SUCCESS;
30315}
30316
30317/**
30318 @brief WDI_ProcessLPHBConfReq -
30319 LPHB configuration request to FW
30320
30321 @param pWDICtx : wdi context
30322 pEventData : indication data
30323
30324 @see
30325 @return none
30326*/
30327WDI_Status WDI_ProcessLPHBConfReq
30328(
30329 WDI_ControlBlockType* pWDICtx,
30330 WDI_EventInfoType* pEventData
30331)
30332{
30333 WDI_LPHBReq *pLphbReqParams;
30334 WDI_Status wdiStatus;
30335 wpt_uint8* pSendBuffer = NULL;
30336 wpt_uint16 usDataOffset = 0;
30337 wpt_uint16 usSendSize = 0;
30338 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30340
30341 /*-------------------------------------------------------------------------
30342 Sanity check
30343 -------------------------------------------------------------------------*/
30344 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30345 {
30346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30347 "%s: Invalid parameters in Suspend ind",__func__);
30348 WDI_ASSERT(0);
30349 return WDI_STATUS_E_FAILURE;
30350 }
30351
30352 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30353
30354 /*-----------------------------------------------------------------------
30355 Get message buffer
30356 -----------------------------------------------------------------------*/
30357 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30358 WDI_LPHB_CFG_REQ,
30359 sizeof(tHalLowPowerHeartBeatReqMsg),
30360 &pSendBuffer, &usDataOffset, &usSendSize))||
30361 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30362 {
30363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30364 "Unable to get send buffer in LPHB Ind ");
30365 WDI_ASSERT(0);
30366 return WDI_STATUS_E_FAILURE;
30367 }
30368
30369 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30370 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30371
30372 halLphbReqRarams->lowPowerHeartBeatCmdType =
30373 (tANI_U16)(++pLphbReqParams->cmd);
30374 switch ((tANI_U16)pLphbReqParams->cmd)
30375 {
30376 case WDI_LPHB_SET_EN_PARAMS_INDID:
30377 halLphbReqRarams->sessionIdx =
30378 pLphbReqParams->params.lphbEnableReq.session;
30379 halLphbReqRarams->options.control.heartBeatEnable =
30380 pLphbReqParams->params.lphbEnableReq.enable;
30381 halLphbReqRarams->options.control.heartBeatType =
30382 pLphbReqParams->params.lphbEnableReq.item;
30383 break;
30384
30385 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30386 halLphbReqRarams->sessionIdx =
30387 pLphbReqParams->params.lphbTcpParamReq.session;
30388 halLphbReqRarams->options.tcpParams.timeOutSec =
30389 pLphbReqParams->params.lphbTcpParamReq.timeout;
30390 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30391 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30392 sizeof(v_U32_t));
30393 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30394 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30395 sizeof(v_U32_t));
30396
30397 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30398 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30399 WDI_MAC_ADDR_LEN);
30400
30401 halLphbReqRarams->options.tcpParams.hostPort =
30402 pLphbReqParams->params.lphbTcpParamReq.src_port;
30403 halLphbReqRarams->options.tcpParams.destPort =
30404 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030405 halLphbReqRarams->options.tcpParams.timePeriodSec =
30406 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30407 halLphbReqRarams->options.tcpParams.tcpSn =
30408 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030409 break;
30410
30411 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30412 halLphbReqRarams->sessionIdx =
30413 pLphbReqParams->params.lphbTcpFilterReq.session;
30414 halLphbReqRarams->options.tcpUdpFilter.offset =
30415 pLphbReqParams->params.lphbTcpFilterReq.offset;
30416 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30417 pLphbReqParams->params.lphbTcpFilterReq.length;
30418 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30419 pLphbReqParams->params.lphbTcpFilterReq.filter,
30420 WDI_LPHB_FILTER_LEN);
30421 break;
30422
30423 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30424 halLphbReqRarams->sessionIdx =
30425 pLphbReqParams->params.lphbUdpParamReq.session;
30426 halLphbReqRarams->options.udpParams.timeOutSec =
30427 pLphbReqParams->params.lphbUdpParamReq.timeout;
30428 halLphbReqRarams->options.udpParams.timePeriodSec =
30429 pLphbReqParams->params.lphbUdpParamReq.interval;
30430 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30431 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30432 sizeof(v_U32_t));
30433 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30434 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30435 sizeof(v_U32_t));
30436
30437 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30438 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30439 WDI_MAC_ADDR_LEN);
30440
30441 halLphbReqRarams->options.udpParams.hostPort =
30442 pLphbReqParams->params.lphbUdpParamReq.src_port;
30443 halLphbReqRarams->options.udpParams.destPort =
30444 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30445 break;
30446
30447 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30448 halLphbReqRarams->sessionIdx =
30449 pLphbReqParams->params.lphbUdpFilterReq.session;
30450 halLphbReqRarams->options.tcpUdpFilter.offset =
30451 pLphbReqParams->params.lphbUdpFilterReq.offset;
30452 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30453 pLphbReqParams->params.lphbUdpFilterReq.length;
30454 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30455 pLphbReqParams->params.lphbUdpFilterReq.filter,
30456 WDI_LPHB_FILTER_LEN);
30457 break;
30458
30459 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30460 /* NA */
30461 break;
30462
30463 default:
30464 break;
30465 }
30466
30467 /*-------------------------------------------------------------------------
30468 Send Suspend Request to HAL
30469 -------------------------------------------------------------------------*/
30470 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30471 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30472
30473 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30474 usSendSize, pWDICtx->pfncRspCB,
30475 pWDICtx->pReqStatusUserData,
30476 WDI_LPHB_CFG_RESP);
30477
30478 return wdiStatus;
30479}
30480
30481/**
30482 @brief WDI_LPHBConfReq -
30483 LPHB configuration request API
30484
30485 @param lphbconfParam : configuration parameter
30486 usrData : client context
30487 lphbCfgCb : callback function pointer
30488
30489 @see
30490 @return Success or fail status code
30491*/
30492WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30493 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30494{
30495 WDI_EventInfoType wdiEventData;
30496
30497 /*------------------------------------------------------------------------
30498 Sanity Check
30499 ------------------------------------------------------------------------*/
30500 if (eWLAN_PAL_FALSE == gWDIInitialized)
30501 {
30502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30503 "WDI API call before module is initialized - Fail request");
30504
30505 return WDI_STATUS_E_NOT_ALLOWED;
30506 }
30507
30508 /*------------------------------------------------------------------------
30509 Fill in Event data and post to the Main FSM
30510 ------------------------------------------------------------------------*/
30511 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30512 wdiEventData.pEventData = lphbconfParam;
30513 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30514 wdiEventData.pCBfnc = lphbCfgCb;
30515 wdiEventData.pUserData = usrData;
30516
30517 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30518}
30519#endif /* FEATURE_WLAN_LPHB */
30520
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030521/**
30522 @brief WDI_ProcessIbssPeerInactivityInd
30523 Process peer inactivity indication coming from HAL
30524
30525 @param pWDICtx: pointer to the WLAN DAL context
30526 pEventData: pointer to the event information structure
30527 @see
30528 @return Result of the function call
30529*/
30530WDI_Status
30531WDI_ProcessIbssPeerInactivityInd
30532(
30533 WDI_ControlBlockType* pWDICtx,
30534 WDI_EventInfoType* pEventData
30535)
30536{
30537 WDI_LowLevelIndType wdiInd;
30538 tIbssPeerInactivityIndMsg halIbssIndMsg;
30539
30540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30541
30542 /*-------------------------------------------------------------------------
30543 Sanity check
30544 -------------------------------------------------------------------------*/
30545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30546 ( NULL == pEventData->pEventData ))
30547 {
30548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30549 "%s: Invalid parameters", __func__);
30550 WDI_ASSERT( 0 );
30551 return WDI_STATUS_E_FAILURE;
30552 }
30553
30554 /*-------------------------------------------------------------------------
30555 Extract indication and send it to UMAC
30556 -------------------------------------------------------------------------*/
30557 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30558 pEventData->pEventData,
30559 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30560
30561 /*Fill in the indication parameters*/
30562 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30563
30564 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30565 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30566
30567 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30568 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30569
30570 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30571 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30572 sizeof(tSirMacAddr));
30573
30574 /*Notify UMAC*/
30575 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30576
30577 return WDI_STATUS_SUCCESS;
30578
30579} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030580
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030581/**
30582*@brief WDI_RateUpdateInd will be called when the upper MAC
30583 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030584
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030585
30586 @param wdiRateUpdateIndParams:
30587
30588
30589 @see
30590 @return Result of the function call
30591*/
30592WDI_Status
30593WDI_RateUpdateInd
30594(
30595 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30596)
30597{
30598 WDI_EventInfoType wdiEventData;
30599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30600
30601 /*------------------------------------------------------------------------
30602 Sanity Check
30603 ------------------------------------------------------------------------*/
30604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30605 {
30606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30607 "WDI API call before module is initialized - Fail request");
30608
30609 return WDI_STATUS_E_NOT_ALLOWED;
30610 }
30611
30612 /*------------------------------------------------------------------------
30613 Fill in Event data and post to the Main FSM
30614 ------------------------------------------------------------------------*/
30615 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30616 wdiEventData.pEventData = wdiRateUpdateIndParams;
30617 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30618 wdiEventData.pCBfnc = NULL;
30619 wdiEventData.pUserData = NULL;
30620
30621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30622
30623}/* WDI_RateUpdateInd */
30624
30625/**
30626 @brief Process Rate Update Indication and post it to HAL
30627
30628 @param pWDICtx: pointer to the WLAN DAL context
30629 pEventData: pointer to the event information structure
30630
30631 @see
30632 @return Result of the function call
30633*/
30634WDI_Status
30635WDI_ProcessRateUpdateInd
30636(
30637 WDI_ControlBlockType* pWDICtx,
30638 WDI_EventInfoType* pEventData
30639)
30640{
30641 wpt_uint8* pSendBuffer = NULL;
30642 wpt_uint16 usDataOffset = 0;
30643 wpt_uint16 usSendSize = 0;
30644 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30645 tHalRateUpdateInd *pRateUpdateInd;
30646 WDI_Status wdiStatus;
30647
30648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30649
30650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30651 "%s", __func__);
30652
30653 /*-------------------------------------------------------------------------
30654 Sanity check
30655 -------------------------------------------------------------------------*/
30656 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30657 {
30658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30659 "%s: Invalid parameters", __func__);
30660 WDI_ASSERT(0);
30661 return WDI_STATUS_E_FAILURE;
30662 }
30663 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30664 /*-----------------------------------------------------------------------
30665 Get message buffer
30666 -----------------------------------------------------------------------*/
30667
30668 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30669 WDI_RATE_UPDATE_IND,
30670 sizeof(tHalRateUpdateParams),
30671 &pSendBuffer, &usDataOffset, &usSendSize))||
30672 ( usSendSize < (usDataOffset +
30673 sizeof(tHalRateUpdateParams) )))
30674 {
30675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30676 "Unable to get send buffer in Rate Update Indication %p ",
30677 pEventData);
30678 WDI_ASSERT(0);
30679 return WDI_STATUS_E_FAILURE;
30680 }
30681
30682 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30683
30684 /* Copy the bssid */
30685 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30686 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30687
30688 /* Copy the tx flags */
30689 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30690 pwdiRateUpdateInd->ucastDataRateTxFlag;
30691 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30692 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30693 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30694 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30695 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30696 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30697
30698 /* Copy the tx rates */
30699 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30700 pwdiRateUpdateInd->ucastDataRate;
30701 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30702 pwdiRateUpdateInd->reliableMcastDataRate;
30703 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30704 pwdiRateUpdateInd->mcastDataRate24GHz;
30705 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30706 pwdiRateUpdateInd->mcastDataRate5GHz;
30707
30708 /*-------------------------------------------------------------------------
30709 Send Rate Update Indication to HAL
30710 -------------------------------------------------------------------------*/
30711 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30712 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30713
30714 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30715
30716 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30717 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30718
30719} /* WDI_ProcessRateUpdateInd */
30720
30721#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030722/**
30723 @brief Process stop batch indication from WDA
30724
30725 @param pWDICtx: pointer to the WLAN DAL context
30726 pEventData: pointer to the event information structure
30727
30728 @see
30729 @return Result of the function call
30730*/
30731WDI_Status
30732WDI_ProcessStopBatchScanInd
30733(
30734 WDI_ControlBlockType* pWDICtx,
30735 WDI_EventInfoType* pEventData
30736)
30737{
30738 wpt_uint8* pSendBuffer = NULL;
30739 wpt_uint16 usDataOffset = 0;
30740 wpt_uint16 usSendSize = 0;
30741 WDI_Status wdiStatus;
30742 tHalBatchScanStopIndParam *pHalInd = NULL;
30743 WDI_StopBatchScanIndType *pWdiInd = NULL;
30744
30745
30746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30747
30748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30749 "%s", __func__);
30750
30751 /*-------------------------------------------------------------------------
30752 Sanity check
30753 -------------------------------------------------------------------------*/
30754
30755 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30756 {
30757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30758 "%s: Invalid parameters", __func__);
30759 WDI_ASSERT(0);
30760 return WDI_STATUS_E_FAILURE;
30761 }
30762 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30763 /*-----------------------------------------------------------------------
30764 Get message buffer
30765 -----------------------------------------------------------------------*/
30766
30767 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30768 WDI_STOP_BATCH_SCAN_IND,
30769 sizeof(tHalBatchScanStopIndParam),
30770 &pSendBuffer, &usDataOffset, &usSendSize))||
30771 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30772 {
30773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30774 "Unable to get send buffer in stop batch scan ind %p ",
30775 pEventData);
30776 WDI_ASSERT(0);
30777 return WDI_STATUS_E_FAILURE;
30778 }
30779
30780 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30781 pHalInd->param = pWdiInd->param;
30782
30783 pWDICtx->pReqStatusUserData = NULL;
30784 pWDICtx->pfncRspCB = NULL;
30785 /*-------------------------------------------------------------------------
30786 Send Stop batch scan indication to HAL
30787 -------------------------------------------------------------------------*/
30788 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30789 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30790}
30791
30792/**
30793 @brief This API is called to trigger batch scan results from FW
30794
30795 @param pWDICtx: pointer to the WLAN DAL context
30796 pEventData: pointer to the event information structure
30797
30798 @see
30799 @return Result of the function call
30800*/
30801WDI_Status
30802WDI_ProcessTriggerBatchScanResultInd
30803(
30804 WDI_ControlBlockType* pWDICtx,
30805 WDI_EventInfoType* pEventData
30806)
30807{
30808 WDI_Status wdiStatus;
30809 wpt_uint8* pSendBuffer = NULL;
30810 wpt_uint16 usDataOffset = 0;
30811 wpt_uint16 usSendSize = 0;
30812 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30813 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30814
30815
30816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30817
30818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30819 "%s", __func__);
30820
30821 /*-------------------------------------------------------------------------
30822 Sanity check
30823 -------------------------------------------------------------------------*/
30824
30825 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30826 {
30827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30828 "%s: Invalid parameters", __func__);
30829 WDI_ASSERT(0);
30830 return WDI_STATUS_E_FAILURE;
30831 }
30832 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30833 /*-----------------------------------------------------------------------
30834 Get message buffer
30835 -----------------------------------------------------------------------*/
30836
30837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30838 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30839 sizeof(tHalBatchScanTriggerResultParam),
30840 &pSendBuffer, &usDataOffset, &usSendSize))||
30841 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30842 {
30843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30844 "Unable to get send buffer in stop batch scan ind %p ",
30845 pEventData);
30846 WDI_ASSERT(0);
30847 return WDI_STATUS_E_FAILURE;
30848 }
30849
30850 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30851 pHalInd->param = pWdiInd->param;
30852
30853 pWDICtx->pReqStatusUserData = NULL;
30854 pWDICtx->pfncRspCB = NULL;
30855 /*-------------------------------------------------------------------------
30856 Send trigger batch scan result indication to HAL
30857 -------------------------------------------------------------------------*/
30858 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30859 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30860}
30861
30862
30863/**
30864 @brief Process set batch scan response from FW
30865
30866 @param pWDICtx: pointer to the WLAN DAL context
30867 pEventData: pointer to the event information structure
30868
30869 @see
30870 @return Result of the function call
30871*/
30872WDI_Status
30873WDI_ProcessSetBatchScanRsp
30874(
30875 WDI_ControlBlockType* pWDICtx,
30876 WDI_EventInfoType* pEventData
30877)
30878{
30879 WDI_SetBatchScanCb wdiSetBatchScanCb;
30880 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30881
30882 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30884
30885 /*sanity check*/
30886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30887 ( NULL == pEventData->pEventData))
30888 {
30889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30890 "%s: Invalid parameters", __func__);
30891 WDI_ASSERT(0);
30892 return WDI_STATUS_E_FAILURE;
30893 }
30894
30895 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30896 if ( NULL == wdiSetBatchScanCb)
30897 {
30898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30899 "%s: call back function is NULL", __func__);
30900 WDI_ASSERT(0);
30901 return WDI_STATUS_E_FAILURE;
30902 }
30903
30904 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30905
30906 if (NULL == pSetBatchScanRsp)
30907 {
30908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030909 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030910 pWDICtx, pEventData, pEventData->pEventData);
30911 WDI_ASSERT(0);
30912 return WDI_STATUS_E_FAILURE;
30913 }
30914
Sunil Duttbd736ed2014-05-26 21:19:41 +053030915 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030916 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30917
30918 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30919
Sunil Duttbd736ed2014-05-26 21:19:41 +053030920 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030921 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30922
30923 wpalMemoryFree(pSetBatchScanRsp);
30924
30925 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030926}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030927
30928/**
30929 @brief Process batch scan result indication from FW
30930
30931 @param pWDICtx: pointer to the WLAN DAL context
30932 pEventData: pointer to the event information structure
30933
30934 @see
30935 @return Result of the function call
30936*/
30937WDI_Status
30938WDI_ProcessBatchScanResultInd
30939(
30940 WDI_ControlBlockType* pWDICtx,
30941 WDI_EventInfoType* pEventData
30942)
30943{
30944 void *pBatchScanResultInd;
30945 WDI_LowLevelIndType wdiInd;
30946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30947
Sunil Duttbd736ed2014-05-26 21:19:41 +053030948 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30950 ( NULL == pEventData->pEventData))
30951 {
30952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30953 "%s: Invalid parameters", __func__);
30954 WDI_ASSERT(0);
30955 return WDI_STATUS_E_FAILURE;
30956 }
30957
Sunil Duttbd736ed2014-05-26 21:19:41 +053030958 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030959 pBatchScanResultInd = (void *)pEventData->pEventData;
30960
Sunil Duttbd736ed2014-05-26 21:19:41 +053030961 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030962 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30963
30964 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30965
Sunil Duttbd736ed2014-05-26 21:19:41 +053030966 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030967 if (pWDICtx->wdiLowLevelIndCB)
30968 {
30969 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30970 }
30971 else
30972 {
30973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30974 "%s: WDILowLevelIndCb is null", __func__);
30975 WDI_ASSERT(0);
30976 return WDI_STATUS_E_FAILURE;
30977 }
30978
30979 return WDI_STATUS_SUCCESS;
30980} /*End of WDI_ProcessBatchScanResultInd*/
30981
Sunil Duttbd736ed2014-05-26 21:19:41 +053030982#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30983/**
30984 @brief Process Link Layer Statistics Result indication from FW
30985
30986 @param pWDICtx: pointer to the WLAN DAL context
30987 pEventData: pointer to the event information structure
30988
30989 @see
30990 @return Result of the function call
30991*/
30992WDI_Status
30993WDI_ProcessLinkLayerStatsResultsInd
30994(
30995 WDI_ControlBlockType* pWDICtx,
30996 WDI_EventInfoType* pEventData
30997)
30998{
30999 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053031000 WDI_LLstatsResultsType *halLLStatsResults;
31001 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031002 WDI_LowLevelIndType wdiInd;
31003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31004
31005 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31006 "%s: Event RESULTS Indication", __func__);
31007
31008 /* sanity check */
31009 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31010 ( NULL == pEventData->pEventData))
31011 {
31012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31013 "%s: Invalid parameters", __func__);
31014 WDI_ASSERT(0);
31015 return WDI_STATUS_E_FAILURE;
31016 }
31017
31018 /* extract response and send it to UMAC */
31019 pLinkLayerStatsInd = (void *)pEventData->pEventData;
31020
31021 /* Fill in the indication parameters */
31022 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
31023
Dino Mycled3d50022014-07-07 12:58:25 +053031024 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
31025 = pLinkLayerStatsInd;
31026
31027 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
31028
31029
31030 /* Need to fill in the MAC address */
31031 if ( WDI_STATUS_SUCCESS !=
31032 WDI_STATableGetStaMacAddr(pWDICtx,
31033 halLLStatsResults->iface_id,
31034 &macAddr))
31035 {
31036 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31037 " ifaceId: %u does not exist in the WDI Station Table",
31038 halLLStatsResults->iface_id);
31039
31040 return WDI_STATUS_E_FAILURE;
31041 }
31042 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
31043 macAddr, WDI_MAC_ADDR_LEN);
31044
31045 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31046 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
31047 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053031048
31049 /* Notify UMAC */
31050 if (pWDICtx->wdiLowLevelIndCB)
31051 {
31052 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31053 }
31054 else
31055 {
31056 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31057 "%s: WDILowLevelIndCb is null", __func__);
31058 WDI_ASSERT(0);
31059 return WDI_STATUS_E_FAILURE;
31060 }
31061
31062 return WDI_STATUS_SUCCESS;
31063} /* End of WDI_ProcessLinkLayerStatsResultsInd */
31064#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
31065
Rajeev79dbe4c2013-10-05 11:03:42 +053031066/**
31067 @brief WDI_ProcessSetBatchScanReq -
31068 Set batch scan request to FW
31069
31070 @param pWDICtx : wdi context
31071 pEventData : indication data
31072
31073 @see
31074 @return none
31075*/
31076WDI_Status WDI_ProcessSetBatchScanReq
31077(
31078 WDI_ControlBlockType* pWDICtx,
31079 WDI_EventInfoType* pEventData
31080)
31081{
31082 WDI_SetBatchScanReqType *pWdiReq;
31083 WDI_Status wdiStatus;
31084 wpt_uint8* pSendBuffer = NULL;
31085 wpt_uint16 usDataOffset = 0;
31086 wpt_uint16 usSendSize = 0;
31087 tHalBatchScanSetParams *pHalReq;
31088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31089
31090 /*sanity check*/
31091 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
31092 {
31093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31094 "%s: Invalid parameters in set batch scan request", __func__);
31095 WDI_ASSERT(0);
31096 return WDI_STATUS_E_FAILURE;
31097 }
31098
31099
31100 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
31101
31102
31103 /*get message buffer*/
31104 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
31105 WDI_SET_BATCH_SCAN_REQ,
31106 sizeof(tHalBatchScanSetParams),
31107 &pSendBuffer, &usDataOffset, &usSendSize))||
31108 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
31109 {
31110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31111 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
31112 WDI_ASSERT(0);
31113 return WDI_STATUS_E_FAILURE;
31114 }
31115
31116 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
31117
31118 pHalReq->rtt = pWdiReq->rtt;
31119 pHalReq->rfBand = pWdiReq->rfBand;
31120 pHalReq->bestNetworks = pWdiReq->bestNetwork;
31121 pHalReq->scanInterval = pWdiReq->scanFrequency;
31122 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
31123
31124 /*send set batch scan request to fw*/
31125 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31126 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31127
31128 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31129 usSendSize, pWDICtx->pfncRspCB,
31130 pWDICtx->pReqStatusUserData,
31131 WDI_SET_BATCH_SCAN_RESP);
31132
31133 return wdiStatus;
31134}
31135
31136/**
31137 @brief WDI_SetBatchScanReq
31138 This API is called to set batch scan request in FW
31139
31140 @param pBatchScanReqParam : pointer to set batch scan re param
31141 usrData : Client context
31142 setBatchScanRspCb : set batch scan resp callback
31143 @see
31144 @return SUCCESS or FAIL
31145*/
31146WDI_Status WDI_SetBatchScanReq
31147(
31148 void *pBatchScanReqParam,
31149 void *usrData,
31150 WDI_SetBatchScanCb setBatchScanRspCb
31151)
31152{
31153 WDI_EventInfoType wdiEventData;
31154
31155 /*sanity check*/
31156 if (eWLAN_PAL_FALSE == gWDIInitialized)
31157 {
31158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31159 "WDI API call before module is initialized - Fail request");
31160
31161 return WDI_STATUS_E_NOT_ALLOWED;
31162 }
31163
31164 /* fill in event data and post to the main FSM */
31165 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
31166 wdiEventData.pEventData = pBatchScanReqParam;
31167 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
31168 wdiEventData.pCBfnc = setBatchScanRspCb;
31169 wdiEventData.pUserData = usrData;
31170
31171 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31172}
31173
31174/**
31175 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
31176
31177 @param None
31178
31179 @see
31180
31181 @return Status of the request
31182*/
31183WDI_Status
31184WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
31185{
31186 WDI_EventInfoType wdiEventData;
31187
31188 /*-------------------------------------------------------------------------
31189 Sanity Check
31190 ------------------------------------------------------------------------*/
31191 if (eWLAN_PAL_FALSE == gWDIInitialized)
31192 {
31193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31194 "WDI API call before module is initialized - Fail request!");
31195
31196 return WDI_STATUS_E_NOT_ALLOWED;
31197 }
31198
31199 /*-------------------------------------------------------------------------
31200 Fill in Event data and post to the Main FSM
31201 ------------------------------------------------------------------------*/
31202 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
31203 wdiEventData.pEventData = pWdiReq;
31204 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
31205 wdiEventData.pCBfnc = NULL;
31206 wdiEventData.pUserData = NULL;
31207
31208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31209}
31210
31211/**
31212 @brief WDI_TriggerBatchScanResultInd
31213 This API is called to pull batch scan result from FW
31214
31215 @param pWdiReq : pointer to get batch scan ind param
31216 @see
31217 @return SUCCESS or FAIL
31218*/
31219WDI_Status WDI_TriggerBatchScanResultInd
31220(
31221 WDI_TriggerBatchScanResultIndType *pWdiReq
31222)
31223{
31224 WDI_EventInfoType wdiEventData;
31225 /*-------------------------------------------------------------------------
31226 Sanity Check
31227 ------------------------------------------------------------------------*/
31228 if (eWLAN_PAL_FALSE == gWDIInitialized)
31229 {
31230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31231 "WDI API call before module is initialized - Fail request!");
31232
31233 return WDI_STATUS_E_NOT_ALLOWED;
31234 }
31235
31236 /*-------------------------------------------------------------------------
31237 Fill in Event data and post to the Main FSM
31238 ------------------------------------------------------------------------*/
31239 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
31240 wdiEventData.pEventData = pWdiReq;
31241 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
31242 wdiEventData.pCBfnc = NULL;
31243 wdiEventData.pUserData = NULL;
31244
31245 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31246}
Rajeev79dbe4c2013-10-05 11:03:42 +053031247#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080031248
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080031249/**
31250 @brief Process Update Channel Rsp function (called when a response is
31251 being received over the bus from HAL)
31252
31253 @param pWDICtx: pointer to the WLAN DAL context
31254 pEventData: pointer to the event information structure
31255
31256 @see
31257 @return Result of the function call
31258*/
31259WDI_Status
31260WDI_ProcessUpdateChanRsp
31261(
31262 WDI_ControlBlockType* pWDICtx,
31263 WDI_EventInfoType* pEventData
31264)
31265{
31266 WDI_Status wdiStatus;
31267 eHalStatus halStatus;
31268 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
31269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31270
31271 /*-------------------------------------------------------------------------
31272 Sanity check
31273 -------------------------------------------------------------------------*/
31274 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31275 ( NULL == pEventData->pEventData))
31276 {
31277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31278 "%s: Invalid parameters", __func__);
31279 WDI_ASSERT(0);
31280 return WDI_STATUS_E_FAILURE;
31281 }
31282
31283 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
31284
31285 /*-------------------------------------------------------------------------
31286 Extract response and send it to UMAC
31287 -------------------------------------------------------------------------*/
31288 halStatus = *((eHalStatus*)pEventData->pEventData);
31289 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31290
31291 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
31292
31293 return WDI_STATUS_SUCCESS;
31294}/*WDI_ProcessUpdateChanRsp*/
31295
Leo Chang0b0e45a2013-12-15 15:18:55 -080031296#ifdef FEATURE_WLAN_CH_AVOID
31297/**
31298 @brief v -WDI_ProcessChAvoidInd
31299
31300
31301 @param pWDICtx : wdi context
31302 pEventData : indication data
31303 @see
31304 @return Result of the function call
31305*/
31306WDI_Status
31307WDI_ProcessChAvoidInd
31308(
31309 WDI_ControlBlockType* pWDICtx,
31310 WDI_EventInfoType* pEventData
31311)
31312{
31313 WDI_LowLevelIndType wdiInd;
31314 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31315 wpt_uint16 rangeLoop;
31316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31317
31318 /*-------------------------------------------------------------------------
31319 Sanity check
31320 -------------------------------------------------------------------------*/
31321 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31322 (NULL == pEventData->pEventData))
31323 {
31324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31325 "%s: Invalid parameters", __func__);
31326 WDI_ASSERT(0);
31327 return WDI_STATUS_E_FAILURE;
31328 }
31329
31330 /*-------------------------------------------------------------------------
31331 Extract indication and send it to UMAC
31332 -------------------------------------------------------------------------*/
31333 wpalMemoryCopy(&chAvoidIndicationParam,
31334 pEventData->pEventData,
31335 sizeof(tHalAvoidFreqRangeIndParams));
31336
Abhishek Singhe34eb552015-06-18 10:12:15 +053031337 /* Avoid Over flow */
31338 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31339 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31340
Leo Chang0b0e45a2013-12-15 15:18:55 -080031341 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31342 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31343 chAvoidIndicationParam.avoidCnt;
31344 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31345 (void *)chAvoidIndicationParam.avoidRange,
31346 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31347 sizeof(WDI_ChAvoidFreqType));
31348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31349 "%s: band count %d", __func__,
31350 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31351 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31352 {
31353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31354 "%s: srart freq %d, end freq %d", __func__,
31355 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31356 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31357 }
31358
31359 /*Notify UMAC*/
31360 if (pWDICtx->wdiLowLevelIndCB)
31361 {
31362 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31363 }
31364
31365 return WDI_STATUS_SUCCESS;
31366}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031367
Leo Chang0b0e45a2013-12-15 15:18:55 -080031368#endif /* FEATURE_WLAN_CH_AVOID */
31369
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031370/**
31371 @brief Process OBSS Start scan result indication
31372
31373 @param pWDICtx: pointer to the WLAN DAL context
31374 pEventData: pointer to the event information structure
31375
31376 @see
31377 @return Result of the function call
31378*/
31379WDI_Status
31380WDI_ProcessHT40OBSSScanInd
31381(
31382 WDI_ControlBlockType* pWDICtx,
31383 WDI_EventInfoType* pEventData
31384)
31385{
31386 wpt_uint8* pSendBuffer = NULL;
31387 wpt_uint16 usDataOffset = 0;
31388 wpt_uint16 usSendSize = 0;
31389 wpt_uint16 usLen = 0;
31390 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31391 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31392 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31393 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31394
31395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31396
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031398 "%s", __func__);
31399
31400 /*-------------------------------------------------------------------------
31401 Sanity check
31402 -------------------------------------------------------------------------*/
31403 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31404 {
31405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31406 "%s: Invalid parameters", __func__);
31407 WDI_ASSERT(0);
31408 return WDI_STATUS_E_FAILURE;
31409 }
31410 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31411
31412 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31413 /*-----------------------------------------------------------------------
31414 Get message buffer
31415 -----------------------------------------------------------------------*/
31416
31417 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31418 WDI_START_HT40_OBSS_SCAN_IND,
31419 sizeof(tHT40ObssScanIndType),
31420 &pSendBuffer, &usDataOffset, &usSendSize))||
31421 ( usSendSize < (usDataOffset + usLen )))
31422 {
31423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31424 "Unable to get send buffer in HT40 OBSS Start req %p ",
31425 pEventData);
31426 WDI_ASSERT(0);
31427 return WDI_STATUS_E_FAILURE;
31428 }
31429 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31430 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31431 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31432 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31433 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31434 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31435 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31436 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31437 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31438 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31439 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31440 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31441 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31442 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31443 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31444 pHT40ObssScanInd->OBSSScanActivityThreshold =
31445 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31446 pHT40ObssScanInd->selfStaIdx =
31447 pwdiHT40OBSSScanInd->selfStaIdx;
31448 pHT40ObssScanInd->bssIdx =
31449 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031450 pHT40ObssScanInd->currentOperatingClass =
31451 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031452 pHT40ObssScanInd->fortyMHZIntolerent =
31453 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31454 pHT40ObssScanInd->channelCount =
31455 pwdiHT40OBSSScanInd->channelCount;
31456
31457 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31458 WDI_ROAM_SCAN_MAX_CHANNELS);
31459 pHT40ObssScanInd->ieFieldLen =
31460 pwdiHT40OBSSScanInd->ieFieldLen;
31461
31462 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31463 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31464 pWDICtx->pReqStatusUserData = NULL;
31465 pWDICtx->pfncRspCB = NULL;
31466
31467 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31468 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31469
31470 /*-------------------------------------------------------------------------
31471 Send OBSS Start Indication to HAL
31472 -------------------------------------------------------------------------*/
31473 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31474 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31475
31476} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31477
31478
31479/**
31480 @brief wdi_HT40OBSSScanInd
31481 This API is called to start OBSS scan
31482
31483 @param pWdiReq : pointer to get ind param
31484 @see
31485 @return SUCCESS or FAIL
31486*/
31487WDI_Status WDI_HT40OBSSScanInd
31488(
31489 WDI_HT40ObssScanParamsType *pWdiReq
31490)
31491{
31492 WDI_EventInfoType wdiEventData;
31493
31494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31495 "%s", __func__);
31496 /*-------------------------------------------------------------------------
31497 Sanity Check
31498 ------------------------------------------------------------------------*/
31499 if (eWLAN_PAL_FALSE == gWDIInitialized)
31500 {
31501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31502 "WDI API call before module is initialized - Fail request!");
31503
31504 return WDI_STATUS_E_NOT_ALLOWED;
31505 }
31506
31507 /*-------------------------------------------------------------------------
31508 Fill in Event data and post to the Main FSM
31509 ------------------------------------------------------------------------*/
31510 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31511 wdiEventData.pEventData = pWdiReq;
31512 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31513 wdiEventData.pCBfnc = NULL;
31514 wdiEventData.pUserData = NULL;
31515
31516
31517 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31518}
31519
31520/**
31521 @brief Process OBSS Stop scan result
31522
31523 @param pWDICtx: pointer to the WLAN DAL context
31524 pEventData: pointer to the event information structure
31525
31526 @see
31527 @return Result of the function call
31528*/
31529WDI_Status
31530WDI_ProcessHT40OBSSStopScanInd
31531(
31532 WDI_ControlBlockType* pWDICtx,
31533 WDI_EventInfoType* pEventData
31534)
31535{
31536 wpt_uint8* pSendBuffer = NULL;
31537 wpt_uint16 usDataOffset = 0;
31538 wpt_uint16 usSendSize = 0;
31539 wpt_uint16 usLen = 0;
31540 wpt_uint8 *wdiBssIdx = 0;
31541 tANI_U8 *bssIdx = 0;
31542 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31543
31544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31545
31546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31547 "%s", __func__);
31548
31549 /*-------------------------------------------------------------------------
31550 Sanity check
31551 -------------------------------------------------------------------------*/
31552 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31553 {
31554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31555 "%s: Invalid parameters", __func__);
31556 WDI_ASSERT(0);
31557 return WDI_STATUS_E_FAILURE;
31558 }
31559 bssIdx = (wpt_uint8*)pEventData->pEventData;
31560 /*-----------------------------------------------------------------------
31561 Get message buffer
31562 -----------------------------------------------------------------------*/
31563
31564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31565 WDI_STOP_HT40_OBSS_SCAN_IND,
31566 sizeof(tANI_U8),
31567 &pSendBuffer, &usDataOffset, &usSendSize))||
31568 ( usSendSize < (usDataOffset + usLen )))
31569 {
31570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31571 "Unable to get send buffer in HT40 OBSS Start req %p ",
31572 pEventData);
31573 WDI_ASSERT(0);
31574 return WDI_STATUS_E_FAILURE;
31575 }
31576
31577 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31578 bssIdx = wdiBssIdx;
31579
31580 pWDICtx->pReqStatusUserData = NULL;
31581 pWDICtx->pfncRspCB = NULL;
31582
31583 /*-------------------------------------------------------------------------
31584 Send DHCP Start Indication to HAL
31585 -------------------------------------------------------------------------*/
31586 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31587 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31588} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31589
31590/**
31591 @brief WDI_HT40OBSSStopScanInd
31592 This API is called to start OBSS scan
31593 @param pWdiReq : pointer to get ind param
31594 @see
31595 @return SUCCESS or FAIL
31596*/
31597WDI_Status WDI_HT40OBSSStopScanInd
31598(
31599 wpt_uint8 bssIdx
31600)
31601{
31602 WDI_EventInfoType wdiEventData;
31603
31604 /*-------------------------------------------------------------------------
31605 Sanity Check
31606 ------------------------------------------------------------------------*/
31607 if (eWLAN_PAL_FALSE == gWDIInitialized)
31608 {
31609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31610 "WDI API call before module is initialized - Fail request!");
31611
31612 return WDI_STATUS_E_NOT_ALLOWED;
31613 }
31614
31615 /*-------------------------------------------------------------------------
31616 Fill in Event data and post to the Main FSM
31617 ------------------------------------------------------------------------*/
31618 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31619 wdiEventData.pEventData = &bssIdx;
31620 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31621 wdiEventData.pCBfnc = NULL;
31622 wdiEventData.pUserData = NULL;
31623
31624 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31625}
31626
c_hpothu86041002014-04-14 19:06:51 +053031627WDI_Status
31628WDI_printRegInfo
31629(
31630 WDI_ControlBlockType* pWDICtx,
31631 WDI_EventInfoType* pEventData
31632)
31633{
31634 tHalRegDebugInfo *pRegTable;
31635 tHalRegDebugInfoParams *pRegParams;
31636 uint32 cnt=0;
31637
31638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31639 "%s: ", __func__);
31640 /*-------------------------------------------------------------------------
31641 Sanity check
31642 -------------------------------------------------------------------------*/
31643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31644 ( NULL == pEventData->pEventData))
31645 {
31646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31647 "%s: Invalid parameters", __func__);
31648 WDI_ASSERT(0);
31649 return WDI_STATUS_E_FAILURE;
31650 }
31651
31652 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31653
31654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31655 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31656 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31657
31658 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31659
31660 if (pRegParams->regCount <= 0)
31661 {
31662 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31663 "%s incorrect parameters passed", __func__);
31664 return WDI_STATUS_E_FAILURE;
31665 }
31666
31667 while(pRegParams->regCount--)
31668 {
31669 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31670 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31671 cnt++;
31672 }
31673
31674 return WDI_STATUS_SUCCESS;
31675}
c_hpothu92367912014-05-01 15:18:17 +053031676
31677/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031678 * FUNCTION: WDI_delBaInd
31679 * send the delBA to peer.
31680 */
31681
31682WDI_Status
31683WDI_delBaInd
31684(
31685 WDI_ControlBlockType* pWDICtx,
31686 WDI_EventInfoType* pEventData
31687
31688)
31689{
31690 tHalWlanDelBaIndMsg halDelBaInd;
31691 WDI_LowLevelIndType wdiInd;
31692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31693
31694 /*-------------------------------------------------------------------------
31695 Sanity check
31696 -------------------------------------------------------------------------*/
31697 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31698 ( NULL == pEventData->pEventData))
31699 {
31700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31701 "%s: Invalid parameters", __func__);
31702 WDI_ASSERT(0);
31703 return WDI_STATUS_E_FAILURE;
31704 }
31705
31706 /*-------------------------------------------------------------------------
31707 Extract indication and send it to UMAC
31708 -------------------------------------------------------------------------*/
31709
31710 /* Parameters need to be unpacked according to HAL struct*/
31711 wpalMemoryCopy( &halDelBaInd,
31712 pEventData->pEventData,
31713 sizeof(halDelBaInd));
31714
31715 /*Fill in the indication parameters*/
31716 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31717
31718 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31719 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31720 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31721
31722 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31723 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31724 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31725
31726 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31727 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31728 if ( pWDICtx->wdiLowLevelIndCB )
31729 {
31730 /*Notify UMAC*/
31731 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31732 }
31733
31734 return WDI_STATUS_SUCCESS;
31735
31736
31737}
31738
31739/*
c_hpothu92367912014-05-01 15:18:17 +053031740 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31741 * send the response to PE with beacon miss count
31742 * received from WDI.
31743 */
31744WDI_Status
31745WDI_ProcessGetBcnMissRateRsp
31746(
31747 WDI_ControlBlockType* pWDICtx,
31748 WDI_EventInfoType* pEventData
31749)
31750{
31751 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31752 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31753
31754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31755 "In %s",__func__);
31756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31757
31758 /*-------------------------------------------------------------------------
31759 Sanity check
31760 -------------------------------------------------------------------------*/
31761 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31762 ( NULL == pEventData->pEventData))
31763 {
31764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31765 "%s: Invalid parameters", __func__);
31766 WDI_ASSERT(0);
31767 return WDI_STATUS_E_FAILURE;
31768 }
31769
31770 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31771 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31772
31773 /*Notify UMAC*/
31774 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31775 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31776 return WDI_STATUS_SUCCESS;
31777}
31778
31779/*
31780 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31781 * Request to WDI to get missed beacon rate.
31782 */
31783WDI_Status
31784WDI_ProcessGetBcnMissRateReq
31785(
31786 WDI_ControlBlockType* pWDICtx,
31787 WDI_EventInfoType* pEventData
31788)
31789{
31790 wpt_uint8* pSendBuffer = NULL;
31791 wpt_uint16 usDataOffset = 0;
31792 wpt_uint16 usSendSize = 0;
31793 wpt_uint8 ucCurrentBSSSesIdx = 0;
31794 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031795 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31796 tHalBcnMissRateReqParams halBcnMissRateReq;
31797
31798/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31799
31800 /*-------------------------------------------------------------------------
31801 Sanity check
31802 -------------------------------------------------------------------------*/
31803 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31804 ( NULL == pEventData->pCBfnc ) )
31805 {
31806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31807 "%s: Invalid parameters", __func__);
31808 WDI_ASSERT(0);
31809 return WDI_STATUS_E_FAILURE;
31810 }
31811
31812 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31813
31814 wpalMutexAcquire(&pWDICtx->wptMutex);
31815
31816 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31817 pEventData->pEventData, &pBSSSes);
31818 if ( NULL == pBSSSes )
31819 {
31820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31821 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031822 MAC_ADDRESS_STR, __func__,
31823 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031824 wpalMutexRelease(&pWDICtx->wptMutex);
31825 return WDI_STATUS_E_NOT_ALLOWED;
31826 }
31827 wpalMutexRelease(&pWDICtx->wptMutex);
31828
31829 /*-----------------------------------------------------------------------
31830 Get message buffer
31831 -----------------------------------------------------------------------*/
31832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31833 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31834 sizeof(tHalBcnMissRateReqParams),
31835 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31836 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31837 {
31838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31839 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31840 pEventData);
31841 WDI_ASSERT(0);
31842 return WDI_STATUS_E_FAILURE;
31843 }
31844
31845 pWDICtx->wdiReqStatusCB = NULL;
31846 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31847
31848 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31849
31850 wpalMemoryCopy( pSendBuffer+usDataOffset,
31851 &halBcnMissRateReq,
31852 sizeof(tHalBcnMissRateReqParams));
31853 /*-------------------------------------------------------------------------
31854 Send Get STA Request to HAL
31855 -------------------------------------------------------------------------*/
31856 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31857 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31858}
31859
31860/**
31861 @brief WDI_GetBcnMissRate
31862
31863 @param pUserData: user data will be passed back with the
31864 callback
31865 WDI_GetBcnMissRateCb: callback for passing back the response
31866 of the get stats operation received from the device
31867 bssid: bssid, to send bssIdx to FW
31868
31869 @return SUCCESS or FAIL
31870*/
31871WDI_Status WDI_GetBcnMissRate( void *pUserData,
31872 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31873 tANI_U8 *bssid )
31874{
31875 WDI_EventInfoType wdiEventData;
31876
31877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31878
31879 /*------------------------------------------------------------------------
31880 Sanity Check
31881 ------------------------------------------------------------------------*/
31882 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31883 {
31884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31885 "WDI API call before module is initialized - Fail request");
31886
31887 return WDI_STATUS_E_NOT_ALLOWED;
31888 }
31889
31890 /*------------------------------------------------------------------------
31891 Fill in Event data and post to the Main FSM
31892 ------------------------------------------------------------------------*/
31893 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31894 wdiEventData.pEventData = bssid;
31895 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31896 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31897 wdiEventData.pUserData = pUserData;
31898
31899 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31900}
Abhishek Singh85b74712014-10-08 11:38:19 +053031901
31902/*
31903 * FUNCTION: WDI_ProcessGetFwStatsRsp
31904 * send the response with FW stats asked.
31905 */
31906WDI_Status
31907 WDI_ProcessGetFwStatsRsp
31908(
31909 WDI_ControlBlockType* pWDICtx,
31910 WDI_EventInfoType* pEventData
31911)
31912{
31913 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31914 tpHalfwStatsRspParams pHalFwstatsRsp;
31915 WDI_FWStatsResults fwStats;
31916
31917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31918
31919 /*-------------------------------------------------------------------------
31920 Sanity check
31921 -------------------------------------------------------------------------*/
31922 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31923 ( NULL == pEventData->pEventData))
31924 {
31925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31926 "%s: Invalid parameters", __func__);
31927 WDI_ASSERT(0);
31928 return WDI_STATUS_E_FAILURE;
31929 }
31930 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31931 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31932
31933 if(pHalFwstatsRsp->length)
31934 {
31935 switch( pHalFwstatsRsp->type )
31936 {
31937 case FW_UBSP_STATS:
31938 {
31939 ubspFwStats *ubspStatsfromFw;
31940
31941 fwStats.type = pHalFwstatsRsp->type;
31942 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31943 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31944 ubspStatsfromFw->ubsp_enter_cnt;
31945 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31946 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31947 }
31948 break;
31949 default:
31950 {
31951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31952 "%s: No handling for stats type %d", __func__,
31953 pHalFwstatsRsp->type);
31954 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31955 NULL, pWDICtx->pRspCBUserData);
31956 return WDI_STATUS_E_FAILURE;
31957 }
31958 }
31959 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31960 }
31961 else
31962 {
31963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31964 "%s: Length = 0 for type %d return failure ", __func__,
31965 pHalFwstatsRsp->type);
31966 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31967 NULL, pWDICtx->pRspCBUserData);
31968 return WDI_STATUS_E_FAILURE;
31969 }
31970 return WDI_STATUS_SUCCESS;
31971}
31972
31973/*
31974 * FUNCTION: WDI_ProcessGetFwStatsReq
31975 * Request to WDI to get FW Stats.
31976 */
31977WDI_Status
31978 WDI_ProcessGetFwStatsReq
31979(
31980 WDI_ControlBlockType* pWDICtx,
31981 WDI_EventInfoType* pEventData
31982)
31983{
31984 wpt_uint8* pSendBuffer = NULL;
31985 wpt_uint16 usDataOffset = 0;
31986 wpt_uint16 usSendSize = 0;
31987 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31988 tHalfwStatsReqParams halFwStatsReq;
31989
31990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31991
31992 /*-------------------------------------------------------------------------
31993 Sanity check
31994 -------------------------------------------------------------------------*/
31995 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31996 ( NULL == pEventData->pCBfnc ) )
31997 {
31998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31999 "%s: Invalid parameters", __func__);
32000 WDI_ASSERT(0);
32001 return WDI_STATUS_E_FAILURE;
32002 }
32003
32004 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
32005
32006 /*-----------------------------------------------------------------------
32007 Get message buffer
32008 -----------------------------------------------------------------------*/
32009 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32010 pWDICtx, WDI_GET_FW_STATS_REQ,
32011 sizeof(tHalfwStatsReqParams),
32012 &pSendBuffer, &usDataOffset, &usSendSize)) ||
32013 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
32014 {
32015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32016 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
32017 pEventData);
32018 WDI_ASSERT(0);
32019 return WDI_STATUS_E_FAILURE;
32020 }
32021
32022 pWDICtx->wdiReqStatusCB = NULL;
32023 pWDICtx->pReqStatusUserData = pEventData->pEventData;
32024 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
32025 wpalMemoryCopy( pSendBuffer+usDataOffset,
32026 &halFwStatsReq,
32027 sizeof(tHalfwStatsReqParams));
32028 /*-------------------------------------------------------------------------
32029 Send Get STA Request to HAL
32030 -------------------------------------------------------------------------*/
32031 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
32032 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
32033}
32034
Sunil Duttbd736ed2014-05-26 21:19:41 +053032035#ifdef WLAN_FEATURE_LINK_LAYER_STATS
32036
32037/**
32038 @brief WDI_LLStatsSetReq
32039 This API is called to set link layer stats request in FW
32040
32041 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
32042 wdiLLStatsSetRspCb : set link layer stats resp callback
32043 usrData : Client context
32044 @see
32045 @return SUCCESS or FAIL
32046*/
32047WDI_Status
32048WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
32049 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
32050 void* pUserData)
32051{
32052 WDI_EventInfoType wdiEventData;
32053
32054 /*------------------------------------------------------------------------
32055 Sanity Check
32056 ------------------------------------------------------------------------*/
32057 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32058 {
32059 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32060 "WDI API call before module is initialized - Fail request");
32061
32062 return WDI_STATUS_E_NOT_ALLOWED;
32063 }
32064
32065 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
32066 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
32067 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
32068 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
32069 wdiEventData.pUserData = pUserData;
32070
32071 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32072}
32073
32074/**
32075 @brief WDI_ProcessLLStatsSetReq -
32076 Set Link Layer Stats request to FW
32077
32078 @param pWDICtx : wdi context
32079 pEventData : indication data
32080
32081 @see
32082 @return none
32083*/
32084WDI_Status
32085WDI_ProcessLLStatsSetReq
32086(
32087 WDI_ControlBlockType* pWDICtx,
32088 WDI_EventInfoType* pEventData
32089)
32090{
32091 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
32092 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
32093 wpt_uint8* pSendBuffer = NULL;
32094 wpt_uint16 usSendSize = 0;
32095 wpt_uint16 usDataOffset = 0;
32096 tHalMacLlSetStatsReqParams halLLStatsSetParams;
32097
32098 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32099 ( NULL == pEventData->pCBfnc ))
32100 {
32101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32102 "%s: Invalid parameters", __func__);
32103 WDI_ASSERT(0);
32104 return WDI_STATUS_E_FAILURE;
32105 }
32106
32107 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
32108 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
32109
32110 /*-----------------------------------------------------------------------
32111 Get message buffer
32112 ! TO DO : proper conversion into the HAL Message Request Format
32113 -----------------------------------------------------------------------*/
32114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32115 pWDICtx,
32116 WDI_LL_STATS_SET_REQ,
32117 sizeof(tHalMacLlSetStatsReqParams),
32118 &pSendBuffer, &usDataOffset,
32119 &usSendSize))||
32120 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
32121 {
32122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32123 "Unable to get send buffer in %s %p %p %p", __func__,
32124 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
32125 WDI_ASSERT(0);
32126 return WDI_STATUS_E_FAILURE;
32127 }
32128
32129
Dino Mycled3d50022014-07-07 12:58:25 +053032130 /* Need to fill in the self STA Index */
32131 if ( WDI_STATUS_SUCCESS !=
32132 WDI_STATableFindStaidByAddr(pWDICtx,
32133 pwdiLLStatsSetReqParams->macAddr,
32134 &halLLStatsSetParams.sta_id))
32135 {
32136 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32137 MAC_ADDRESS_STR
32138 ": This station does not exist in the WDI Station Table",
32139 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
32140
32141 wpalMemoryFree(pSendBuffer);
32142 return WDI_STATUS_E_FAILURE;
32143 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032144
32145 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032146 halLLStatsSetParams.mpdu_size_threshold =
32147 pwdiLLStatsSetReqParams->mpduSizeThreshold;
32148 halLLStatsSetParams.aggressive_statistics_gathering =
32149 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
32150
32151 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32152 " halLLStatsSetParams.req_id = %u",
32153 halLLStatsSetParams.req_id);
32154 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32155 " halLLStatsSetParams.sta_id = %u",
32156 halLLStatsSetParams.sta_id);
32157 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32158 " halLLStatsSetParams.mpdu_size_threshold = %u",
32159 halLLStatsSetParams.mpdu_size_threshold);
32160 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32161 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
32162 halLLStatsSetParams.aggressive_statistics_gathering);
32163
32164 wpalMemoryCopy(pSendBuffer+usDataOffset,
32165 &halLLStatsSetParams,
32166 sizeof(halLLStatsSetParams));
32167
32168 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32169
32170 /*-------------------------------------------------------------------------
32171 Send Clear Link Layer Stats Request to HAL
32172 -------------------------------------------------------------------------*/
32173 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32174 wdiLLStatsSetCb, pEventData->pUserData,
32175 WDI_LL_STATS_SET_RSP);
32176}
32177
32178/**
32179 @brief WDI_LLStatsGetReq
32180 This API is called to get link layer stats request in FW
32181
32182 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
32183 wdiLLStatsGetRspCb : get link layer stats resp callback
32184 usrData : Client context
32185 @see
32186 @return SUCCESS or FAIL
32187*/
32188WDI_Status
32189WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
32190 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
32191 void* pUserData)
32192{
32193 WDI_EventInfoType wdiEventData;
32194
32195 /*------------------------------------------------------------------------
32196 Sanity Check
32197 ------------------------------------------------------------------------*/
32198 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32199 {
32200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32201 "WDI API call before module is initialized - Fail request");
32202
32203 return WDI_STATUS_E_NOT_ALLOWED;
32204 }
32205
32206 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
32207 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
32208 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
32209 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
32210 wdiEventData.pUserData = pUserData;
32211
32212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32213}
32214
32215/**
32216 @brief WDI_ProcessLLStatsGetReq -
32217 Get Link Layer Stats request to FW
32218
32219 @param pWDICtx : wdi context
32220 pEventData : indication data
32221
32222 @see
32223 @return none
32224*/
32225WDI_Status
32226WDI_ProcessLLStatsGetReq
32227(
32228 WDI_ControlBlockType* pWDICtx,
32229 WDI_EventInfoType* pEventData
32230)
32231{
32232 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
32233 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
32234 wpt_uint8* pSendBuffer = NULL;
32235 wpt_uint16 usSendSize = 0;
32236 wpt_uint16 usDataOffset = 0;
32237 tHalMacLlGetStatsReqParams halLLStatsGetParams;
32238
32239 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32240 ( NULL == pEventData->pCBfnc ))
32241 {
32242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32243 "%s: Invalid parameters", __func__);
32244 WDI_ASSERT(0);
32245 return WDI_STATUS_E_FAILURE;
32246 }
32247
32248 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
32249 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
32250
32251 /*-----------------------------------------------------------------------
32252 Get message buffer
32253 ! TO DO : proper conversion into the HAL Message Request Format
32254 -----------------------------------------------------------------------*/
32255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32256 pWDICtx,
32257 WDI_LL_STATS_GET_REQ,
32258 sizeof(tHalMacLlGetStatsReqParams),
32259 &pSendBuffer, &usDataOffset,
32260 &usSendSize))||
32261 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
32262 {
32263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32264 "Unable to get send buffer in %s %p %p %p", __func__,
32265 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
32266 WDI_ASSERT(0);
32267 return WDI_STATUS_E_FAILURE;
32268 }
Dino Mycled3d50022014-07-07 12:58:25 +053032269 /* Need to fill in the self STA Index */
32270 if ( WDI_STATUS_SUCCESS !=
32271 WDI_STATableFindStaidByAddr(pWDICtx,
32272 pwdiLLStatsGetReqParams->macAddr,
32273 &halLLStatsGetParams.sta_id))
32274 {
32275 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32276 MAC_ADDRESS_STR
32277 ": This station does not exist in the WDI Station Table",
32278 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
32279
32280 wpalMemoryFree(pSendBuffer);
32281 return WDI_STATUS_E_FAILURE;
32282 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032283
32284 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032285 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
32286
32287 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32288 " halLLStatsGetParams.req_id = %u",
32289 halLLStatsGetParams.req_id);
32290 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32291 " halLLStatsGetParams.staId = %u",
32292 halLLStatsGetParams.sta_id);
32293 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32294 " halLLStatsGetParams.Mask = %u",
32295 halLLStatsGetParams.param_id_mask);
32296
32297 wpalMemoryCopy(pSendBuffer+usDataOffset,
32298 &halLLStatsGetParams,
32299 sizeof(halLLStatsGetParams));
32300
32301 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32302
32303 /*-------------------------------------------------------------------------
32304 Send Clear Link Layer Stats Request to HAL
32305 -------------------------------------------------------------------------*/
32306 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32307 wdiLLStatsGetCb, pEventData->pUserData,
32308 WDI_LL_STATS_GET_RSP);
32309}
32310
32311/**
32312 @brief WDI_LLStatsClearReq
32313 This API is called to clear link layer stats request in FW
32314
32315 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32316 wdiLLStatsSetRspCb : clear link layer stats resp callback
32317 usrData : Client context
32318 @see
32319 @return SUCCESS or FAIL
32320*/
32321WDI_Status
32322WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32323 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32324 void* pUserData)
32325{
32326 WDI_EventInfoType wdiEventData;
32327
32328 /*------------------------------------------------------------------------
32329 Sanity Check
32330 ------------------------------------------------------------------------*/
32331 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32332 {
32333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32334 "WDI API call before module is initialized - Fail request");
32335
32336 return WDI_STATUS_E_NOT_ALLOWED;
32337 }
32338
32339 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32340 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32341 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32342 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32343 wdiEventData.pUserData = pUserData;
32344
32345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32346 "%s:%d Enter", __func__, __LINE__);
32347
32348 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32349}
32350
32351/**
32352 @brief WDI_ProcessLLStatsClearReq -
32353 Clear Link Layer Stats request to FW
32354
32355 @param pWDICtx : wdi context
32356 pEventData : indication data
32357
32358 @see
32359 @return none
32360*/
32361WDI_Status
32362WDI_ProcessLLStatsClearReq
32363(
32364 WDI_ControlBlockType* pWDICtx,
32365 WDI_EventInfoType* pEventData
32366)
32367{
32368 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32369 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32370 wpt_uint8* pSendBuffer = NULL;
32371 wpt_uint16 usSendSize = 0;
32372 wpt_uint16 usDataOffset = 0;
32373 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32374
32375 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32376 ( NULL == pEventData->pCBfnc ))
32377 {
32378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32379 "%s: Invalid parameters", __func__);
32380 WDI_ASSERT(0);
32381 return WDI_STATUS_E_FAILURE;
32382 }
32383
32384 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32385 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32386
32387 /*-----------------------------------------------------------------------
32388 Get message buffer
32389 ! TO DO : proper conversion into the HAL Message Request Format
32390 -----------------------------------------------------------------------*/
32391 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32392 pWDICtx,
32393 WDI_LL_STATS_CLEAR_REQ,
32394 sizeof(tHalMacLlClearStatsReqParams),
32395 &pSendBuffer, &usDataOffset,
32396 &usSendSize))||
32397 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32398 {
32399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32400 "Unable to get send buffer in %s %p %p %p", __func__,
32401 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32402 WDI_ASSERT(0);
32403 return WDI_STATUS_E_FAILURE;
32404 }
Dino Mycled3d50022014-07-07 12:58:25 +053032405 /* Need to fill in the self STA Index */
32406 if ( WDI_STATUS_SUCCESS !=
32407 WDI_STATableFindStaidByAddr(pWDICtx,
32408 pwdiLLStatsClearReqParams->macAddr,
32409 &halLLStatsClearParams.sta_id))
32410 {
32411 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32412 MAC_ADDRESS_STR
32413 ": This station does not exist in the WDI Station Table",
32414 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32415
32416 wpalMemoryFree(pSendBuffer);
32417 return WDI_STATUS_E_FAILURE;
32418 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032419
32420 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032421 halLLStatsClearParams.stats_clear_req_mask =
32422 pwdiLLStatsClearReqParams->statsClearReqMask;
32423 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32424
32425 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32426 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32427 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32428 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32429 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32430 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32431 halLLStatsClearParams.stats_clear_req_mask);
32432 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32433 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32434
32435 wpalMemoryCopy(pSendBuffer+usDataOffset,
32436 &halLLStatsClearParams,
32437 sizeof(halLLStatsClearParams));
32438
32439 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32440
32441 /*-------------------------------------------------------------------------
32442 Send Clear Link Layer Stats Request to HAL
32443 -------------------------------------------------------------------------*/
32444 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32445 wdiLLStatsClearCb, pEventData->pUserData,
32446 WDI_LL_STATS_CLEAR_RSP);
32447}
32448#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032449
Abhishek Singh85b74712014-10-08 11:38:19 +053032450WDI_Status WDI_FWStatsGetReq( void* pUserData,
32451 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32452 wpt_uint32 stats)
32453{
32454 WDI_EventInfoType wdiEventData;
32455
32456 /*------------------------------------------------------------------------
32457 Sanity Check
32458 ------------------------------------------------------------------------*/
32459 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32460 {
32461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32462 "WDI API call before module is initialized - Fail request");
32463 return WDI_STATUS_E_NOT_ALLOWED;
32464 }
32465 /*------------------------------------------------------------------------
32466 Fill in Event data and post to the Main FSM
32467 ------------------------------------------------------------------------*/
32468 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32469 wdiEventData.pEventData = (void *)&stats;
32470 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32471 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32472 wdiEventData.pUserData = pUserData;
32473
32474 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32475
32476}
32477
Katya Nigamf0511f62015-05-05 16:40:57 +053032478WDI_Status
32479WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032480 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032481 void* pUserData)
32482{
32483 WDI_EventInfoType wdiEventData;
32484
32485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32486 "%s", __func__);
32487
32488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32489 {
32490 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32491 "WDI API call before module is initialized - Fail request");
32492
32493 return WDI_STATUS_E_NOT_ALLOWED;
32494 }
32495
32496 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32497 wdiEventData.pEventData = pwdiMonStartReqParams;
32498 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032499 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032500 wdiEventData.pUserData = pUserData;
32501
32502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32503}
32504
32505WDI_Status
32506WDI_ProcessMonStartReq
32507(
32508 WDI_ControlBlockType* pWDICtx,
32509 WDI_EventInfoType* pEventData
32510)
32511{
32512 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032513 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032514 wpt_uint8* pSendBuffer = NULL;
32515 wpt_uint16 usSendSize = 0;
32516 wpt_uint16 usDataOffset = 0;
32517 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32518
32519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32520 "%s", __func__);
32521
32522 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32523 ( NULL == pEventData->pCBfnc ))
32524 {
32525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32526 "%s: Invalid parameters", __func__);
32527 WDI_ASSERT(0);
32528 return WDI_STATUS_E_FAILURE;
32529 }
32530
32531 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032532 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032533
32534 /*-----------------------------------------------------------------------
32535 Get message buffer
32536 ! TO DO : proper conversion into the HAL Message Request Format
32537 -----------------------------------------------------------------------*/
32538 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32539 pWDICtx,
32540 WDI_MON_START_REQ,
32541 sizeof(tHalEnableMonitorModeReqParams),
32542 &pSendBuffer, &usDataOffset,
32543 &usSendSize))||
32544 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32545 {
32546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32547 "Unable to get send buffer in %s %p %p %p", __func__,
32548 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32549 WDI_ASSERT(0);
32550 return WDI_STATUS_E_FAILURE;
32551 }
32552
32553 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32554 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32555 pwdiMonStartReqParams->ChannelBW);
32556 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32557 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32558 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32559 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32560 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32561 pwdiMonStartReqParams->mmFilters[0].macAddr,
32562 sizeof( wpt_macAddr ));
32563 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32564 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32565 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32566 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32567
32568 wpalMemoryCopy(pSendBuffer+usDataOffset,
32569 &halEnableMonitorModeParams,
32570 sizeof(halEnableMonitorModeParams));
32571
32572 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32573
32574 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32575 wdiMonStartCb, pEventData->pUserData,
32576 WDI_MON_START_RSP);
32577}
32578
32579WDI_Status
32580WDI_ProcessMonStartRsp
32581(
32582 WDI_ControlBlockType* pWDICtx,
32583 WDI_EventInfoType* pEventData
32584)
32585{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032586 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032587
32588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32589 "%s: Enter ", __func__);
32590 /*-------------------------------------------------------------------------
32591 Sanity check
32592 -------------------------------------------------------------------------*/
32593 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32594 ( NULL == pEventData->pEventData))
32595 {
32596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32597 "%s: Invalid parameters", __func__);
32598 WDI_ASSERT(0);
32599 return WDI_STATUS_E_FAILURE;
32600 }
32601
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032602 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032603
32604 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32605
32606 return WDI_STATUS_SUCCESS;
32607}
32608
32609WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032610WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032611 void* pUserData)
32612{
32613 WDI_EventInfoType wdiEventData;
32614
32615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32616 "%s", __func__);
32617
32618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32619 {
32620 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32621 "WDI API call before module is initialized - Fail request");
32622
32623 return WDI_STATUS_E_NOT_ALLOWED;
32624 }
32625
32626 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32627 wdiEventData.pEventData = NULL;
32628 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032629 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032630 wdiEventData.pUserData = pUserData;
32631
32632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32633}
32634
32635WDI_Status
32636WDI_ProcessMonStopReq
32637(
32638 WDI_ControlBlockType* pWDICtx,
32639 WDI_EventInfoType* pEventData
32640)
32641{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032642 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032643 wpt_uint8* pSendBuffer = NULL;
32644 wpt_uint16 usSendSize = 0;
32645 wpt_uint16 usDataOffset = 0;
32646 wpt_uint8 resetConfiguration;
32647
32648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32649 "%s", __func__);
32650
32651 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32652 {
32653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32654 "%s: Invalid parameters", __func__);
32655 WDI_ASSERT(0);
32656 return WDI_STATUS_E_FAILURE;
32657 }
32658
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032659 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032660
32661 /*-----------------------------------------------------------------------
32662 Get message buffer
32663 ! TO DO : proper conversion into the HAL Message Request Format
32664 -----------------------------------------------------------------------*/
32665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32666 pWDICtx,
32667 WDI_MON_STOP_REQ,
32668 sizeof(wpt_uint8),
32669 &pSendBuffer, &usDataOffset,
32670 &usSendSize))||
32671 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32672 {
32673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32674 "Unable to get send buffer in %s %p %p", __func__,
32675 pEventData, wdiMonStopCb);
32676 WDI_ASSERT(0);
32677 return WDI_STATUS_E_FAILURE;
32678 }
32679
32680 wpalMemoryCopy(pSendBuffer+usDataOffset,
32681 &resetConfiguration,
32682 sizeof(wpt_uint8));
32683
32684 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32685
32686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32687 wdiMonStopCb, pEventData->pUserData,
32688 WDI_MON_STOP_RSP);
32689}
32690
32691WDI_Status
32692WDI_ProcessMonStopRsp
32693(
32694 WDI_ControlBlockType* pWDICtx,
32695 WDI_EventInfoType* pEventData
32696)
32697{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032698 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032699
32700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32701 "%s: Enter ", __func__);
32702 /*-------------------------------------------------------------------------
32703 Sanity check
32704 -------------------------------------------------------------------------*/
32705 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32706 {
32707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32708 "%s: Invalid parameters", __func__);
32709 WDI_ASSERT(0);
32710 return WDI_STATUS_E_FAILURE;
32711 }
32712
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032713 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032714
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032715 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053032716
32717 return WDI_STATUS_SUCCESS;
32718}
32719
Dino Mycle41bdc942014-06-10 11:30:24 +053032720#ifdef WLAN_FEATURE_EXTSCAN
32721
32722/**
32723 @brief Process EXTSCAN BUffer full indication from FW
32724
32725 @param pWDICtx: pointer to the WLAN DAL context
32726 pEventData: pointer to the event information structure
32727
32728 @see
32729 @return Result of the function call
32730*/
32731WDI_Status
32732WDI_ProcessEXTScanProgressInd
32733(
32734 WDI_ControlBlockType* pWDICtx,
32735 WDI_EventInfoType* pEventData
32736)
32737{
32738 WDI_LowLevelIndType wdiInd;
32739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32740
32741 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32742 "%s: ", __func__);
32743
32744 /* sanity check */
32745 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32746 ( NULL == pEventData->pEventData))
32747 {
32748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32749 "%s: Invalid parameters", __func__);
32750 WDI_ASSERT(0);
32751 return WDI_STATUS_E_FAILURE;
32752 }
32753
32754 /* Fill in the indication parameters */
32755 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32756
32757 /* extract response and send it to UMAC */
32758 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32759
32760 /* Notify UMAC */
32761 if (pWDICtx->wdiLowLevelIndCB)
32762 {
32763 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32764 }
32765 else
32766 {
Dino Mycled3d50022014-07-07 12:58:25 +053032767 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032768 "%s: WDILowLevelIndCb is null", __func__);
32769 WDI_ASSERT(0);
32770 return WDI_STATUS_E_FAILURE;
32771 }
32772 return WDI_STATUS_SUCCESS;
32773
32774} /* End of WDI_ProcessEXTScanProgressInd */
32775
32776
32777/**
32778 @brief Process EXTScan Scan Available indication from FW
32779
32780 @param pWDICtx: pointer to the WLAN DAL context
32781 pEventData: pointer to the event information structure
32782
32783 @see
32784 @return Result of the function call
32785*/
32786WDI_Status
32787WDI_ProcessEXTScanScanAvailableInd
32788(
32789 WDI_ControlBlockType* pWDICtx,
32790 WDI_EventInfoType* pEventData
32791)
32792{
32793 WDI_LowLevelIndType wdiInd;
32794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32795
32796 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32797 "%s: ", __func__);
32798
32799 /* sanity check */
32800 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32801 ( NULL == pEventData->pEventData))
32802 {
32803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32804 "%s: Invalid parameters", __func__);
32805 WDI_ASSERT(0);
32806 return WDI_STATUS_E_FAILURE;
32807 }
32808
32809
32810
32811 /* Fill in the indication parameters */
32812 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32813
32814 /* extract response and send it to UMAC */
32815 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32816
32817 /* Notify UMAC */
32818 if (pWDICtx->wdiLowLevelIndCB)
32819 {
32820 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32821 }
32822 else
32823 {
32824 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32825 "%s: WDILowLevelIndCb is null", __func__);
32826 WDI_ASSERT(0);
32827 return WDI_STATUS_E_FAILURE;
32828 }
32829 return WDI_STATUS_SUCCESS;
32830} /* End of WDI_ProcessEXTScanScanDoneInd */
32831
32832/**
32833 @brief Process EXTScan Result Indication indication from FW
32834
32835 @param pWDICtx: pointer to the WLAN DAL context
32836 pEventData: pointer to the event information structure
32837
32838 @see
32839 @return Result of the function call
32840*/
32841WDI_Status
32842WDI_ProcessEXTScanResultInd
32843(
32844 WDI_ControlBlockType* pWDICtx,
32845 WDI_EventInfoType* pEventData
32846)
32847{
32848 WDI_LowLevelIndType wdiInd;
32849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32850
32851 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32852 "%s: ", __func__);
32853
32854 /* sanity check */
32855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32856 ( NULL == pEventData->pEventData))
32857 {
32858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32859 "%s: Invalid parameters", __func__);
32860 WDI_ASSERT(0);
32861 return WDI_STATUS_E_FAILURE;
32862 }
32863
32864 /* Fill in the indication parameters */
32865 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32866
32867 /* extract response and send it to UMAC */
32868 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32869
32870 /* Notify UMAC */
32871 if (pWDICtx->wdiLowLevelIndCB)
32872 {
32873 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32874 }
32875 else
32876 {
32877 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32878 "%s: WDILowLevelIndCb is null", __func__);
32879 WDI_ASSERT(0);
32880 return WDI_STATUS_E_FAILURE;
32881 }
32882 return WDI_STATUS_SUCCESS;
32883} /* End of WDI_ProcessEXTScanResultInd */
32884
32885/**
32886 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32887
32888 @param pWDICtx: pointer to the WLAN DAL context
32889 pEventData: pointer to the event information structure
32890
32891 @see
32892 @return Result of the function call
32893*/
32894WDI_Status
32895WDI_ProcessEXTScanBssidHotListResultInd
32896(
32897 WDI_ControlBlockType* pWDICtx,
32898 WDI_EventInfoType* pEventData
32899)
32900{
32901 WDI_LowLevelIndType wdiInd;
32902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32903
32904 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32905 "%s: ", __func__);
32906
32907 /* sanity check */
32908 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32909 ( NULL == pEventData->pEventData))
32910 {
32911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32912 "%s: Invalid parameters", __func__);
32913 WDI_ASSERT(0);
32914 return WDI_STATUS_E_FAILURE;
32915 }
32916
32917 /* Fill in the indication parameters */
32918 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32919
32920 /* extract response and send it to UMAC */
32921 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32922
32923 /* Notify UMAC */
32924 if (pWDICtx->wdiLowLevelIndCB)
32925 {
32926 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32927 }
32928 else
32929 {
32930 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32931 "%s: WDILowLevelIndCb is null", __func__);
32932 WDI_ASSERT(0);
32933 return WDI_STATUS_E_FAILURE;
32934 }
32935 return WDI_STATUS_SUCCESS;
32936} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32937
32938/**
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053032939 @brief Process EXTScan SSID Hotlist Result Indication indication from FW
32940
32941 @param pWDICtx: pointer to the WLAN DAL context
32942 pEventData: pointer to the event information structure
32943
32944 @see
32945 @return Result of the function call
32946*/
32947WDI_Status
32948WDI_ProcessEXTScanSsidHotListResultInd
32949(
32950 WDI_ControlBlockType* pWDICtx,
32951 WDI_EventInfoType* pEventData
32952)
32953{
32954 WDI_LowLevelIndType wdiInd;
32955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32956
32957 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32958 "%s: ", __func__);
32959
32960 /* sanity check */
32961 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32962 ( NULL == pEventData->pEventData))
32963 {
32964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32965 "%s: Invalid parameters", __func__);
32966 WDI_ASSERT(0);
32967 return WDI_STATUS_E_FAILURE;
32968 }
32969
32970 /* Fill in the indication parameters */
32971 wdiInd.wdiIndicationType = WDI_EXTSCAN_SSID_HOTLIST_RESULT_IND;
32972
32973 /* extract response and send it to UMAC */
32974 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32975
32976 /* Notify UMAC */
32977 if (pWDICtx->wdiLowLevelIndCB)
32978 {
32979 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32980 }
32981 else
32982 {
32983 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32984 "%s: WDILowLevelIndCb is null", __func__);
32985 WDI_ASSERT(0);
32986 return WDI_STATUS_E_FAILURE;
32987 }
32988 return WDI_STATUS_SUCCESS;
32989} /* End of WDI_ProcessEXTScanSsidHotListResultInd */
32990
32991
32992/**
Dino Mycle41bdc942014-06-10 11:30:24 +053032993 @brief WDI_EXTScanGetCapabilitiesReq
32994
32995 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32996 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32997 of the Req operation received from the device
32998 pUserData: user data will be passed back with the callback
32999
33000 @return SUCCESS or FAIL
33001*/
33002WDI_Status
33003WDI_EXTScanGetCapabilitiesReq(
33004 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
33005 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
33006 void* pUserData)
33007{
33008 WDI_EventInfoType wdiEventData;
33009
33010 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33011 "%s: %d ",__func__, __LINE__);
33012 /*------------------------------------------------------------------------
33013 Sanity Check
33014 ------------------------------------------------------------------------*/
33015 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33016 {
33017 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33018 "WDI API call before module is initialized - Fail request");
33019
33020 return WDI_STATUS_E_NOT_ALLOWED;
33021 }
33022
33023 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
33024 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
33025 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
33026 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
33027 wdiEventData.pUserData = pUserData;
33028
33029 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33030}
33031
33032/**
33033 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
33034 Extended Scan Get Capability request to FW
33035
33036 @param pWDICtx : wdi context
33037 pEventData : indication data
33038
33039 @see
33040 @return none
33041*/
33042WDI_Status
33043WDI_ProcessEXTScanGetCapabilitiesReq
33044(
33045 WDI_ControlBlockType* pWDICtx,
33046 WDI_EventInfoType* pEventData
33047)
33048{
33049 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
33050 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33051 wpt_uint8* pSendBuffer = NULL;
33052 wpt_uint16 usSendSize = 0;
33053 wpt_uint16 usDataOffset = 0;
33054 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
33055
33056 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33057 "%s: %d Enter",__func__, __LINE__);
33058
33059 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33060 ( NULL == pEventData->pCBfnc ))
33061 {
33062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33063 "%s: Invalid parameters", __func__);
33064 WDI_ASSERT(0);
33065 return WDI_STATUS_E_FAILURE;
33066 }
33067
33068 pwdiEXTScanGetCapabilitiesReqParams =
33069 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
33070 wdiEXTScanGetCapabilitiesRspCb =
33071 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
33072
33073 /*-----------------------------------------------------------------------
33074 Get message buffer
33075 ! TO DO : proper conversion into the HAL Message Request Format
33076 -----------------------------------------------------------------------*/
33077 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33078 pWDICtx,
33079 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
33080 sizeof(halEXTScanGetCapReqParams),
33081 &pSendBuffer, &usDataOffset,
33082 &usSendSize))||
33083 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
33084 {
33085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33086 "Unable to get send buffer in %s %p %p %p", __func__,
33087 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
33088 wdiEXTScanGetCapabilitiesRspCb);
33089 WDI_ASSERT(0);
33090 return WDI_STATUS_E_FAILURE;
33091 }
33092
33093 halEXTScanGetCapReqParams.requestId =
33094 pwdiEXTScanGetCapabilitiesReqParams->requestId;
33095 halEXTScanGetCapReqParams.sessionId =
33096 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
33097
33098 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33099 " requestId %u "
33100 " sessionId %u ",
33101 halEXTScanGetCapReqParams.requestId,
33102 halEXTScanGetCapReqParams.sessionId);
33103
33104 wpalMemoryCopy(pSendBuffer+usDataOffset,
33105 &halEXTScanGetCapReqParams,
33106 sizeof(halEXTScanGetCapReqParams));
33107
33108 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33109
33110
33111 /*-------------------------------------------------------------------------
33112 Send EXTScan Stop Request to HAL
33113 -------------------------------------------------------------------------*/
33114 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33115 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
33116 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
33117}
33118
33119/**
33120 @brief WDI_EXTScanGetCachedResultsReq
33121
33122 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
33123 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
33124 of the Req operation received from the device
33125 pUserData: user data will be passed back with the callback
33126
33127 @return SUCCESS or FAIL
33128*/
33129
33130WDI_Status
33131WDI_EXTScanGetCachedResultsReq(
33132 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
33133 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
33134 void* pUserData)
33135{
33136 WDI_EventInfoType wdiEventData;
33137
33138 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33139 "%s: %d Enter",__func__, __LINE__);
33140 /*------------------------------------------------------------------------
33141 Sanity Check
33142 ------------------------------------------------------------------------*/
33143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33144 {
33145 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33146 "WDI API call before module is initialized - Fail request");
33147
33148 return WDI_STATUS_E_NOT_ALLOWED;
33149 }
33150
33151 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
33152 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
33153 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
33154 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
33155 wdiEventData.pUserData = pUserData;
33156
33157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33158}
33159
33160/**
33161 @brief WDI_ProcessEXTScanGetCachedResultsReq -
33162 Extended Scan Get Cached Result request to FW
33163
33164 @param pWDICtx : wdi context
33165 pEventData : indication data
33166
33167 @see
33168 @return none
33169*/
33170WDI_Status
33171WDI_ProcessEXTScanGetCachedResultsReq
33172(
33173 WDI_ControlBlockType* pWDICtx,
33174 WDI_EventInfoType* pEventData
33175)
33176{
33177 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
33178 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
33179 wpt_uint8* pSendBuffer = NULL;
33180 wpt_uint16 usSendSize = 0;
33181 wpt_uint16 usDataOffset = 0;
33182 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
33183
33184 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33185 "%s: %d Enter",__func__, __LINE__);
33186
33187 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33188 ( NULL == pEventData->pCBfnc ))
33189 {
33190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33191 "%s: Invalid parameters", __func__);
33192 WDI_ASSERT(0);
33193 return WDI_STATUS_E_FAILURE;
33194 }
33195
33196 pwdiEXTScanGetCachedResultsReqParams =
33197 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
33198 wdiEXTScanGetCachedResultsCb =
33199 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
33200
33201 /*-----------------------------------------------------------------------
33202 Get message buffer
33203 ! TO DO : proper conversion into the HAL Message Request Format
33204 -----------------------------------------------------------------------*/
33205 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33206 pWDICtx,
33207 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
33208 sizeof(tHalExtScanGetScanReq),
33209 &pSendBuffer, &usDataOffset,
33210 &usSendSize))||
33211 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
33212 {
33213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33214 "Unable to get send buffer in %s %p %p %p", __func__,
33215 pEventData, pwdiEXTScanGetCachedResultsReqParams,
33216 wdiEXTScanGetCachedResultsCb);
33217 WDI_ASSERT(0);
33218 return WDI_STATUS_E_FAILURE;
33219 }
33220
33221 halEXTScanGetScanReqParams.requestId =
33222 pwdiEXTScanGetCachedResultsReqParams->requestId;
33223 halEXTScanGetScanReqParams.sessionId =
33224 pwdiEXTScanGetCachedResultsReqParams->sessionId;
33225 halEXTScanGetScanReqParams.flush =
33226 pwdiEXTScanGetCachedResultsReqParams->flush;
33227
33228 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33229 " requestId %u "
33230 " sessionId %u "
33231 " flush %u ",
33232 halEXTScanGetScanReqParams.requestId,
33233 halEXTScanGetScanReqParams.sessionId,
33234 halEXTScanGetScanReqParams.flush);
33235
33236 wpalMemoryCopy(pSendBuffer+usDataOffset,
33237 &halEXTScanGetScanReqParams,
33238 sizeof(halEXTScanGetScanReqParams));
33239
33240 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33241
33242
33243 /*-------------------------------------------------------------------------
33244 Send EXTScan Stop Request to HAL
33245 -------------------------------------------------------------------------*/
33246 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33247 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
33248 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
33249}
33250
33251/**
33252 @brief WDI_EXTScanStopReq
33253
33254 @param WDI_EXTScanStopReqParams: Req parameter for the FW
33255 WDI_EXTScanStopRspCb: callback for passing back the response
33256 of the Req operation received from the device
33257 pUserData: user data will be passed back with the callback
33258
33259 @return SUCCESS or FAIL
33260*/
33261WDI_Status
33262WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
33263 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
33264 void* pUserData)
33265{
33266 WDI_EventInfoType wdiEventData;
33267
33268 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33269 "%s: %d ",__func__, __LINE__);
33270 /*------------------------------------------------------------------------
33271 Sanity Check
33272 ------------------------------------------------------------------------*/
33273 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33274 {
33275 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33276 "WDI API call before module is initialized - Fail request");
33277
33278 return WDI_STATUS_E_NOT_ALLOWED;
33279 }
33280
33281 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
33282 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
33283 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
33284 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
33285 wdiEventData.pUserData = pUserData;
33286
33287 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33288}
33289
33290/**
33291 @brief WDI_ProcessEXTScanStopReq -
33292 Extended Scan Stop request to FW
33293
33294 @param pWDICtx : wdi context
33295 pEventData : indication data
33296
33297 @see
33298 @return none
33299*/
33300WDI_Status
33301WDI_ProcessEXTScanStopReq
33302(
33303 WDI_ControlBlockType* pWDICtx,
33304 WDI_EventInfoType* pEventData
33305)
33306{
33307 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33308 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33309 wpt_uint8* pSendBuffer = NULL;
33310 wpt_uint16 usSendSize = 0;
33311 wpt_uint16 usDataOffset = 0;
33312 tHalExtScanStopReq halEXTScanStopReqParams;
33313
33314 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33315 "%s: %d ",__func__, __LINE__);
33316
33317 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33318 ( NULL == pEventData->pCBfnc ))
33319 {
33320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33321 "%s: Invalid parameters", __func__);
33322 WDI_ASSERT(0);
33323 return WDI_STATUS_E_FAILURE;
33324 }
33325
33326 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33327 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33328
33329 /*-----------------------------------------------------------------------
33330 Get message buffer
33331 ! TO DO : proper conversion into the HAL Message Request Format
33332 -----------------------------------------------------------------------*/
33333 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33334 pWDICtx,
33335 WDI_EXTSCAN_STOP_REQ,
33336 sizeof(tHalExtScanStopReq),
33337 &pSendBuffer, &usDataOffset,
33338 &usSendSize))||
33339 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33340 {
33341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33342 "Unable to get send buffer in %s %p %p %p", __func__,
33343 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33344 WDI_ASSERT(0);
33345 return WDI_STATUS_E_FAILURE;
33346 }
33347
33348 halEXTScanStopReqParams.requestId =
33349 pwdiEXTScanStopReqParams->requestId;
33350 halEXTScanStopReqParams.sessionId =
33351 pwdiEXTScanStopReqParams->sessionId;
33352
33353 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33354 " halEXTScanStopReqParams.requestId %u "
33355 " halEXTScanStopReqParams.sessionId %u ",
33356 halEXTScanStopReqParams.requestId,
33357 halEXTScanStopReqParams.sessionId);
33358
33359 wpalMemoryCopy(pSendBuffer+usDataOffset,
33360 &halEXTScanStopReqParams,
33361 sizeof(halEXTScanStopReqParams));
33362
33363 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33364
33365
33366 /*-------------------------------------------------------------------------
33367 Send EXTScan Stop Request to HAL
33368 -------------------------------------------------------------------------*/
33369 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33370 wdiEXTScanStopCb, pEventData->pUserData,
33371 WDI_EXTSCAN_STOP_RSP);
33372}
33373
33374/**
33375 @brief WDI_EXTScanStartReq
33376
33377 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33378 WDI_EXTScanStartRspCb: callback for passing back the response
33379 of the Req operation received from the device
33380 pUserData: user data will be passed back with the callback
33381
33382 @return SUCCESS or FAIL
33383*/
33384WDI_Status
33385WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33386 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33387 void* pUserData)
33388{
33389 WDI_EventInfoType wdiEventData;
33390
33391 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33392 "%s: %d Enter",__func__, __LINE__);
33393 /*------------------------------------------------------------------------
33394 Sanity Check
33395 ------------------------------------------------------------------------*/
33396 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33397 {
33398 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33399 "WDI API call before module is initialized - Fail request");
33400
33401 return WDI_STATUS_E_NOT_ALLOWED;
33402 }
33403
33404 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33405 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33406 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33407 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33408 wdiEventData.pUserData = pUserData;
33409
33410 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33411}
33412
33413/**
33414 @brief WDI_ProcessEXTScanStartReq -
33415 Extended Scan Start Request to FW
33416
33417 @param pWDICtx : wdi context
33418 pEventData : indication data
33419
33420 @see
33421 @return none
33422*/
33423WDI_Status
33424WDI_ProcessEXTScanStartReq
33425(
33426 WDI_ControlBlockType* pWDICtx,
33427 WDI_EventInfoType* pEventData
33428)
33429{
33430 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33431 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33432 wpt_uint8* pSendBuffer = NULL;
33433 wpt_uint16 usSendSize = 0;
33434 wpt_uint16 usDataOffset = 0;
33435 tpHalExtScanStartReq pHalExtScanStartReqParams;
33436 int i = 0;
33437 int j = 0;
33438
33439 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33440 "%s: %d Enter",__func__, __LINE__);
33441
33442 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33443 ( NULL == pEventData->pCBfnc ))
33444 {
33445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33446 "%s: Invalid parameters", __func__);
33447 WDI_ASSERT(0);
33448 return WDI_STATUS_E_FAILURE;
33449 }
33450
33451 pwdiEXTScanStartReqParams =
33452 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33453 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33454
33455 /*-----------------------------------------------------------------------
33456 Get message buffer
33457 ! TO DO : proper conversion into the HAL Message Request Format
33458 -----------------------------------------------------------------------*/
33459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33460 pWDICtx,
33461 WDI_EXTSCAN_START_REQ,
33462 sizeof(tHalExtScanStartReq),
33463 &pSendBuffer, &usDataOffset,
33464 &usSendSize))||
33465 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33466 {
33467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33468 "Unable to get send buffer in %s %p %p %p", __func__,
33469 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33470 WDI_ASSERT(0);
33471 return WDI_STATUS_E_FAILURE;
33472 }
33473
33474 pHalExtScanStartReqParams =
33475 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33476
33477 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33478 pHalExtScanStartReqParams->maxApPerScan =
33479 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033480 pHalExtScanStartReqParams->reportThresholdPercent =
33481 pwdiEXTScanStartReqParams->reportThresholdPercent;
33482 pHalExtScanStartReqParams->reportThresholdNumScans =
33483 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053033484 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33485 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33486 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033487 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053033488
33489 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33490 {
33491 pHalExtScanStartReqParams->bucketData[i].bucketId =
33492 pwdiEXTScanStartReqParams->buckets[i].bucket;
33493 pHalExtScanStartReqParams->bucketData[i].channelBand =
33494 pwdiEXTScanStartReqParams->buckets[i].band;
33495 pHalExtScanStartReqParams->bucketData[i].period =
33496 pwdiEXTScanStartReqParams->buckets[i].period;
33497 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33498 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033499 pHalExtScanStartReqParams->bucketData[i].max_period =
33500 pwdiEXTScanStartReqParams->buckets[i].max_period;
33501 pHalExtScanStartReqParams->bucketData[i].exponent =
33502 pwdiEXTScanStartReqParams->buckets[i].exponent;
33503 pHalExtScanStartReqParams->bucketData[i].step_count =
33504 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053033505 pHalExtScanStartReqParams->bucketData[i].numChannels =
33506 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33507
33508 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33509 {
33510 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33511 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33512 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33513 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33514 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33515 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33516 }
33517
33518 }
33519
33520
33521 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033522 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
33523 "reportThresholdNumScans %u requestId %u"
33524 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033525 pHalExtScanStartReqParams->basePeriod,
33526 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033527 pHalExtScanStartReqParams->reportThresholdPercent,
33528 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053033529 pHalExtScanStartReqParams->requestId,
33530 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033531 pHalExtScanStartReqParams->numBuckets,
33532 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053033533
33534 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33535 {
33536 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33537 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033538 " reportEvents %u numChannels %u "
33539 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053033540 pHalExtScanStartReqParams->bucketData[i].bucketId,
33541 pHalExtScanStartReqParams->bucketData[i].channelBand,
33542 pHalExtScanStartReqParams->bucketData[i].period,
33543 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033544 pHalExtScanStartReqParams->bucketData[i].numChannels,
33545 pHalExtScanStartReqParams->bucketData[i].max_period,
33546 pHalExtScanStartReqParams->bucketData[i].exponent,
33547 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053033548
33549 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33550 {
33551 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33552 "%d) channel %u dwellTimeMs %u passive %u ",j,
33553 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33554 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33555 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33556 }
33557
33558 }
33559
Dino Mycle41bdc942014-06-10 11:30:24 +053033560 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33561
33562 /*-------------------------------------------------------------------------
33563 Send EXTSCAN Start Request to HAL
33564 -------------------------------------------------------------------------*/
33565 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33566 wdiEXTScanStartCb, pEventData->pUserData,
33567 WDI_EXTSCAN_START_RSP);
33568}
33569
33570/**
33571 @brief WDI_EXTScanSetBSSIDHotlistReq
33572
33573 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33574 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33575 of the Req operation received from the device
33576 pUserData: user data will be passed back with the callback
33577
33578 @return SUCCESS or FAIL
33579*/
33580WDI_Status
33581WDI_EXTScanSetBSSIDHotlistReq(
33582 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33583 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33584 void* pUserData)
33585{
33586 WDI_EventInfoType wdiEventData;
33587
33588 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33589 "%s: %d Enter ",__func__, __LINE__);
33590 /*------------------------------------------------------------------------
33591 Sanity Check
33592 ------------------------------------------------------------------------*/
33593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33594 {
33595 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33596 "WDI API call before module is initialized - Fail request");
33597
33598 return WDI_STATUS_E_NOT_ALLOWED;
33599 }
33600
33601 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33602 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33603 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33604 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33605 wdiEventData.pUserData = pUserData;
33606
33607 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33608}
33609
33610/**
33611 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33612 Extended Scan Set BSSSID Hotlist Request to FW
33613
33614 @param pWDICtx : wdi context
33615 pEventData : indication data
33616
33617 @see
33618 @return none
33619*/
33620WDI_Status
33621WDI_ProcessEXTScanSetBSSIDHotlistReq
33622(
33623 WDI_ControlBlockType* pWDICtx,
33624 WDI_EventInfoType* pEventData
33625)
33626{
33627 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33628 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33629 wpt_uint8* pSendBuffer = NULL;
33630 wpt_uint16 usSendSize = 0;
33631 wpt_uint16 usDataOffset = 0;
33632 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33633 int i;
33634
33635 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33636 "%s: %d Enter",__func__, __LINE__);
33637
33638 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33639 ( NULL == pEventData->pCBfnc ))
33640 {
33641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33642 "%s: Invalid parameters", __func__);
33643 WDI_ASSERT(0);
33644 return WDI_STATUS_E_FAILURE;
33645 }
33646
33647 pwdiEXTScanSetBSSIDHotlistReqParams =
33648 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33649 wdiEXTScanSetBSSIDHotlistRspCb =
33650 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33651
33652 /*-----------------------------------------------------------------------
33653 Get message buffer
33654 ! TO DO : proper conversion into the HAL Message Request Format
33655 -----------------------------------------------------------------------*/
33656 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33657 pWDICtx,
33658 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33659 sizeof(tHalBssidHotlistSetReq),
33660 &pSendBuffer, &usDataOffset,
33661 &usSendSize))||
33662 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33663 {
33664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33665 "Unable to get send buffer in %s %p %p %p", __func__,
33666 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33667 wdiEXTScanSetBSSIDHotlistRspCb);
33668 WDI_ASSERT(0);
33669 return WDI_STATUS_E_FAILURE;
33670 }
33671 pHalBssidHotlistSetReqParams =
33672 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33673
33674 pHalBssidHotlistSetReqParams->requestId =
33675 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33676
33677 pHalBssidHotlistSetReqParams->sessionId =
33678 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33679
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033680 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
33681 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
33682
33683 pHalBssidHotlistSetReqParams->numBssid =
33684 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053033685
33686 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33687
33688 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33689 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33690 WDI_MAC_ADDR_LEN);
33691
33692 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33693 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33694
33695 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33696 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33697
Dino Mycle41bdc942014-06-10 11:30:24 +053033698 }
33699
33700 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033701 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033702 pHalBssidHotlistSetReqParams->requestId,
33703 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033704 pHalBssidHotlistSetReqParams->numBssid,
33705 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053033706
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033707 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053033708
33709 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033710 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053033711 __func__, __LINE__, i,
33712 pHalBssidHotlistSetReqParams->ap[i].bssid,
33713 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033714 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053033715
33716 }
33717
33718 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33719
33720
33721 /*-------------------------------------------------------------------------
33722 Send EXTScan Stop Request to HAL
33723 -------------------------------------------------------------------------*/
33724 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33725 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33726 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33727}
33728
33729/**
33730 @brief WDI_EXTScanResetBSSIDHotlistReq
33731
33732 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33733 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33734 of the Req operation received from the device
33735 pUserData: user data will be passed back with the callback
33736
33737 @return SUCCESS or FAIL
33738*/
33739WDI_Status
33740WDI_EXTScanResetBSSIDHotlistReq(
33741 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33742 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33743 void* pUserData)
33744{
33745 WDI_EventInfoType wdiEventData;
33746
33747 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33748 "%s: %d",__func__, __LINE__);
33749 /*------------------------------------------------------------------------
33750 Sanity Check
33751 ------------------------------------------------------------------------*/
33752 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33753 {
33754 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33755 "WDI API call before module is initialized - Fail request");
33756
33757 return WDI_STATUS_E_NOT_ALLOWED;
33758 }
33759
33760 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33761 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33762 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33763 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33764 wdiEventData.pUserData = pUserData;
33765
33766 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33767}
33768
33769/**
33770 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33771 Extended Scan reset BSSID hotlist Request to FW
33772
33773 @param pWDICtx : wdi context
33774 pEventData : indication data
33775
33776 @see
33777 @return none
33778*/
33779WDI_Status
33780WDI_ProcessEXTScanResetBSSIDHotlistReq
33781(
33782 WDI_ControlBlockType* pWDICtx,
33783 WDI_EventInfoType* pEventData
33784)
33785{
33786 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33787 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33788 wpt_uint8* pSendBuffer = NULL;
33789 wpt_uint16 usSendSize = 0;
33790 wpt_uint16 usDataOffset = 0;
33791 tpHalHotlistResetReq pHalHotlistResetReqParams;
33792
33793 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33794 "%s: %d",__func__, __LINE__);
33795
33796 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33797 ( NULL == pEventData->pCBfnc ))
33798 {
33799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33800 "%s: Invalid parameters", __func__);
33801 WDI_ASSERT(0);
33802 return WDI_STATUS_E_FAILURE;
33803 }
33804
33805 pwdiEXTScanResetBSSIDHotlistReqParams =
33806 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33807 wdiEXTScanResetBSSIDHotlistRspCb =
33808 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33809
33810 /*-----------------------------------------------------------------------
33811 Get message buffer
33812 ! TO DO : proper conversion into the HAL Message Request Format
33813 -----------------------------------------------------------------------*/
33814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33815 pWDICtx,
33816 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33817 sizeof(tHalHotlistResetReq),
33818 &pSendBuffer, &usDataOffset,
33819 &usSendSize))||
33820 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33821 {
33822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33823 "Unable to get send buffer in %s %p %p %p", __func__,
33824 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33825 wdiEXTScanResetBSSIDHotlistRspCb);
33826 WDI_ASSERT(0);
33827 return WDI_STATUS_E_FAILURE;
33828 }
33829 pHalHotlistResetReqParams =
33830 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33831
33832 pHalHotlistResetReqParams->requestId =
33833 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33834
33835 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33836
33837 /*-------------------------------------------------------------------------
33838 Send EXTScan Stop Request to HAL
33839 -------------------------------------------------------------------------*/
33840 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33841 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33842 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33843}
33844
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053033845
33846/**
33847 @brief WDI_EXTScanSetSSIDHotlistReq
33848
33849 @param WDI_EXTScanSetSSIDHotlistReqParams: Req parameter for the FW
33850 WDI_EXTScanSetSSIDHotlistRspCb: callback for passing back the response
33851 of the Req operation received from the device
33852 pUserData: user data will be passed back with the callback
33853
33854 @return SUCCESS or FAIL
33855*/
33856WDI_Status
33857WDI_EXTScanSetSSIDHotlistReq(
33858 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams,
33859 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb,
33860 void* pUserData)
33861{
33862 WDI_EventInfoType wdiEventData;
33863
33864 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33865 "%s: %d Enter ",__func__, __LINE__);
33866 /*------------------------------------------------------------------------
33867 Sanity Check
33868 ------------------------------------------------------------------------*/
33869 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33870 {
33871 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33872 "WDI API call before module is initialized - Fail request");
33873
33874 return WDI_STATUS_E_NOT_ALLOWED;
33875 }
33876
33877 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SSID_HOTLIST_REQ;
33878 wdiEventData.pEventData = pwdiEXTScanSetSSIDHotlistReqParams;
33879 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetSSIDHotlistReqParams);
33880 wdiEventData.pCBfnc = wdiEXTScanSetSSIDHotlistRspCb;
33881 wdiEventData.pUserData = pUserData;
33882
33883 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33884}
33885
33886/**
33887 @brief WDI_ProcessEXTScanSetSSIDHotlistReq -
33888 Extended Scan Set SSSID Hotlist Request to FW
33889
33890 @param pWDICtx : wdi context
33891 pEventData : indication data
33892
33893 @see
33894 @return none
33895*/
33896WDI_Status
33897WDI_ProcessEXTScanSetSSIDHotlistReq
33898(
33899 WDI_ControlBlockType* pWDICtx,
33900 WDI_EventInfoType* pEventData
33901)
33902{
33903 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams;
33904 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
33905 wpt_uint8* pSendBuffer = NULL;
33906 wpt_uint16 usSendSize = 0;
33907 wpt_uint16 usDataOffset = 0;
33908 tpHalSsidHotlistSetReq pHalSsidHotlistSetReqParams;
33909 int i;
33910
33911 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33912 "%s: %d Enter",__func__, __LINE__);
33913
33914 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33915 ( NULL == pEventData->pCBfnc ))
33916 {
33917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33918 "%s: Invalid parameters", __func__);
33919 WDI_ASSERT(0);
33920 return WDI_STATUS_E_FAILURE;
33921 }
33922
33923 pwdiEXTScanSetSSIDHotlistReqParams =
33924 (WDI_EXTScanSetSSIDHotlistReqParams *)pEventData->pEventData;
33925 wdiEXTScanSetSSIDHotlistRspCb =
33926 (WDI_EXTScanSetSSIDHotlistRspCb)pEventData->pCBfnc;
33927
33928 /*-----------------------------------------------------------------------
33929 Get message buffer
33930 ! TO DO : proper conversion into the HAL Message Request Format
33931 -----------------------------------------------------------------------*/
33932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33933 pWDICtx,
33934 WDI_EXTSCAN_SET_SSID_HOTLIST_REQ,
33935 sizeof(tHalSsidHotlistSetReq),
33936 &pSendBuffer, &usDataOffset,
33937 &usSendSize))||
33938 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistSetReq) )))
33939 {
33940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33941 "Unable to get send buffer in %s %p %p %p", __func__,
33942 pEventData, pwdiEXTScanSetSSIDHotlistReqParams,
33943 wdiEXTScanSetSSIDHotlistRspCb);
33944 WDI_ASSERT(0);
33945 return WDI_STATUS_E_FAILURE;
33946 }
33947 pHalSsidHotlistSetReqParams =
33948 (tpHalSsidHotlistSetReq) (pSendBuffer + usDataOffset);
33949
33950 pHalSsidHotlistSetReqParams->requestId =
33951 pwdiEXTScanSetSSIDHotlistReqParams->requestId;
33952
33953 pHalSsidHotlistSetReqParams->sessionId =
33954 pwdiEXTScanSetSSIDHotlistReqParams->sessionId;
33955
33956 pHalSsidHotlistSetReqParams->lostSsidSampleSize =
33957 pwdiEXTScanSetSSIDHotlistReqParams->lostSsidSampleSize;;
33958
33959 pHalSsidHotlistSetReqParams->numSsid =
33960 pwdiEXTScanSetSSIDHotlistReqParams->numSsid;
33961
33962 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33963
33964 wpalMemoryZero(pHalSsidHotlistSetReqParams->ssid[i].ssid, 33);
33965 wpalMemoryCopy(pHalSsidHotlistSetReqParams->ssid[i].ssid,
33966 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.sSSID,
33967 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.ucLength);
33968
33969 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold =
33970 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].lowRssiThreshold;
33971
33972 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold =
33973 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].highRssiThreshold;
33974
33975 pHalSsidHotlistSetReqParams->ssid[i].band =
33976 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].band;
33977 }
33978
33979 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33980 "ReqID %u sessionId %u numSsid %u lost_ssid_sample_size: %u",
33981 pHalSsidHotlistSetReqParams->requestId,
33982 pHalSsidHotlistSetReqParams->sessionId,
33983 pHalSsidHotlistSetReqParams->numSsid,
33984 pHalSsidHotlistSetReqParams->lostSsidSampleSize);
33985
33986 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33987
33988 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33989 "%s %d %d) SSID = %s lowRssiThreshold %d highRssiThreshold %d band: %d",
33990 __func__, __LINE__, i,
33991 pHalSsidHotlistSetReqParams->ssid[i].ssid,
33992 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold,
33993 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold,
33994 pHalSsidHotlistSetReqParams->ssid[i].band);
33995 }
33996
33997 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33998
33999
34000 /*-------------------------------------------------------------------------
34001 Send EXTScan Stop Request to HAL
34002 -------------------------------------------------------------------------*/
34003 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34004 wdiEXTScanSetSSIDHotlistRspCb, pEventData->pUserData,
34005 WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
34006}
34007
34008/**
34009 @brief WDI_EXTScanResetSSIDHotlistReq
34010
34011 @param WDI_EXTScanResetSSIDHotlistReqParams: Req parameter for the FW
34012 WDI_EXTScanResetSSIDHotlistRspCb: callback for passing back the response
34013 of the Req operation received from the device
34014 pUserData: user data will be passed back with the callback
34015
34016 @return SUCCESS or FAIL
34017*/
34018WDI_Status
34019WDI_EXTScanResetSSIDHotlistReq(
34020 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams,
34021 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb,
34022 void* pUserData)
34023{
34024 WDI_EventInfoType wdiEventData;
34025
34026 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34027 "%s: %d",__func__, __LINE__);
34028 /*------------------------------------------------------------------------
34029 Sanity Check
34030 ------------------------------------------------------------------------*/
34031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34032 {
34033 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34034 "WDI API call before module is initialized - Fail request");
34035
34036 return WDI_STATUS_E_NOT_ALLOWED;
34037 }
34038
34039 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ;
34040 wdiEventData.pEventData = pwdiEXTScanResetSSIDHotlistReqParams;
34041 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetSSIDHotlistReqParams);
34042 wdiEventData.pCBfnc = wdiEXTScanResetSSIDHotlistRspCb;
34043 wdiEventData.pUserData = pUserData;
34044
34045 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34046}
34047
34048/**
34049 @brief WDI_ProcessEXTScanResetSSIDHotlistReq -
34050 Extended Scan reset SSID hotlist Request to FW
34051
34052 @param pWDICtx : wdi context
34053 pEventData : indication data
34054
34055 @see
34056 @return none
34057*/
34058WDI_Status
34059WDI_ProcessEXTScanResetSSIDHotlistReq
34060(
34061 WDI_ControlBlockType* pWDICtx,
34062 WDI_EventInfoType* pEventData
34063)
34064{
34065 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams;
34066 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34067 wpt_uint8* pSendBuffer = NULL;
34068 wpt_uint16 usSendSize = 0;
34069 wpt_uint16 usDataOffset = 0;
34070 tpHalSsidHotlistResetReq pHalSsidHotlistResetReqParams;
34071
34072 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34073 "%s: %d",__func__, __LINE__);
34074
34075 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34076 ( NULL == pEventData->pCBfnc ))
34077 {
34078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34079 "%s: Invalid parameters", __func__);
34080 WDI_ASSERT(0);
34081 return WDI_STATUS_E_FAILURE;
34082 }
34083
34084 pwdiEXTScanResetSSIDHotlistReqParams =
34085 (WDI_EXTScanResetSSIDHotlistReqParams *)pEventData->pEventData;
34086 wdiEXTScanResetSSIDHotlistRspCb =
34087 (WDI_EXTScanResetSSIDHotlistRspCb)pEventData->pCBfnc;
34088
34089 /*-----------------------------------------------------------------------
34090 Get message buffer
34091 ! TO DO : proper conversion into the HAL Message Request Format
34092 -----------------------------------------------------------------------*/
34093 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34094 pWDICtx,
34095 WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ,
34096 sizeof(tHalSsidHotlistResetReq),
34097 &pSendBuffer, &usDataOffset,
34098 &usSendSize))||
34099 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistResetReq) )))
34100 {
34101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34102 "Unable to get send buffer in %s %p %p %p", __func__,
34103 pEventData, pwdiEXTScanResetSSIDHotlistReqParams,
34104 wdiEXTScanResetSSIDHotlistRspCb);
34105 WDI_ASSERT(0);
34106 return WDI_STATUS_E_FAILURE;
34107 }
34108 pHalSsidHotlistResetReqParams =
34109 (tpHalSsidHotlistResetReq) (pSendBuffer+usDataOffset);
34110
34111 pHalSsidHotlistResetReqParams->requestId =
34112 pwdiEXTScanResetSSIDHotlistReqParams->requestId;
34113
34114 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34115
34116 /*-------------------------------------------------------------------------
34117 Send RESET_HOTLIST_SSID Request to HAL
34118 -------------------------------------------------------------------------*/
34119 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34120 wdiEXTScanResetSSIDHotlistRspCb, pEventData->pUserData,
34121 WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
34122}
34123
34124
Dino Mycle41bdc942014-06-10 11:30:24 +053034125/**
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053034126 @brief WDI_HighPriorityDataInfoInd
34127
34128 @param pHighPriorityDataInfoIndParams: Req parameter for the FW
34129
34130 @return SUCCESS or FAIL
34131*/
34132WDI_Status
34133WDI_HighPriorityDataInfoInd
34134(
34135 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams
34136)
34137{
34138 WDI_EventInfoType wdiEventData;
34139
34140 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34141 "%s: %d",__func__, __LINE__);
34142 /*------------------------------------------------------------------------
34143 Sanity Check
34144 ------------------------------------------------------------------------*/
34145 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34146 {
34147 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34148 "WDI API call before module is initialized - Fail request");
34149
34150 return WDI_STATUS_E_NOT_ALLOWED;
34151 }
34152
34153 wdiEventData.wdiRequest = WDI_HIGH_PRIORITY_DATA_INFO_IND;
34154 wdiEventData.pEventData = pHighPriorityDataInfoIndParams;
34155 wdiEventData.uEventDataSize = sizeof(*pHighPriorityDataInfoIndParams);
34156 wdiEventData.pCBfnc = NULL;
34157 wdiEventData.pUserData = NULL;
34158
34159 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34160}
34161
34162/**
34163 @brief WDI_ProcessHighPriorityDataInfoInd -
34164 Send WFD indication to FW
34165
34166 @param pWDICtx : wdi context
34167 pEventData : indication data
34168
34169 @see
34170 @return none
34171*/
34172WDI_Status
34173WDI_ProcessHighPriorityDataInfoInd
34174(
34175 WDI_ControlBlockType* pWDICtx,
34176 WDI_EventInfoType* pEventData
34177)
34178{
34179 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams;
34180 wpt_uint8* pSendBuffer = NULL;
34181 wpt_uint16 usSendSize = 0;
34182 wpt_uint16 usDataOffset = 0;
34183 tpHalHighPriorityDataInfoInd pHalHighPriorityDataInfoIndParams;
34184 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34185
34186 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34187 "%s: %d",__func__, __LINE__);
34188
34189 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34190 ( NULL == pEventData->pEventData))
34191 {
34192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34193 "%s: Invalid parameters", __func__);
34194 WDI_ASSERT(0);
34195 return WDI_STATUS_E_FAILURE;
34196 }
34197
34198 pHighPriorityDataInfoIndParams =
34199 (WDI_HighPriorityDataInfoIndParams *)pEventData->pEventData;
34200
34201 /*-----------------------------------------------------------------------
34202 Get message buffer
34203 -----------------------------------------------------------------------*/
34204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34205 pWDICtx,
34206 WDI_HIGH_PRIORITY_DATA_INFO_IND,
34207 sizeof(tHalHighPriorityDataInfoInd),
34208 &pSendBuffer, &usDataOffset,
34209 &usSendSize))||
34210 ( usSendSize < (usDataOffset + sizeof(tHalHighPriorityDataInfoInd) )))
34211 {
34212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34213 "Unable to get send buffer in %s %p %p", __func__,
34214 pEventData, pHighPriorityDataInfoIndParams);
34215 WDI_ASSERT(0);
34216 return WDI_STATUS_E_FAILURE;
34217 }
34218 pHalHighPriorityDataInfoIndParams =
34219 (tpHalHighPriorityDataInfoInd) (pSendBuffer+usDataOffset);
34220
34221 pHalHighPriorityDataInfoIndParams->pause =
34222 pHighPriorityDataInfoIndParams->pause;
34223
34224 pWDICtx->pReqStatusUserData = NULL;
34225 pWDICtx->pfncRspCB = NULL;
34226
34227 /*-------------------------------------------------------------------------
34228 Send HIGH_PRIORITY_DATA_INFO Request to HAL
34229 -------------------------------------------------------------------------*/
34230 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34231 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34232}
34233
34234/**
Dino Mycle41bdc942014-06-10 11:30:24 +053034235 @brief Process Extended Scan Start Rsp function (called when a response
34236 is being received over the bus from HAL)
34237
34238 @param pWDICtx: pointer to the WLAN DAL context
34239 pEventData: pointer to the event information structure
34240
34241 @see
34242 @return Result of the function call
34243*/
34244WDI_Status
34245WDI_ProcessEXTScanStartRsp
34246(
34247 WDI_ControlBlockType* pWDICtx,
34248 WDI_EventInfoType* pEventData
34249)
34250{
34251 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
34252
34253 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34254 "%s: %d",__func__, __LINE__);
34255 /*-------------------------------------------------------------------------
34256 Sanity check
34257 -------------------------------------------------------------------------*/
34258 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34259 ( NULL == pEventData->pEventData))
34260 {
34261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34262 "%s: Invalid parameters", __func__);
34263 WDI_ASSERT(0);
34264 return WDI_STATUS_E_FAILURE;
34265 }
34266
34267 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34268 if ( NULL == wdiEXTScanStartRspCb)
34269 {
34270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34271 "%s: Callback function Invalid", __func__);
34272 WDI_ASSERT(0);
34273 return WDI_STATUS_E_FAILURE;
34274 }
34275
34276 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
34277
34278 return WDI_STATUS_SUCCESS;
34279}
34280
34281
34282/**
34283 @brief Process Extended Scan Stop Rsp function (called when a response
34284 is being received over the bus from HAL)
34285
34286 @param pWDICtx: pointer to the WLAN DAL context
34287 pEventData: pointer to the event information structure
34288
34289 @see
34290 @return Result of the function call
34291*/
34292WDI_Status
34293WDI_ProcessEXTScanStopRsp
34294(
34295 WDI_ControlBlockType* pWDICtx,
34296 WDI_EventInfoType* pEventData
34297)
34298{
34299 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
34300
34301 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34302 "%s: %d",__func__, __LINE__);
34303
34304
34305 /*-------------------------------------------------------------------------
34306 Sanity check
34307 -------------------------------------------------------------------------*/
34308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34309 ( NULL == pEventData->pEventData))
34310 {
34311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34312 "%s: Invalid parameters", __func__);
34313 WDI_ASSERT(0);
34314 return WDI_STATUS_E_FAILURE;
34315 }
34316
34317 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34318 if ( NULL == wdiEXTScanStopRspCb)
34319 {
34320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34321 "%s: Callback function Invalid", __func__);
34322 WDI_ASSERT(0);
34323 return WDI_STATUS_E_FAILURE;
34324 }
34325
34326 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34327
34328 return WDI_STATUS_SUCCESS;
34329}
34330
34331/**
34332 @brief Process Extended Scan Get Cached Rsp function (called when a response
34333 is being received over the bus from HAL)
34334
34335 @param pWDICtx: pointer to the WLAN DAL context
34336 pEventData: pointer to the event information structure
34337
34338 @see
34339 @return Result of the function call
34340*/
34341WDI_Status
34342WDI_ProcessEXTScanGetCachedResultsRsp
34343(
34344 WDI_ControlBlockType* pWDICtx,
34345 WDI_EventInfoType* pEventData
34346)
34347{
34348 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
34349
34350 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34351 "%s: %d Enter",__func__, __LINE__);
34352
34353
34354 /*-------------------------------------------------------------------------
34355 Sanity check
34356 -------------------------------------------------------------------------*/
34357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34358 ( NULL == pEventData->pEventData))
34359 {
34360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34361 "%s: Invalid parameters", __func__);
34362 WDI_ASSERT(0);
34363 return WDI_STATUS_E_FAILURE;
34364 }
34365
34366 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34367 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
34368 {
34369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34370 "%s: Callback function Invalid", __func__);
34371 WDI_ASSERT(0);
34372 return WDI_STATUS_E_FAILURE;
34373 }
34374
34375 wdiEXTScanGetCachedResultsRspCb(
34376 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34377
34378 return WDI_STATUS_SUCCESS;
34379}
34380
34381/**
34382 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
34383 is being received over the bus from HAL)
34384
34385 @param pWDICtx: pointer to the WLAN DAL context
34386 pEventData: pointer to the event information structure
34387
34388 @see
34389 @return Result of the function call
34390*/
34391WDI_Status
34392WDI_ProcessEXTScanGetCapabilitiesRsp
34393(
34394 WDI_ControlBlockType* pWDICtx,
34395 WDI_EventInfoType* pEventData
34396)
34397{
34398 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
34399
34400 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34401 "%s: %d ",__func__, __LINE__);
34402
34403
34404 /*-------------------------------------------------------------------------
34405 Sanity check
34406 -------------------------------------------------------------------------*/
34407 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34408 ( NULL == pEventData->pEventData))
34409 {
34410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34411 "%s: Invalid parameters", __func__);
34412 WDI_ASSERT(0);
34413 return WDI_STATUS_E_FAILURE;
34414 }
34415
34416 wdiEXTScanGetCapabilitiesRspCb =
34417 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
34418 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
34419 {
34420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34421 "%s: Callback function Invalid", __func__);
34422 WDI_ASSERT(0);
34423 return WDI_STATUS_E_FAILURE;
34424 }
34425
34426 wdiEXTScanGetCapabilitiesRspCb(
34427 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34428
34429 return WDI_STATUS_SUCCESS;
34430}
34431
34432/**
34433 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34434 response is being received over the bus from HAL)
34435
34436 @param pWDICtx: pointer to the WLAN DAL context
34437 pEventData: pointer to the event information structure
34438
34439 @see
34440 @return Result of the function call
34441*/
34442WDI_Status
34443WDI_ProcessEXTScanSetHotlistBSSIDRsp
34444(
34445 WDI_ControlBlockType* pWDICtx,
34446 WDI_EventInfoType* pEventData
34447)
34448{
34449 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34450
34451 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34452 "%s: %d ",__func__, __LINE__);
34453
34454
34455 /*-------------------------------------------------------------------------
34456 Sanity check
34457 -------------------------------------------------------------------------*/
34458 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34459 ( NULL == pEventData->pEventData))
34460 {
34461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34462 "%s: Invalid parameters", __func__);
34463 WDI_ASSERT(0);
34464 return WDI_STATUS_E_FAILURE;
34465 }
34466
34467 wdiEXTScanSetBSSIDHotlistRspCb =
34468 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34469 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34470 {
34471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34472 "%s: Callback function Invalid", __func__);
34473 WDI_ASSERT(0);
34474 return WDI_STATUS_E_FAILURE;
34475 }
34476
34477 wdiEXTScanSetBSSIDHotlistRspCb(
34478 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34479
34480 return WDI_STATUS_SUCCESS;
34481}
34482
34483/**
34484 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34485 when a response is being received over the bus from HAL)
34486
34487 @param pWDICtx: pointer to the WLAN DAL context
34488 pEventData: pointer to the event information structure
34489
34490 @see
34491 @return Result of the function call
34492*/
34493WDI_Status
34494WDI_ProcessEXTScanResetHotlistBSSIDRsp
34495(
34496 WDI_ControlBlockType* pWDICtx,
34497 WDI_EventInfoType* pEventData
34498)
34499{
34500 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34501
34502 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34503 "%s: %d ",__func__, __LINE__);
34504
34505
34506 /*-------------------------------------------------------------------------
34507 Sanity check
34508 -------------------------------------------------------------------------*/
34509 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34510 ( NULL == pEventData->pEventData))
34511 {
34512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34513 "%s: Invalid parameters", __func__);
34514 WDI_ASSERT(0);
34515 return WDI_STATUS_E_FAILURE;
34516 }
34517
34518 wdiEXTScanResetBSSIDHotlistRspCb =
34519 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34520 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34521 {
34522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34523 "%s: Callback function Invalid", __func__);
34524 WDI_ASSERT(0);
34525 return WDI_STATUS_E_FAILURE;
34526 }
34527
34528 wdiEXTScanResetBSSIDHotlistRspCb(
34529 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34530
34531 return WDI_STATUS_SUCCESS;
34532}
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053034533
34534/**
34535 @brief Process Extended Scan Set hotlist SSID Rsp function (called when a
34536 response is being received over the bus from HAL)
34537
34538 @param pWDICtx: pointer to the WLAN DAL context
34539 pEventData: pointer to the event information structure
34540
34541 @see
34542 @return Result of the function call
34543*/
34544WDI_Status
34545WDI_ProcessEXTScanSetHotlistSSIDRsp
34546(
34547 WDI_ControlBlockType* pWDICtx,
34548 WDI_EventInfoType* pEventData
34549)
34550{
34551 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
34552
34553 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34554 "%s: %d ",__func__, __LINE__);
34555
34556
34557 /*-------------------------------------------------------------------------
34558 Sanity check
34559 -------------------------------------------------------------------------*/
34560 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34561 ( NULL == pEventData->pEventData))
34562 {
34563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34564 "%s: Invalid parameters", __func__);
34565 WDI_ASSERT(0);
34566 return WDI_STATUS_E_FAILURE;
34567 }
34568
34569 wdiEXTScanSetSSIDHotlistRspCb =
34570 (WDI_EXTScanSetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34571 if ( NULL == wdiEXTScanSetSSIDHotlistRspCb)
34572 {
34573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34574 "%s: Callback function Invalid", __func__);
34575 WDI_ASSERT(0);
34576 return WDI_STATUS_E_FAILURE;
34577 }
34578
34579 wdiEXTScanSetSSIDHotlistRspCb(
34580 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34581
34582 return WDI_STATUS_SUCCESS;
34583}
34584
34585
34586/**
34587 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34588 when a response is being received over the bus from HAL)
34589
34590 @param pWDICtx: pointer to the WLAN DAL context
34591 pEventData: pointer to the event information structure
34592
34593 @see
34594 @return Result of the function call
34595*/
34596WDI_Status
34597WDI_ProcessEXTScanResetHotlistSSIDRsp
34598(
34599 WDI_ControlBlockType* pWDICtx,
34600 WDI_EventInfoType* pEventData
34601)
34602{
34603 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34604
34605 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34606 "%s: %d ",__func__, __LINE__);
34607
34608
34609 /*-------------------------------------------------------------------------
34610 Sanity check
34611 -------------------------------------------------------------------------*/
34612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34613 ( NULL == pEventData->pEventData))
34614 {
34615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34616 "%s: Invalid parameters", __func__);
34617 WDI_ASSERT(0);
34618 return WDI_STATUS_E_FAILURE;
34619 }
34620
34621 wdiEXTScanResetSSIDHotlistRspCb =
34622 (WDI_EXTScanResetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34623 if ( NULL == wdiEXTScanResetSSIDHotlistRspCb)
34624 {
34625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34626 "%s: Callback function Invalid", __func__);
34627 WDI_ASSERT(0);
34628 return WDI_STATUS_E_FAILURE;
34629 }
34630
34631 wdiEXTScanResetSSIDHotlistRspCb(
34632 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34633
34634 return WDI_STATUS_SUCCESS;
34635}
Dino Mycle41bdc942014-06-10 11:30:24 +053034636#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034637
34638/**
34639 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34640
34641 @param None
34642
34643 @see
34644
34645 @return Status of the request
34646*/
34647WDI_Status
34648WDI_SetSpoofMacAddrReq
34649(
34650 WDI_SpoofMacAddrInfoType* pWdiReq,
34651 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34652 void* pUserData)
34653{
34654 WDI_EventInfoType wdiEventData;
34655
34656 /*-------------------------------------------------------------------------
34657 Sanity Check
34658 ------------------------------------------------------------------------*/
34659 if (eWLAN_PAL_FALSE == gWDIInitialized)
34660 {
34661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34662 "WDI API call before module is initialized - Fail request!");
34663
34664 return WDI_STATUS_E_NOT_ALLOWED;
34665 }
34666
34667 /*-------------------------------------------------------------------------
34668 Fill in Event data and post to the Main FSM
34669 ------------------------------------------------------------------------*/
34670 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34671 wdiEventData.pEventData = pWdiReq;
34672 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34673 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34674 wdiEventData.pUserData = pUserData;
34675
34676 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34677}
34678
34679/**
34680 @brief Process SpoofMacAddr Request
34681
34682 @param pWDICtx: pointer to the WLAN DAL context
34683 pEventData: pointer to the event information structure
34684
34685 @see
34686 @return Result of the function call
34687*/
34688WDI_Status
34689WDI_ProcessSpoofMacAddrReq
34690(
34691 WDI_ControlBlockType* pWDICtx,
34692 WDI_EventInfoType* pEventData
34693)
34694{
34695 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34696 wpt_uint8* pSendBuffer = NULL;
34697 wpt_uint16 usDataOffset = 0;
34698 wpt_uint16 usSendSize = 0;
34699 WDI_Status wdiStatus;
34700 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34701 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34702
34703
34704 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34705 "%s: %d Enter",__func__, __LINE__);
34706
34707 /*-------------------------------------------------------------------------
34708 Sanity check
34709 -------------------------------------------------------------------------*/
34710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34711 ( NULL == pEventData->pEventData))
34712 {
34713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34714 "%s: Invalid parameters", __func__);
34715 WDI_ASSERT(0);
34716 return WDI_STATUS_E_FAILURE;
34717 }
34718 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34719
34720 /*-----------------------------------------------------------------------
34721 Get message buffer
34722 -----------------------------------------------------------------------*/
34723 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34724 WDI_SPOOF_MAC_ADDR_REQ,
34725 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34726 &pSendBuffer, &usDataOffset, &usSendSize))||
34727 (usSendSize < (usDataOffset +
34728 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34729 {
34730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34731 "Unable to get send buffer in Process Spoof Mac Addr Req");
34732 WDI_ASSERT(0);
34733 return WDI_STATUS_E_FAILURE;
34734 }
34735
34736 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34737 wdiSpoofMacAddr->macAddr,
34738 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34739
34740 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34741
34742 wpalMemoryCopy( pSendBuffer+usDataOffset,
34743 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34744 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34745
34746 /*-------------------------------------------------------------------------
34747 Send Suspend Request to HAL
34748 -------------------------------------------------------------------------*/
34749 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34750 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34751
34752 return wdiStatus;
34753}
34754
34755/**
34756 @brief Process Spoof Mac Address Rsp function
34757 (called when a response is being received over the bus from HAL)
34758
34759 @param pWDICtx: pointer to the WLAN DAL context
34760 pEventData: pointer to the event information structure
34761
34762 @see
34763 @return Result of the function call
34764*/
34765WDI_Status
34766WDI_ProcessSpoofMacAddrRsp
34767(
34768 WDI_ControlBlockType* pWDICtx,
34769 WDI_EventInfoType* pEventData
34770)
34771{
34772 tMacSpoofedScanResp halRsp;
34773 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34774 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34775
34776 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34777 "%s: %d Enter",__func__, __LINE__);
34778
34779 /*-------------------------------------------------------------------------
34780 Sanity check
34781 -------------------------------------------------------------------------*/
34782 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34783 ( NULL == pEventData->pEventData))
34784 {
34785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34786 "%s: Invalid parameters", __func__);
34787 WDI_ASSERT(0);
34788 return WDI_STATUS_E_FAILURE;
34789 }
34790 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34791
34792 /*-------------------------------------------------------------------------
34793 Extract response and send it to UMAC
34794 -------------------------------------------------------------------------*/
34795 wpalMemoryCopy( &halRsp,
34796 pEventData->pEventData, sizeof(halRsp));
34797
34798 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34799
34800 /*Notify UMAC*/
34801 wdiSpoofMacAddrRspCb(
34802 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34803
34804 return WDI_STATUS_SUCCESS;
34805}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034806
34807/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034808 @brief Process Get Frame Log Rsp function
34809 (called when a response is being received over the bus from HAL)
34810
34811 @param pWDICtx: pointer to the WLAN DAL context
34812 pEventData: pointer to the event information structure
34813
34814 @see
34815 @return Result of the function call
34816*/
34817WDI_Status
34818WDI_ProcessGetFrameLogRsp
34819(
34820 WDI_ControlBlockType* pWDICtx,
34821 WDI_EventInfoType* pEventData
34822)
34823{
34824 tGetFrameLogResp halRsp;
34825 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34826 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34827
34828 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34829 "%s: %d Enter",__func__, __LINE__);
34830
34831 /*-------------------------------------------------------------------------
34832 Sanity check
34833 -------------------------------------------------------------------------*/
34834 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34835 ( NULL == pEventData->pEventData))
34836 {
34837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34838 "%s: Invalid parameters", __func__);
34839 WDI_ASSERT(0);
34840 return WDI_STATUS_E_FAILURE;
34841 }
34842
34843 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34844
34845 /*-------------------------------------------------------------------------
34846 Extract response and send it to UMAC
34847 -------------------------------------------------------------------------*/
34848 wpalMemoryCopy( &halRsp,
34849 pEventData->pEventData, sizeof(halRsp));
34850
34851 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34852
34853 /*Notify UMAC*/
34854 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34855
34856 return WDI_STATUS_SUCCESS;
34857}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053034858
34859/**
34860 @brief Process RssiMonitorStartReq Request
34861
34862 @param pWDICtx: pointer to the WLAN DAL context
34863 pEventData: pointer to the event information structure
34864
34865 @see
34866 @return Result of the function call
34867*/
34868WDI_Status
34869WDI_ProcessRssiMonitorStartReq
34870(
34871 WDI_ControlBlockType* pWDICtx,
34872 WDI_EventInfoType* pEventData
34873)
34874{
34875 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
34876 wpt_uint8* pSendBuffer = NULL;
34877 wpt_uint16 usDataOffset = 0;
34878 wpt_uint16 usSendSize = 0;
34879 WDI_Status wdiStatus;
34880 tHalStartRssimonitoringReq halStartRssiMonitorReq;
34881 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
34882
34883
34884 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34885 "%s: %d Enter",__func__, __LINE__);
34886
34887 /*-------------------------------------------------------------------------
34888 Sanity check
34889 ------------------------------------------------------------------------*/
34890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34891 ( NULL == pEventData->pEventData))
34892 {
34893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34894 "%s: Invalid parameters", __func__);
34895 WDI_ASSERT(0);
34896 return WDI_STATUS_E_FAILURE;
34897 }
34898
34899 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34900
34901 /*-----------------------------------------------------------------------
34902 Get message buffer
34903 -----------------------------------------------------------------------*/
34904 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34905 WDI_START_RSSI_MONITOR_REQ,
34906 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
34907 &pSendBuffer, &usDataOffset, &usSendSize))||
34908 (usSendSize < (usDataOffset +
34909 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
34910 {
34911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34912 "Unable to get send buffer in GetFrameLog Req");
34913 WDI_ASSERT(0);
34914 return WDI_STATUS_E_FAILURE;
34915 }
34916
34917 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
34918 wdiRssiMonitorStartReq->requestId;
34919
34920 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
34921 wdiRssiMonitorStartReq->minRssi;
34922
34923 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
34924 wdiRssiMonitorStartReq->maxRssi;
34925 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
34926 &(wdiRssiMonitorStartReq->currentBssId),
34927 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
34928
34929 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
34930
34931 wpalMemoryCopy(pSendBuffer+usDataOffset,
34932 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
34933 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
34934
34935 /*-------------------------------------------------------------------------
34936 Send Suspend Request to HAL
34937 ------------------------------------------------------------------------*/
34938 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34939 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
34940
34941 return wdiStatus;
34942}
34943
34944
34945/**
34946 @brief Process FWLoggingInit Request
34947
34948 @param pWDICtx: pointer to the WLAN DAL context
34949 pEventData: pointer to the event information structure
34950
34951 @see
34952 @return Result of the function call
34953*/
34954WDI_Status
34955WDI_ProcessRssiMonitorStopReq
34956(
34957 WDI_ControlBlockType* pWDICtx,
34958 WDI_EventInfoType* pEventData
34959)
34960{
34961 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
34962 wpt_uint8* pSendBuffer = NULL;
34963 wpt_uint16 usDataOffset = 0;
34964 wpt_uint16 usSendSize = 0;
34965 WDI_Status wdiStatus;
34966 tHalStopRssimonitoringReq halStopRssiMonitorReq;
34967 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
34968
34969
34970 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34971 "%s: %d Enter",__func__, __LINE__);
34972
34973 /*-------------------------------------------------------------------------
34974 Sanity check
34975 ------------------------------------------------------------------------*/
34976 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34977 ( NULL == pEventData->pEventData))
34978 {
34979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34980 "%s: Invalid parameters", __func__);
34981 WDI_ASSERT(0);
34982 return WDI_STATUS_E_FAILURE;
34983 }
34984 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34985
34986 /*-----------------------------------------------------------------------
34987 Get message buffer
34988 -----------------------------------------------------------------------*/
34989 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34990 WDI_STOP_RSSI_MONITOR_REQ,
34991 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
34992 &pSendBuffer, &usDataOffset, &usSendSize))||
34993 (usSendSize < (usDataOffset +
34994 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
34995 {
34996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34997 "Unable to get send buffer in GetFrameLog Req");
34998 WDI_ASSERT(0);
34999 return WDI_STATUS_E_FAILURE;
35000 }
35001
35002 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
35003 wdiRssiMonitorStopReq->requestId;
35004
35005 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
35006 &(wdiRssiMonitorStopReq->currentBssId),
35007 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
35008
35009 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
35010
35011 wpalMemoryCopy(pSendBuffer+usDataOffset,
35012 &halStopRssiMonitorReq.stopRssiMonitoringParams,
35013 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
35014
35015 /*-------------------------------------------------------------------------
35016 Send Suspend Request to HAL
35017 ------------------------------------------------------------------------*/
35018 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35019 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
35020
35021 return wdiStatus;
35022}
35023
35024/**
35025 @brief Process MgmtFrame Logging Init Rsp function
35026 (called when a response is being received over the bus from HAL)
35027
35028 @param pWDICtx: pointer to the WLAN DAL context
35029 pEventData: pointer to the event information structure
35030
35031 @see
35032 @return Result of the function call
35033*/
35034WDI_Status
35035WDI_ProcessRssiMonitorStopRsp
35036(
35037 WDI_ControlBlockType* pWDICtx,
35038 WDI_EventInfoType* pEventData
35039)
35040{
35041 tHalStopRssimonitoringRspParams halRsp;
35042 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
35043 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
35044
35045 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35046 "%s: %d Enter",__func__, __LINE__);
35047
35048 /*-------------------------------------------------------------------------
35049 Sanity check
35050 -------------------------------------------------------------------------*/
35051 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35052 ( NULL == pEventData->pEventData))
35053 {
35054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35055 "%s: Invalid parameters", __func__);
35056 WDI_ASSERT(0);
35057 return WDI_STATUS_E_FAILURE;
35058 }
35059 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35060
35061 /*-------------------------------------------------------------------------
35062 Extract response and send it to UMAC
35063 -------------------------------------------------------------------------*/
35064 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35065
35066 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35067
35068 /*Notify UMAC*/
35069 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
35070
35071 return WDI_STATUS_SUCCESS;
35072}
35073
35074
35075/**
35076 @brief Process MgmtFrame Logging Init Rsp function
35077 (called when a response is being received over the bus from HAL)
35078
35079 @param pWDICtx: pointer to the WLAN DAL context
35080 pEventData: pointer to the event information structure
35081
35082 @see
35083 @return Result of the function call
35084*/
35085WDI_Status
35086WDI_ProcessRssiMonitorStartRsp
35087(
35088 WDI_ControlBlockType* pWDICtx,
35089 WDI_EventInfoType* pEventData
35090)
35091{
35092 tHalStartRssimonitoringRspParams halRsp;
35093 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
35094 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
35095
35096 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35097 "%s: %d Enter",__func__, __LINE__);
35098
35099 /*-------------------------------------------------------------------------
35100 Sanity check
35101 -------------------------------------------------------------------------*/
35102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35103 ( NULL == pEventData->pEventData))
35104 {
35105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35106 "%s: Invalid parameters", __func__);
35107 WDI_ASSERT(0);
35108 return WDI_STATUS_E_FAILURE;
35109 }
35110 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35111
35112 /*-------------------------------------------------------------------------
35113 Extract response and send it to UMAC
35114 -------------------------------------------------------------------------*/
35115 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35116
35117 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35118
35119 /*Notify UMAC*/
35120 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
35121
35122 return WDI_STATUS_SUCCESS;
35123}
35124
Siddharth Bhal64246172015-02-27 01:04:37 +053035125/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035126 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053035127
35128 @param pWDICtx: pointer to the WLAN DAL context
35129 pEventData: pointer to the event information structure
35130
35131 @see
35132 @return Result of the function call
35133*/
35134WDI_Status
35135WDI_ProcessGetFrameLogReq
35136(
35137 WDI_ControlBlockType* pWDICtx,
35138 WDI_EventInfoType* pEventData
35139)
35140{
35141 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
35142 wpt_uint8* pSendBuffer = NULL;
35143 wpt_uint16 usDataOffset = 0;
35144 wpt_uint16 usSendSize = 0;
35145 WDI_Status wdiStatus;
35146 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035147 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053035148
35149
35150 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35151 "%s: %d Enter",__func__, __LINE__);
35152
35153 /*-------------------------------------------------------------------------
35154 Sanity check
35155 ------------------------------------------------------------------------*/
35156 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35157 ( NULL == pEventData->pEventData))
35158 {
35159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35160 "%s: Invalid parameters", __func__);
35161 WDI_ASSERT(0);
35162 return WDI_STATUS_E_FAILURE;
35163 }
35164
35165 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
35166
35167 /*-----------------------------------------------------------------------
35168 Get message buffer
35169 -----------------------------------------------------------------------*/
35170 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35171 WDI_GET_FRAME_LOG_REQ,
35172 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
35173 &pSendBuffer, &usDataOffset, &usSendSize))||
35174 (usSendSize < (usDataOffset +
35175 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
35176 {
35177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35178 "Unable to get send buffer in GetFrameLog Req");
35179 WDI_ASSERT(0);
35180 return WDI_STATUS_E_FAILURE;
35181 }
35182
35183 halGetFrameLogReq.tGetFrameLogReqParams.flags =
35184 wdiGetFrameLogReq->flags;
35185
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035186 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053035187
35188 wpalMemoryCopy( pSendBuffer+usDataOffset,
35189 &halGetFrameLogReq.tGetFrameLogReqParams,
35190 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
35191
35192 /*-------------------------------------------------------------------------
35193 Send Suspend Request to HAL
35194 ------------------------------------------------------------------------*/
35195 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35196 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
35197
35198 return wdiStatus;
35199}
35200/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035201 @brief Process MgmtFrame Logging Init Rsp function
35202 (called when a response is being received over the bus from HAL)
35203
35204 @param pWDICtx: pointer to the WLAN DAL context
35205 pEventData: pointer to the event information structure
35206
35207 @see
35208 @return Result of the function call
35209*/
35210WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035211WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035212(
35213 WDI_ControlBlockType* pWDICtx,
35214 WDI_EventInfoType* pEventData
35215)
35216{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035217 tFWLoggingInitResp halRsp;
35218 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
35219 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035220
35221 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35222 "%s: %d Enter",__func__, __LINE__);
35223
35224 /*-------------------------------------------------------------------------
35225 Sanity check
35226 -------------------------------------------------------------------------*/
35227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35228 ( NULL == pEventData->pEventData))
35229 {
35230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35231 "%s: Invalid parameters", __func__);
35232 WDI_ASSERT(0);
35233 return WDI_STATUS_E_FAILURE;
35234 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035235 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035236
35237 /*-------------------------------------------------------------------------
35238 Extract response and send it to UMAC
35239 -------------------------------------------------------------------------*/
35240 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35241
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035242 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053035243 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035244
35245 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035246 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035247
35248 return WDI_STATUS_SUCCESS;
35249}
35250
c_manjeecfd1efb2015-09-25 19:32:34 +053035251/**
35252 @brief Process Fwr Mem Dump Rsp function
35253 (called when a response is being received over the bus from HAL)
35254
35255 @param pWDICtx: pointer to the WLAN DAL context
35256 pEventData: pointer to the event information structure
35257
35258 @see
35259 @return Result of the function call
35260*/
35261WDI_Status
35262 WDI_ProcessFwrMemDumpRsp
35263
35264(
35265 WDI_ControlBlockType* pWDICtx,
35266 WDI_EventInfoType* pEventData
35267)
35268{
35269 tHalFwMemoryDumpRespMsg halRsp;
35270 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35271 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
35272
35273 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35274 "%s: %d Enter",__func__, __LINE__);
35275
35276 /*-------------------------------------------------------------------------
35277 Sanity check
35278 -------------------------------------------------------------------------*/
35279 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35280 ( NULL == pEventData->pEventData))
35281 {
35282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35283 "%s: Invalid parameters", __func__);
35284 WDI_ASSERT(0);
35285 return WDI_STATUS_E_FAILURE;
35286 }
35287 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
35288
35289 /*-------------------------------------------------------------------------
35290 Extract response and send it to UMAC
35291 -------------------------------------------------------------------------*/
35292 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp));
35293
35294 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
35295
35296 /*Notify UMAC*/
35297 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
35298
35299 return WDI_STATUS_SUCCESS;
35300}
35301
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035302WDI_Status
35303WDI_ProcessFWLoggingDXEdoneInd
35304(
35305 WDI_ControlBlockType* pWDICtx,
35306 WDI_EventInfoType* pEventData
35307)
35308{
35309 wpt_uint8* pSendBuffer = NULL;
35310 wpt_uint16 usDataOffset = 0;
35311 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035312 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053035313 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035314 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035315 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035316
35317
35318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35319
35320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35321 "%s", __func__);
35322
35323 /*-------------------------------------------------------------------------
35324 Sanity check
35325 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035326 if (NULL == pEventData ||
35327 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035328 {
35329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35330 "%s: Invalid parameters", __func__);
35331 WDI_ASSERT(0);
35332 return WDI_STATUS_E_FAILURE;
35333 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035334 pLogType = (wpt_uint32 *)pEventData->pEventData;
35335
Mihir Shete5affadc2015-05-29 20:54:57 +053035336 pLoggingSession = (WDI_DS_LoggingSessionType *)
35337 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
35338 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035339 /*-----------------------------------------------------------------------
35340 Get message buffer
35341 -----------------------------------------------------------------------*/
35342
35343 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35344 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053035345 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035346 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053035347 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035348 {
35349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35350 "Unable to get send buffer in RTS CTS ind %p ",
35351 pEventData);
35352 WDI_ASSERT(0);
35353 return WDI_STATUS_E_FAILURE;
35354 }
35355 FWLoggingDxeDoneIndParams =
35356 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
35357
35358 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053035359 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035360 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053035361
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053035362 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035363 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053035364
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035365 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053035366 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035367 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
35368
35369 pWDICtx->pReqStatusUserData = NULL;
35370 pWDICtx->pfncRspCB = NULL;
35371 /*-------------------------------------------------------------------------
35372 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
35373 -------------------------------------------------------------------------*/
35374 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35375 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35376}
35377
Sachin Ahuja715aafc2015-07-21 23:35:10 +053035378
35379/**
35380 @brief Process Fatal Event Logs Rsp function
35381 (called when a response is being received over the bus from HAL)
35382
35383 @param pWDICtx: pointer to the WLAN DAL context
35384 pEventData: pointer to the event information structure
35385
35386 @see
35387 @return Result of the function call
35388*/
35389WDI_Status
35390WDI_ProcessFatalEventLogsRsp
35391(
35392 WDI_ControlBlockType* pWDICtx,
35393 WDI_EventInfoType* pEventData
35394)
35395{
35396 tHalFatalEventLoggingRspParams halRsp;
35397 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35398 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
35399
35400 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35401 "%s: %d Enter",__func__, __LINE__);
35402
35403 /*-------------------------------------------------------------------------
35404 Sanity check
35405 -------------------------------------------------------------------------*/
35406 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35407 ( NULL == pEventData->pEventData))
35408 {
35409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35410 "%s: Invalid parameters", __func__);
35411 WDI_ASSERT(0);
35412 return WDI_STATUS_E_FAILURE;
35413 }
35414 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
35415
35416 /*-------------------------------------------------------------------------
35417 Extract response and send it to UMAC
35418 -------------------------------------------------------------------------*/
35419 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35420
35421 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
35422
35423 /*Notify UMAC*/
35424 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
35425 pWDICtx->pRspCBUserData);
35426
35427 return WDI_STATUS_SUCCESS;
35428}
35429
35430/**
35431 @brief Process FatalEventLogs Request
35432
35433 @param pWDICtx: pointer to the WLAN DAL context
35434 pEventData: pointer to the event information structure
35435
35436 @see
35437 @return Result of the function call
35438*/
35439
35440WDI_Status
35441WDI_ProcessFatalEventLogsReq
35442
35443(
35444 WDI_ControlBlockType* pWDICtx,
35445 WDI_EventInfoType* pEventData
35446)
35447{
35448 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
35449 wpt_uint8* pSendBuffer = NULL;
35450 wpt_uint16 usDataOffset = 0;
35451 wpt_uint16 usSendSize = 0;
35452 WDI_Status wdiStatus;
35453 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
35454 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35455
35456
35457 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35458 "%s: %d Enter",__func__, __LINE__);
35459
35460 /*-------------------------------------------------------------------------
35461 Sanity check
35462 ------------------------------------------------------------------------*/
35463 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35464 ( NULL == pEventData->pEventData))
35465 {
35466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35467 "%s: Invalid parameters", __func__);
35468 WDI_ASSERT(0);
35469 return WDI_STATUS_E_FAILURE;
35470 }
35471 wdiFatalEventLogsReq =
35472 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
35473
35474 /*-----------------------------------------------------------------------
35475 Get message buffer
35476 -----------------------------------------------------------------------*/
35477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35478 WDI_FATAL_EVENT_LOGGING_REQ,
35479 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
35480 &pSendBuffer, &usDataOffset, &usSendSize))||
35481 (usSendSize < (usDataOffset +
35482 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
35483 {
35484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35485 "Unable to get send buffer in Fatal Event Req");
35486 WDI_ASSERT(0);
35487 return WDI_STATUS_E_FAILURE;
35488 }
35489 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
35490 wdiFatalEventLogsReq->reason_code;
35491
35492 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
35493
35494 wpalMemoryCopy( pSendBuffer+usDataOffset,
35495 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
35496 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
35497
35498 /*-------------------------------------------------------------------------
35499 Send Mgmt Logging Init Request to HAL
35500 ------------------------------------------------------------------------*/
35501 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35502 wdiFatalEventLogsRspCb, pEventData->pUserData,
35503 WDI_FATAL_EVENT_LOGGING_RSP);
35504
35505 return wdiStatus;
35506
35507
35508}
35509
35510
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035511/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035512 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035513
35514 @param pWDICtx: pointer to the WLAN DAL context
35515 pEventData: pointer to the event information structure
35516
35517 @see
35518 @return Result of the function call
35519*/
35520WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035521WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035522(
35523 WDI_ControlBlockType* pWDICtx,
35524 WDI_EventInfoType* pEventData
35525)
35526{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035527 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035528 wpt_uint8* pSendBuffer = NULL;
35529 wpt_uint16 usDataOffset = 0;
35530 wpt_uint16 usSendSize = 0;
35531 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035532 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
35533 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035534
35535
35536 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35537 "%s: %d Enter",__func__, __LINE__);
35538
35539 /*-------------------------------------------------------------------------
35540 Sanity check
35541 ------------------------------------------------------------------------*/
35542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35543 ( NULL == pEventData->pEventData))
35544 {
35545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35546 "%s: Invalid parameters", __func__);
35547 WDI_ASSERT(0);
35548 return WDI_STATUS_E_FAILURE;
35549 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035550 wdiFWLoggingInitReq =
35551 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035552
35553 /*-----------------------------------------------------------------------
35554 Get message buffer
35555 -----------------------------------------------------------------------*/
35556 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035557 WDI_FW_LOGGING_INIT_REQ,
35558 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035559 &pSendBuffer, &usDataOffset, &usSendSize))||
35560 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035561 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035562 {
35563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35564 "Unable to get send buffer in Process Mgmt Logging Init Req");
35565 WDI_ASSERT(0);
35566 return WDI_STATUS_E_FAILURE;
35567 }
35568
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035569 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
35570 wdiFWLoggingInitReq->enableFlag;
35571 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
35572 wdiFWLoggingInitReq->frameSize;
35573 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
35574 wdiFWLoggingInitReq->frameType;
35575 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
35576 wdiFWLoggingInitReq->bufferMode;
35577 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
35578 wdiFWLoggingInitReq->continuousFrameLogging;
35579 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
35580 wdiFWLoggingInitReq->minLogBufferSize;
35581 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
35582 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053035583 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
35584 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
35585 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
35586 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035587
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035588 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035589
35590 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035591 &halFWLoggingInitReq.tFWLoggingInitReqParams,
35592 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035593
35594 /*-------------------------------------------------------------------------
35595 Send Mgmt Logging Init Request to HAL
35596 ------------------------------------------------------------------------*/
35597 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035598 wdiFWLoggingInitRspCb, pEventData->pUserData,
35599 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035600
35601 return wdiStatus;
35602}
35603
35604/**
c_manjeecfd1efb2015-09-25 19:32:34 +053035605 @brief Process FwrMemDumpReq Request
35606
35607 @param pWDICtx: pointer to the WLAN DAL context
35608 pEventData: pointer to the event information structure
35609
35610 @see
35611 @return Result of the function call
35612*/
35613WDI_Status
35614 WDI_ProcessFwrMemDumpReq
35615
35616(
35617 WDI_ControlBlockType* pWDICtx,
35618 WDI_EventInfoType* pEventData
35619)
35620{
35621 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
35622 wpt_uint8* pSendBuffer = NULL;
35623 wpt_uint16 usDataOffset = 0;
35624 wpt_uint16 usSendSize = 0;
35625 WDI_Status wdiStatus;
35626 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
35627 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35628
35629 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35630 "%s: %d Enter",__func__, __LINE__);
35631
35632 /*-------------------------------------------------------------------------
35633 Sanity check
35634 ------------------------------------------------------------------------*/
35635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35636 ( NULL == pEventData->pEventData))
35637 {
35638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35639 "%s: Invalid parameters", __func__);
35640 WDI_ASSERT(0);
35641 return WDI_STATUS_E_FAILURE;
35642 }
35643
35644 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
35645
35646 /*-----------------------------------------------------------------------
35647 Get message buffer
35648 -----------------------------------------------------------------------*/
35649 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35650 WDI_FWR_MEM_DUMP_REQ,
35651 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
35652 &pSendBuffer, &usDataOffset, &usSendSize))||
35653 (usSendSize < (usDataOffset +
35654 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
35655 {
35656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35657 "Unable to get send buffer in Process Fwr Mem Dump Req");
35658 WDI_ASSERT(0);
35659 return WDI_STATUS_E_FAILURE;
35660 }
35661
35662 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
35663 wpalMemoryCopy( pSendBuffer+usDataOffset,
35664 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
35665 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
35666
35667 /*-------------------------------------------------------------------------
35668 Send Fwr Mem Dump Request to HAL
35669 ------------------------------------------------------------------------*/
35670 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35671 wdiFwrMemDumpRspCb, pEventData->pUserData,
35672 WDI_FWR_MEM_DUMP_RSP);
35673 return wdiStatus;
35674}
35675
35676/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053035677 @brief WDI_EncryptMsgReq
35678
35679 @param pwdiEncryptMsgParams: Req parameter for the FW
35680 wdiEncryptMsgCbRsp: callback for passing back the response
35681 of the Req operation received from the device
35682 pUserData: user data will be passed back with the callback
35683
35684 @return SUCCESS or FAIL
35685*/
35686WDI_Status
35687WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
35688 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
35689 void* pUserData)
35690{
35691 WDI_EventInfoType wdiEventData;
35692
35693 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35694 "%s: %d Enter" ,__func__, __LINE__);
35695 /*------------------------------------------------------------------------
35696 Sanity Check
35697 ------------------------------------------------------------------------*/
35698 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35699 {
35700 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35701 "WDI API call before module is initialized - Fail request");
35702
35703 return WDI_STATUS_E_NOT_ALLOWED;
35704 }
35705
35706 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
35707 wdiEventData.pEventData = pwdiEncryptMsgParams;
35708 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
35709 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
35710 wdiEventData.pUserData = pUserData;
35711
35712 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35713}
35714
35715/*
35716 * FUNCTION: WDI_ProcessEncryptMsgReq
35717 * Request to WDI to encrypt the given message.
35718 *
35719 * @param pWDICtx: pointer to the WLAN DAL context
35720 * pEventData: pointer to the event information structure
35721 *
35722 * @return Result of the function call
35723 */
35724
35725WDI_Status
35726WDI_ProcessEncryptMsgReq
35727(
35728 WDI_ControlBlockType* pWDICtx,
35729 WDI_EventInfoType* pEventData
35730)
35731{
35732 wpt_uint8* pSendBuffer = NULL;
35733 wpt_uint16 usDataOffset = 0;
35734 wpt_uint16 usSendSize = 0;
35735 WDI_EncryptMsgRspCb* wdiEncMsgCb;
35736 tSetEncryptedDataParams *pHalEncryptDataReq;
35737 wpt_pkt80211 *pkt = NULL;
35738
35739 /*-------------------------------------------------------------------------
35740 Sanity check
35741 -------------------------------------------------------------------------*/
35742 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
35743 ( NULL == pEventData->pCBfnc ) )
35744 {
35745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35746 "%s: Invalid parameters", __func__);
35747 WDI_ASSERT(0);
35748 return WDI_STATUS_E_FAILURE;
35749 }
35750
35751 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
35752
35753 /*-----------------------------------------------------------------------
35754 Get message buffer
35755 -----------------------------------------------------------------------*/
35756 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35757 pWDICtx, WDI_ENCRYPT_MSG_REQ,
35758 sizeof(tSetEncryptedDataReqMsg),
35759 &pSendBuffer, &usDataOffset, &usSendSize)) ||
35760 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
35761 {
35762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35763 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
35764 pEventData);
35765 WDI_ASSERT(0);
35766 return WDI_STATUS_E_FAILURE;
35767 }
35768
35769 pWDICtx->wdiReqStatusCB = NULL;
35770 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35771 pkt = (wpt_pkt80211 *)pEventData->pEventData;
35772
35773 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
35774 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
35775
35776 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
35777
35778 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
35779 pkt->encParams.keyParams.key[0].keyId;
35780
35781 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
35782 &pkt->encParams.keyParams.key[0].key[0], 16);
35783
35784 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
35785
35786 pHalEncryptDataReq->data.length = pkt->data.length;
35787 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
35788
35789 /*-------------------------------------------------------------------------
35790 Send Get STA Request to HAL
35791 -------------------------------------------------------------------------*/
35792 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
35793 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
35794}
35795
35796/*
35797 * FUNCTION: WDI_ProcessEncryptMsgRsp
35798 * Receives the encrypted message from the firmware
35799 * @param pWDICtx: pointer to the WLAN DAL context
35800 * pEventData: pointer to the event information structure
35801 *
35802 * @return Result of the function call
35803 */
35804WDI_Status
35805WDI_ProcessEncryptMsgRsp
35806(
35807 WDI_ControlBlockType* pWDICtx,
35808 WDI_EventInfoType* pEventData
35809)
35810{
35811 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
35812 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
35813
35814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35815 "In %s",__func__);
35816
35817 /*-------------------------------------------------------------------------
35818 Sanity check
35819 -------------------------------------------------------------------------*/
35820 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35821 ( NULL == pEventData->pEventData))
35822 {
35823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35824 "%s: Invalid parameters", __func__);
35825 WDI_ASSERT(0);
35826 return WDI_STATUS_E_FAILURE;
35827 }
35828
35829 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35830
35831 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35832
35833 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35834 pEventData->pEventData,
35835 pWDICtx->pRspCBUserData);
35836 return WDI_STATUS_SUCCESS;
35837}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035838
35839WDI_Status
35840WDI_NanRequest
35841(
35842 WDI_NanRequestType *pwdiNanRequest,
35843 void *usrData
35844)
35845{
35846 WDI_EventInfoType wdiEventData;
35847
35848 /*------------------------------------------------------------------------
35849 Sanity Check
35850 ------------------------------------------------------------------------*/
35851 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35852 {
35853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35854 "WDI API call before module is initialized - Fail request");
35855
35856 return WDI_STATUS_E_NOT_ALLOWED;
35857 }
35858
35859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35860 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35861 pwdiNanRequest->request_data_len);
35862
35863 /*------------------------------------------------------------------------
35864 Fill in Event data and post to the Main FSM
35865 ------------------------------------------------------------------------*/
35866 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35867 wdiEventData.pEventData = pwdiNanRequest;
35868 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35869 + pwdiNanRequest->request_data_len;
35870 wdiEventData.pUserData = usrData;
35871 wdiEventData.pCBfnc = NULL;
35872
35873
35874 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35875}
35876
35877WDI_Status
35878WDI_ProcessNanRequest
35879(
35880 WDI_ControlBlockType* pWDICtx,
35881 WDI_EventInfoType* pEventData
35882)
35883{
35884 WDI_NanRequestType *pwdiNanRequest = NULL;
35885 wpt_uint8* pSendBuffer = NULL;
35886 wpt_uint16 usDataOffset = 0;
35887 wpt_uint16 usSendSize = 0;
35888
35889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35890 "WDI_ProcessNanRequest");
35891
35892 /*-------------------------------------------------------------------------
35893 Sanity check
35894 -------------------------------------------------------------------------*/
35895 if (( NULL == pEventData ) ||
35896 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35897 {
35898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35899 "%s: Invalid parameters", __FUNCTION__);
35900 WDI_ASSERT(0);
35901 return WDI_STATUS_E_FAILURE;
35902 }
35903
35904 /*-----------------------------------------------------------------------
35905 Get message buffer
35906 -----------------------------------------------------------------------*/
35907 if (( WDI_STATUS_SUCCESS
35908 != WDI_GetMessageBuffer( pWDICtx,
35909 WDI_NAN_REQUEST,
35910 pwdiNanRequest->request_data_len,
35911 &pSendBuffer,
35912 &usDataOffset,
35913 &usSendSize))||
35914 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35915 {
35916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35917 "Unable to get send buffer in NAN request %p %p",
35918 pEventData, pwdiNanRequest);
35919 WDI_ASSERT(0);
35920 return WDI_STATUS_E_FAILURE;
35921 }
35922
35923 wpalMemoryCopy( pSendBuffer+usDataOffset,
35924 pwdiNanRequest->request_data,
35925 pwdiNanRequest->request_data_len);
35926
35927 pWDICtx->pReqStatusUserData = NULL;
35928 pWDICtx->pfncRspCB = NULL;
35929 vos_mem_free( pEventData->pUserData);
35930
35931 /*-------------------------------------------------------------------------
35932 Send NAN Request to HAL
35933 -------------------------------------------------------------------------*/
35934 return WDI_SendMsg( pWDICtx,
35935 pSendBuffer,
35936 usSendSize,
35937 NULL,
35938 NULL,
35939 WDI_NAN_RESPONSE);
35940}
35941
35942/**
35943 @brief Process NAN Response function (called when a
35944 response is being received over the bus from HAL)
35945
35946 @param pWDICtx: pointer to the WLAN DAL context
35947 pEventData: pointer to the event information structure
35948
35949 @see
35950 @return Result of the function call
35951*/
35952WDI_Status
35953WDI_ProcessNanResponse
35954(
35955 WDI_ControlBlockType* pWDICtx,
35956 WDI_EventInfoType* pEventData
35957)
35958{
35959 WDI_Status wdiStatus;
35960 eHalStatus halStatus;
35961
35962 /*-------------------------------------------------------------------------
35963 Sanity check
35964 -------------------------------------------------------------------------*/
35965 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35966 ( NULL == pEventData->pEventData))
35967 {
35968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35969 "%s: Invalid parameters", __func__);
35970 WDI_ASSERT(0);
35971 return WDI_STATUS_E_FAILURE;
35972 }
35973
35974 halStatus = *((eHalStatus*)pEventData->pEventData);
35975 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
35976
35977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35978 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
35979
35980 return WDI_STATUS_SUCCESS;
35981}/*WDI_ProcessNanResponse*/
35982
35983
35984/**
35985 @brief Process NAN Event function (called when
35986 an indication is being received over the
35987 bus from HAL)
35988
35989 @param pWDICtx: pointer to the WLAN DAL context
35990 pEventData: pointer to the event information structure
35991
35992 @see
35993 @return Result of the function call
35994*/
35995WDI_Status
35996WDI_ProcessNanEvent
35997(
35998 WDI_ControlBlockType* pWDICtx,
35999 WDI_EventInfoType* pEventData
36000)
36001{
36002 WDI_LowLevelIndType wdiInd;
36003
36004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36005
36006 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36007 ( NULL == pEventData->pEventData ))
36008 {
36009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36010 "%s: Invalid parameters", __func__);
36011 WDI_ASSERT( 0 );
36012 return WDI_STATUS_E_FAILURE;
36013 }
36014
36015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36016 "%s: Received NAN event", __func__);
36017 /*-------------------------------------------------------------------------
36018 Extract indication and send it to UMAC
36019 -------------------------------------------------------------------------*/
36020 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
36021 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
36022 pEventData->uEventDataSize;
36023 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
36024 pEventData->pEventData;
36025
36026 /*Notify UMAC*/
36027 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
36028
36029 return WDI_STATUS_SUCCESS;
36030}/*WDI_ProcessNanEvent*/
36031
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036032
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036033WDI_Status
36034WDI_Process_RssiBreachedInd
36035(
36036 WDI_ControlBlockType* pWDICtx,
36037 WDI_EventInfoType* pEventData
36038)
36039{
36040 WDI_LowLevelIndType wdiInd;
36041 tHalRssiMonitorIndParams halRssiBreachedInd;
36042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36043
36044 /*-------------------------------------------------------------------------
36045 Sanity check
36046 -------------------------------------------------------------------------*/
36047 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36048 ( NULL == pEventData->pEventData))
36049 {
36050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36051 "%s: Invalid parameters", __func__);
36052 WDI_ASSERT(0);
36053 return WDI_STATUS_E_FAILURE;
36054 }
36055
36056 /*-------------------------------------------------------------------------
36057 Extract indication and send it to UMAC
36058 -------------------------------------------------------------------------*/
36059 wpalMemoryCopy( &halRssiBreachedInd,
36060 pEventData->pEventData,
36061 sizeof(halRssiBreachedInd));
36062
36063
36064 /*Fill in the indication parameters*/
36065 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
36066 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiRssiBreachedInd,
36067 (void *)&halRssiBreachedInd,
36068 sizeof(WDI_RssiBreachedIndType));
36069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36070 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
36071 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
36072 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
36073 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
36074 /*Notify UMAC*/
36075 if (pWDICtx->wdiLowLevelIndCB)
36076 {
36077 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36078 }
36079
36080 return WDI_STATUS_SUCCESS;
36081
36082}
36083
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036084
36085WDI_Status
36086WDI_Process_LostLinkParamInd
36087(
36088 WDI_ControlBlockType* pWDICtx,
36089 WDI_EventInfoType* pEventData
36090)
36091{
36092 WDI_LowLevelIndType wdiInd;
36093 tHalLostLinkParametersIndParams halLostLinkParamInd;
36094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36095
36096 /*-------------------------------------------------------------------------
36097 Sanity check
36098 -------------------------------------------------------------------------*/
36099 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36100 ( NULL == pEventData->pEventData))
36101 {
36102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36103 "%s: Invalid parameters", __func__);
36104 WDI_ASSERT(0);
36105 return WDI_STATUS_E_FAILURE;
36106 }
36107
36108 /*-------------------------------------------------------------------------
36109 Extract indication and send it to UMAC
36110 -------------------------------------------------------------------------*/
36111 wpalMemoryCopy( (void *)&halLostLinkParamInd,
36112 pEventData->pEventData,
36113 sizeof(tHalLostLinkParametersIndParams));
36114
36115
36116 /*Fill in the indication parameters*/
36117 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
36118 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
36119 (void *)&halLostLinkParamInd,
36120 sizeof(WDI_LostLinkParamsIndType));
36121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36122 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
36123 "linkFlTx : %d,lastDataRate : %d", __func__,
36124 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
36125 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
36126 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
36127 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
36128 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
36129 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
36130 /*Notify UMAC*/
36131 if (pWDICtx->wdiLowLevelIndCB)
36132 {
36133 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36134 }
36135
36136 return WDI_STATUS_SUCCESS;
36137
36138}
36139
Abhishek Singh41988ba2015-05-25 19:42:29 +053036140WDI_Status
36141WDI_ProcessSetRtsCtsHtvhtInd
36142(
36143 WDI_ControlBlockType* pWDICtx,
36144 WDI_EventInfoType* pEventData
36145)
36146{
36147 wpt_uint8* pSendBuffer = NULL;
36148 wpt_uint16 usDataOffset = 0;
36149 wpt_uint16 usSendSize = 0;
36150 wpt_uint32 *rtsCtsVal;
36151 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
36152 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36153
36154
36155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36156
36157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36158 "%s", __func__);
36159
36160 /*-------------------------------------------------------------------------
36161 Sanity check
36162 -------------------------------------------------------------------------*/
36163 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36164 {
36165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36166 "%s: Invalid parameters", __func__);
36167 WDI_ASSERT(0);
36168 return WDI_STATUS_E_FAILURE;
36169 }
36170 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
36171 /*-----------------------------------------------------------------------
36172 Get message buffer
36173 -----------------------------------------------------------------------*/
36174
36175 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36176 WDI_SET_RTS_CTS_HTVHT_IND,
36177 sizeof(tHalRtsCtsHtvhtIndParams),
36178 &pSendBuffer, &usDataOffset, &usSendSize))||
36179 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
36180 {
36181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36182 "Unable to get send buffer in RTS CTS ind %p ",
36183 pEventData);
36184 WDI_ASSERT(0);
36185 return WDI_STATUS_E_FAILURE;
36186 }
36187 rtsCtsHtvhtIndParams =
36188 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
36189 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
36190
36191 pWDICtx->pReqStatusUserData = NULL;
36192 pWDICtx->pfncRspCB = NULL;
36193 /*-------------------------------------------------------------------------
36194 Send SET_RTS_CTS_HTVHT Indication to HAL
36195 -------------------------------------------------------------------------*/
36196 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36197 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36198}
36199
36200WDI_Status
36201WDI_SetRtsCtsHTVhtInd
36202(
36203 wpt_uint32 rtsCtsVal
36204)
36205{
36206 WDI_EventInfoType wdiEventData;
36207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36208
36209 /*------------------------------------------------------------------------
36210 Sanity Check
36211 ------------------------------------------------------------------------*/
36212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36213 {
36214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36215 "WDI API call before module is initialized - Fail request");
36216 return WDI_STATUS_E_NOT_ALLOWED;
36217 }
36218
36219 /*------------------------------------------------------------------------
36220 Fill in Event data and post to the Main FSM
36221 ------------------------------------------------------------------------*/
36222 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
36223 wdiEventData.pEventData = (void *) &rtsCtsVal;
36224 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36225 wdiEventData.pCBfnc = NULL;
36226 wdiEventData.pUserData = NULL;
36227
36228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36229
36230}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053036231
36232WDI_Status
36233WDI_ProcessEnableDisableCAEventInd
36234(
36235 WDI_ControlBlockType* pWDICtx,
36236 WDI_EventInfoType* pEventData
36237)
36238{
36239 wpt_uint8* pSendBuffer = NULL;
36240 wpt_uint16 usDataOffset = 0;
36241 wpt_uint16 usSendSize = 0;
36242 wpt_uint32 *val;
36243 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
36244 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36245
36246
36247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36248
36249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36250 "%s", __func__);
36251
36252 /*-------------------------------------------------------------------------
36253 Sanity check
36254 -------------------------------------------------------------------------*/
36255 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36256 {
36257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36258 "%s: Invalid parameters", __func__);
36259 WDI_ASSERT(0);
36260 return WDI_STATUS_E_FAILURE;
36261 }
36262 val = (wpt_uint32*)pEventData->pEventData;
36263 /*-----------------------------------------------------------------------
36264 Get message buffer
36265 -----------------------------------------------------------------------*/
36266
36267 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36268 WDI_SEND_FREQ_RANGE_CONTROL_IND,
36269 sizeof(tHalAvoidFreqRangeCtrlParam),
36270 &pSendBuffer, &usDataOffset, &usSendSize))||
36271 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
36272 {
36273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36274 "Unable to get send buffer in Channel Avoidance Ind %p ",
36275 pEventData);
36276 WDI_ASSERT(0);
36277 return WDI_STATUS_E_FAILURE;
36278 }
36279 avoidFreqRangeCtrlParam =
36280 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
36281 avoidFreqRangeCtrlParam->status = *val;
36282
36283 pWDICtx->pReqStatusUserData = NULL;
36284 pWDICtx->pfncRspCB = NULL;
36285 /*-------------------------------------------------------------------------
36286 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
36287 -------------------------------------------------------------------------*/
36288 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36289 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36290}
36291
36292WDI_Status
36293WDI_EnableDisableCAEventInd
36294(
36295 wpt_uint32 val
36296)
36297{
36298 WDI_EventInfoType wdiEventData;
36299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36300
36301 /*------------------------------------------------------------------------
36302 Sanity Check
36303 ------------------------------------------------------------------------*/
36304 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36305 {
36306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36307 "WDI API call before module is initialized - Fail request");
36308 return WDI_STATUS_E_NOT_ALLOWED;
36309 }
36310
36311 /*------------------------------------------------------------------------
36312 Fill in Event data and post to the Main FSM
36313 ------------------------------------------------------------------------*/
36314 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
36315 wdiEventData.pEventData = (void *) &val;
36316 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36317 wdiEventData.pCBfnc = NULL;
36318 wdiEventData.pUserData = NULL;
36319
36320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36321
36322} /* WDI_EnableDisableCAEventInd */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053036323
36324/**
36325 @brief WDI_WifiConfigSetReq
36326 This API is called to set WifiConfig params request in FW
36327
36328 @param pwdiWifiConfigSetReqParams : pointer to set WifiCofig request params
36329 wdiWifiConfigSetRspCb : WifiConfig stats resp callback
36330 usrData : Client context
36331 @see
36332 @return SUCCESS or FAIL
36333*/
36334WDI_Status
36335WDI_WifiConfigSetReq(WDI_WifiConfigSetReqType* pwdiWifConfigSetReqParams,
36336 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb,
36337 void* pUserData)
36338{
36339 WDI_EventInfoType wdiEventData;
36340
36341 /*------------------------------------------------------------------------
36342 Sanity Check
36343 ------------------------------------------------------------------------*/
36344 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36345 {
36346 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36347 "WDI API call before module is initialized - Fail request");
36348
36349 return WDI_STATUS_E_NOT_ALLOWED;
36350 }
36351
36352 wdiEventData.wdiRequest = WDI_WIFI_CONFIG_SET_REQ;
36353 wdiEventData.pEventData = pwdiWifConfigSetReqParams;
36354 wdiEventData.uEventDataSize = sizeof(*pwdiWifConfigSetReqParams);
36355 wdiEventData.pCBfnc = wdiWifiConfigSetRspCb;
36356 wdiEventData.pUserData = pUserData;
36357
36358 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36359}
36360
36361/**
36362 @brief WDI_ProcessWifiConfigReq -
36363 Set WifiConfig request to FW
36364
36365 @param pWDICtx : wdi context
36366 pEventData : indication data
36367
36368 @see
36369 @return none
36370*/
36371 WDI_Status
36372 WDI_ProcessWifiConfigReq
36373 (
36374 WDI_ControlBlockType* pWDICtx,
36375 WDI_EventInfoType* pEventData
36376 )
36377 {
36378 WDI_WifiConfigSetReqType* pwdiWifiConfigSetReqParams;
36379 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
36380 wpt_uint8* pSendBuffer = NULL;
36381 wpt_uint16 usSendSize = 0;
36382 wpt_uint16 usDataOffset = 0;
36383 tSetWifiConfigParamsReq halWifiConfigSetParams;
36384
36385 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
36386 ( NULL == pEventData->pCBfnc ))
36387 {
36388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36389 "%s: Invalid parameters", __func__);
36390 WDI_ASSERT(0);
36391 return WDI_STATUS_E_FAILURE;
36392 }
36393 pwdiWifiConfigSetReqParams = (WDI_WifiConfigSetReqType*)pEventData->pEventData;
36394 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pEventData->pCBfnc;
36395
36396 /*-----------------------------------------------------------------------
36397 Get message buffer
36398 ! TO DO : proper conversion into the HAL Message Request Format
36399 -----------------------------------------------------------------------*/
36400 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36401 pWDICtx,
36402 WDI_WIFI_CONFIG_SET_REQ,
36403 sizeof(halWifiConfigSetParams.wifiConfigParams),
36404 &pSendBuffer, &usDataOffset,
36405 &usSendSize))||
36406 ( usSendSize < (usDataOffset + sizeof(halWifiConfigSetParams.wifiConfigParams) )))
36407 {
36408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36409 "Unable to get send buffer in %s %p %p %p", __func__,
36410 pEventData, pwdiWifiConfigSetReqParams, wdiWifiConfigSetRspCb);
36411 WDI_ASSERT(0);
36412 return WDI_STATUS_E_FAILURE;
36413 }
36414
36415 halWifiConfigSetParams.wifiConfigParams.paramType = pwdiWifiConfigSetReqParams->paramType;
36416 halWifiConfigSetParams.wifiConfigParams.paramValue =
36417 pwdiWifiConfigSetReqParams->paramValue;
36418 vos_mem_copy(halWifiConfigSetParams.wifiConfigParams.bssid, &(pwdiWifiConfigSetReqParams->bssId),
36419 sizeof(tSirMacAddr));
36420
36421 wpalMemoryCopy(pSendBuffer+usDataOffset,
36422 &halWifiConfigSetParams.wifiConfigParams,
36423 sizeof(halWifiConfigSetParams.wifiConfigParams));
36424
36425 pWDICtx->pReqStatusUserData = pEventData->pUserData;
36426
36427 /*-------------------------------------------------------------------------
36428 Send Clear Link Layer Stats Request to HAL
36429 -------------------------------------------------------------------------*/
36430 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36431 wdiWifiConfigSetRspCb, pEventData->pUserData,
36432 WDI_WIFI_CONFIG_SET_RSP);
36433 }
36434
36435WDI_Status
36436WDI_ProcessWificonfigSetRsp
36437( WDI_ControlBlockType* pWDICtx,
36438 WDI_EventInfoType* pEventData )
36439
36440{
36441 tHalSetWifiConfigRspParams halRsp;
36442 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
36443 WDI_WifconfigSetRsp wdiWifconfigSetRsp;
36444
36445 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36446 "%s: %d Enter",__func__, __LINE__);
36447
36448 /*-------------------------------------------------------------------------
36449 Sanity check
36450 -------------------------------------------------------------------------*/
36451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36452 ( NULL == pEventData->pEventData))
36453 {
36454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36455 "%s: Invalid parameters", __func__);
36456 WDI_ASSERT(0);
36457 return WDI_STATUS_E_FAILURE;
36458 }
36459 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pWDICtx->pfncRspCB;
36460
36461 /*-------------------------------------------------------------------------
36462 Extract response and send it to UMAC
36463 -------------------------------------------------------------------------*/
36464 wpalMemoryCopy(&halRsp, pEventData->pEventData, sizeof(halRsp));
36465
36466 wdiWifconfigSetRsp.wificonfigset_status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36467
36468 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36469 "WifiConfig RSP status = %d",
36470 wdiWifconfigSetRsp.wificonfigset_status);
36471 /*Notify UMAC*/
36472 wdiWifiConfigSetRspCb( &wdiWifconfigSetRsp, pWDICtx->pRspCBUserData);
36473
36474 return WDI_STATUS_SUCCESS;
36475}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036476
36477#ifdef FEATURE_OEM_DATA_SUPPORT
36478
36479/**
36480 @brief WDI_StartOemDataReqIndNew
36481
36482 @param pOemDataReqNewConfig: Req parameter for the FW
36483
36484 @return SUCCESS or FAIL
36485*/
36486WDI_Status
36487WDI_StartOemDataReqIndNew
36488(
36489 WDI_OemDataReqNewConfig *pOemDataReqNewConfig
36490)
36491{
36492 WDI_EventInfoType wdiEventData;
36493
36494 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36495 "%s: %d",__func__, __LINE__);
36496 /*------------------------------------------------------------------------
36497 Sanity Check
36498 ------------------------------------------------------------------------*/
36499 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36500 {
36501 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36502 "WDI API call before module is initialized - Fail request");
36503
36504 return WDI_STATUS_E_NOT_ALLOWED;
36505 }
36506
36507 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ_IND_NEW;
36508 wdiEventData.pEventData = pOemDataReqNewConfig;
36509 wdiEventData.uEventDataSize = sizeof(*pOemDataReqNewConfig);
36510 wdiEventData.pCBfnc = NULL;
36511 wdiEventData.pUserData = NULL;
36512
36513 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36514}
36515
36516/**
36517 @brief WDI_ProcessStartOemDataReqIndNew -
36518 Send OEM Data request new indication to FW
36519
36520 @param pWDICtx : wdi context
36521 pEventData : indication data
36522
36523 @see
36524 @return none
36525*/
36526WDI_Status
36527WDI_ProcessStartOemDataReqIndNew
36528(
36529 WDI_ControlBlockType* pWDICtx,
36530 WDI_EventInfoType* pEventData
36531)
36532{
36533 WDI_OemDataReqNewConfig* wdiOemDataReqNewConfig;
36534 wpt_uint8* pSendBuffer = NULL;
36535 wpt_uint16 usSendSize = 0;
36536 wpt_uint16 usDataOffset = 0;
36537 tpStartOemDataReqParamsNew pHalStartOemDataReqParamsNew;
36538 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36539
36540 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36541 "%s: %d",__func__, __LINE__);
36542
36543 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36544 ( NULL == pEventData->pEventData))
36545 {
36546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36547 "%s: Invalid parameters", __func__);
36548 WDI_ASSERT(0);
36549 return WDI_STATUS_E_FAILURE;
36550 }
36551
36552 wdiOemDataReqNewConfig =
36553 (WDI_OemDataReqNewConfig *)pEventData->pEventData;
36554
36555 /*-----------------------------------------------------------------------
36556 Get message buffer
36557 -----------------------------------------------------------------------*/
36558 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36559 pWDICtx,
36560 WDI_START_OEM_DATA_REQ_IND_NEW,
36561 sizeof(tStartOemDataReqParamsNew),
36562 &pSendBuffer, &usDataOffset,
36563 &usSendSize))||
36564 ( usSendSize < (usDataOffset + sizeof(tStartOemDataReqParamsNew) )))
36565 {
36566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36567 "Unable to get send buffer in %s %p %p", __func__,
36568 pEventData, wdiOemDataReqNewConfig);
36569 WDI_ASSERT(0);
36570 return WDI_STATUS_E_FAILURE;
36571 }
36572 pHalStartOemDataReqParamsNew =
36573 (tpStartOemDataReqParamsNew) (pSendBuffer+usDataOffset);
36574
36575 wpalMemoryCopy(pHalStartOemDataReqParamsNew, wdiOemDataReqNewConfig, NEW_OEM_DATA_REQ_SIZE);
36576
36577
36578 pWDICtx->pReqStatusUserData = NULL;
36579 pWDICtx->pfncRspCB = NULL;
36580
36581 /*-------------------------------------------------------------------------
36582 Send WDI_START_OEM_DATA_REQ_IND_NEW Request to HAL
36583 -------------------------------------------------------------------------*/
36584 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36585 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36586}
36587
36588/**
36589 @brief Process OemDataRsp New Indication indication from FW
36590
36591 @param pWDICtx: pointer to the WLAN DAL context
36592 pEventData: pointer to the event information structure
36593
36594 @see
36595 @return Result of the function call
36596*/
36597WDI_Status
36598WDI_ProcessStartOemDataRspIndNew
36599(
36600 WDI_ControlBlockType* pWDICtx,
36601 WDI_EventInfoType* pEventData
36602)
36603{
36604 WDI_LowLevelIndType wdiInd;
36605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36606
36607 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36608 "%s: ", __func__);
36609
36610 /* sanity check */
36611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36612 ( NULL == pEventData->pEventData))
36613 {
36614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36615 "%s: Invalid parameters", __func__);
36616 WDI_ASSERT(0);
36617 return WDI_STATUS_E_FAILURE;
36618 }
36619
36620 /* Fill in the indication parameters */
36621 wdiInd.wdiIndicationType = WDI_START_OEM_DATA_RSP_IND_NEW;
36622
36623 /* extract response and send it to UMAC */
36624 wdiInd.wdiIndicationData.pOemRspNewIndData = (void *)pEventData->pEventData;
36625
36626 /* Notify UMAC */
36627 if (pWDICtx->wdiLowLevelIndCB)
36628 {
36629 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
36630 }
36631 else
36632 {
36633 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36634 "%s: WDILowLevelIndCb is null", __func__);
36635 WDI_ASSERT(0);
36636 return WDI_STATUS_E_FAILURE;
36637 }
36638 return WDI_STATUS_SUCCESS;
36639} /* End of WDI_ProcessEXTScanResultInd */
36640
36641#endif