blob: cbb1784c0962b4cc1f91520e3c8dcac9ab5899ae [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
Sushant Kaushik33200572015-08-05 16:46:20 +0530207 ,FEATURE_NOT_SUPPORTED //56
c_manjeecfd1efb2015-09-25 19:32:34 +0530208 ,MEMORY_DUMP_SUPPORTED //57
Sushant Kaushik33200572015-08-05 16:46:20 +0530209 ,PER_PKT_STATS_SUPPORTED //58
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530210};
Jeff Johnson295189b2012-06-20 16:38:30 -0700211
212/*--------------------------------------------------------------------------
213 WLAN DAL State Machine
214 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700215WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700216{
217 /*WDI_INIT_ST*/
218 {{
219 WDI_MainStart, /*WDI_START_EVENT*/
220 NULL, /*WDI_STOP_EVENT*/
221 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
222 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
223 WDI_MainClose, /*WDI_CLOSE_EVENT*/
224 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
225 }},
226
227 /*WDI_STARTED_ST*/
228 {{
229 WDI_MainStartStarted, /*WDI_START_EVENT*/
230 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
231 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
232 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
233 NULL, /*WDI_CLOSE_EVENT*/
234 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
235 }},
236
237 /*WDI_STOPPED_ST*/
238 {{
239 WDI_MainStart, /*WDI_START_EVENT*/
240 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
241 NULL, /*WDI_REQUEST_EVENT*/
242 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
243 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700244 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700245 }},
246
247 /*WDI_BUSY_ST*/
248 {{
249 WDI_MainStartBusy, /*WDI_START_EVENT*/
250 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
251 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
252 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
253 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
254 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
255 }}
256};
257
Jeff Johnsone7245742012-09-05 17:12:55 -0700258/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700259 DAL Request Processing Array - the functions in this table will only be
260 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700261 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700262 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700263WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700264{
265 /*INIT*/
266 WDI_ProcessStartReq, /* WDI_START_REQ */
267 WDI_ProcessStopReq, /* WDI_STOP_REQ */
268 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
269
270 /*SCAN*/
271 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
272 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
273 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
274 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
275
276 /*ASSOCIATION*/
277 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
278 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
279 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
280 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
281 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
282
283 /* Security */
284 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
285 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
286 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
287 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
288
289 /* QoS and BA APIs */
290 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
291 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
292 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
293 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
294 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
295
296 /* Miscellaneous Control APIs */
297 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
298 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
299 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
300 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
301 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
302
303 /*BA APIs*/
304 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
305 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
306
307 /*Beacon processing APIs*/
308 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
309 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
310
311 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
312 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
313 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
314 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700315 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700316 /* PowerSave APIs */
317 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
318 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
319 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
320 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
321 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
322 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
323 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
324 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
325 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
326 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
327 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
328 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
329 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
330 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
331 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
332 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
333 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
334 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
335 /*NV Download APIs*/
336 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
337 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
338 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
339#ifdef WLAN_FEATURE_VOWIFI_11R
340 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
341#else
342 NULL,
343#endif /* WLAN_FEATURE_VOWIFI_11R */
344 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
345 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700346 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700347
348#ifdef FEATURE_OEM_DATA_SUPPORT
349 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
350#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700351 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700352#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700353 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700354
355 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700356
357#ifdef FEATURE_WLAN_SCAN_PNO
358 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
359 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
360 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
361#else
362 NULL,
363 NULL,
364 NULL,
365#endif /* FEATURE_WLAN_SCAN_PNO */
366
367 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700368
Jeff Johnson295189b2012-06-20 16:38:30 -0700369#ifdef WLAN_FEATURE_PACKET_FILTERING
370 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700371 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700372 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700373 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700374 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700375 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700376 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700377 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700378#else
379 NULL,
380 NULL,
381 NULL,
382 NULL,
383#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700384 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700385 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
386 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
387
388 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800389#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700390 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
391#else
392 NULL,
393#endif
394
395#ifdef WLAN_FEATURE_GTK_OFFLOAD
396 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
397 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
398#else
399 NULL,
400 NULL,
401#endif // WLAN_FEATURE_GTK_OFFLOAD
402
403 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
404 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700405#ifdef WLAN_FEATURE_11AC
406 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800407#else
408 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700409#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800410#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800411 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
412#else
schang86c22c42013-03-13 18:41:24 -0700413 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800414#endif
schang86c22c42013-03-13 18:41:24 -0700415 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700416#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700417 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700418#else
419 NULL,
420#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530421#ifdef FEATURE_WLAN_TDLS
422 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
423#else
424 NULL,
425#endif
Leo Chang9056f462013-08-01 19:21:11 -0700426#ifdef FEATURE_WLAN_LPHB
427 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
428#else
429 NULL,
430#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530431
432#ifdef FEATURE_WLAN_BATCH_SCAN
433 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
434#else
435 NULL,
436#endif /* FEATURE_WLAN_BATCH_SCAN */
437
Arif Hussaina5ebce02013-08-09 15:09:58 -0700438 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800439
440 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530441
442 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530443
444#ifdef WLAN_FEATURE_LINK_LAYER_STATS
445 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
446 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
447 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
448#else
449 NULL,
450 NULL,
451 NULL,
452#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530453#ifdef WLAN_FEATURE_EXTSCAN
454 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
455 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
456 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
457 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
458 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
459 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530460 WDI_ProcessEXTScanSetSSIDHotlistReq, /* WDI_EXTSCAN_SET_SSID_HOTLIST_REQ */
461 WDI_ProcessEXTScanResetSSIDHotlistReq, /* WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ */
Dino Mycle41bdc942014-06-10 11:30:24 +0530462#else
463 NULL,
464 NULL,
465 NULL,
466 NULL,
467 NULL,
468 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530469 NULL,
470 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530471#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530472 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530473
474 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530475
476 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530477
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530478 WDI_ProcessFWLoggingInitReq, /* WDI_FW_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530479 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530480
481 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
482
Katya Nigamf0511f62015-05-05 16:40:57 +0530483 WDI_ProcessMonStartReq, /* WDI_MON_START_REQ */
484 WDI_ProcessMonStopReq, /* WDI_MON_STOP_REQ */
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530485 WDI_ProcessFatalEventLogsReq, /*WDI_FATAL_EVENT_LOGGING_REQ*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530486 WDI_ProcessFwrMemDumpReq, /* WDI_FWR_MEM_DUMP_REQ*/
487
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530488 WDI_ProcessRssiMonitorStartReq, /* WDI_START_RSSI_MONITOR_REQ */
489 WDI_ProcessRssiMonitorStopReq, /* WDI_STOP_RSSI_MONITOR_REQ */
schang86c22c42013-03-13 18:41:24 -0700490 /*-------------------------------------------------------------------------
491 Indications
492 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700493 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800494 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530495 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
496 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700497#ifdef WLAN_FEATURE_11W
498 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
499#else
500 NULL,
501#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700502 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
503 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530504#ifdef FEATURE_WLAN_BATCH_SCAN
505 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
506 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
507#else
508 NULL,
509 NULL,
510#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700511 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800512
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530513 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800514 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
515
516 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530517#ifdef FEATURE_WLAN_TDLS
518 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
519#else
520 NULL,
521#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530522 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530523 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +0530524 WDI_ProcessEnableDisableCAEventInd, /* WDI_SEND_FREQ_RANGE_CONTROL_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700525};
526
527
Jeff Johnsone7245742012-09-05 17:12:55 -0700528/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700529 DAL Request Processing Array - the functions in this table will only be
530 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700532 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700533WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700534{
535 /*INIT*/
536 WDI_ProcessStartRsp, /* WDI_START_RESP */
537 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
538 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
539
540 /*SCAN*/
541 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
542 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
543 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
544 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
545
546 /* ASSOCIATION*/
547 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
548 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
549 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
550 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
551 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
552
553 /* Security */
554 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
555 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
556 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
557 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
558
559 /* QoS and BA APIs */
560 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
561 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
562 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
563 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
564 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
565
566 /* Miscellaneous Control APIs */
567 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
568 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
569 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
570 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
571 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
572
573 /* BA APIs*/
574 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
575 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700576
Jeff Johnson295189b2012-06-20 16:38:30 -0700577 /* IBSS APIs*/
578 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
579 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
580
581 /*Soft AP APIs*/
582 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
583 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
584 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
585 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
586
587 /* PowerSave APIs */
588 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
589 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
590 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
591 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
592 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
593 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
594 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
595 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
596 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
597 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
598 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
599 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
600 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
601 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
602 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
603 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
604 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
605 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700606
Jeff Johnson295189b2012-06-20 16:38:30 -0700607
608 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
609
610 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
611 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
612#ifdef WLAN_FEATURE_VOWIFI_11R
613 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
614#else
615 NULL,
616#endif /* WLAN_FEATURE_VOWIFI_11R */
617 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
618 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700619#ifdef FEATURE_OEM_DATA_SUPPORT
620 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
621#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700622 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700623#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700624 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
625
Jeff Johnson295189b2012-06-20 16:38:30 -0700626 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700627
Jeff Johnson295189b2012-06-20 16:38:30 -0700628 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700629
Jeff Johnsone7245742012-09-05 17:12:55 -0700630 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
631
Jeff Johnson295189b2012-06-20 16:38:30 -0700632#ifdef FEATURE_WLAN_SCAN_PNO
633 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
634 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
635 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
636#else
637 NULL,
638 NULL,
639 NULL,
640#endif // FEATURE_WLAN_SCAN_PNO
641
642 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700643 /*---------------------------------------------------------------------
644 Indications
645 ---------------------------------------------------------------------*/
646#ifdef WLAN_FEATURE_PACKET_FILTERING
647 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700648 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700649 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700650 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700651 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700652 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700653 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700654 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700655#else
656 NULL,
657 NULL,
658 NULL,
659 NULL,
660#endif // WLAN_FEATURE_PACKET_FILTERING
661
662 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
663 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
664
665 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800666#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700667 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
668#else
669 NULL,
670#endif
671
672#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700673 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
674 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700675#else
676 NULL,
677 NULL,
678#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700679 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
680 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700681#ifdef WLAN_FEATURE_11AC
682 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700683#else
684 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700685#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800686#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800687 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
688#else
689 NULL,
690#endif
schang86c22c42013-03-13 18:41:24 -0700691 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700692#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700693 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700694#else
695 NULL,
696#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530697#ifdef FEATURE_WLAN_TDLS
698 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
699#else
700 NULL,
701#endif
Leo Chang9056f462013-08-01 19:21:11 -0700702#ifdef FEATURE_WLAN_LPHB
703 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
704#else
705 NULL,
706#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530707
708#ifdef FEATURE_WLAN_BATCH_SCAN
709 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
710#else
711 NULL,
712#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800713 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530714
c_hpothu92367912014-05-01 15:18:17 +0530715 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800716
c_hpothu92367912014-05-01 15:18:17 +0530717 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
718
719 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800720
Sunil Duttbd736ed2014-05-26 21:19:41 +0530721
722#ifdef WLAN_FEATURE_LINK_LAYER_STATS
723 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
724 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
725 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
726#else
727 NULL,
728 NULL,
729 NULL,
730#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530731#ifdef WLAN_FEATURE_EXTSCAN
732 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
733 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
734 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
735 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
736 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
737 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530738 WDI_ProcessEXTScanSetHotlistSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_SSID_RSP */
739 WDI_ProcessEXTScanResetHotlistSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP */
Dino Mycle41bdc942014-06-10 11:30:24 +0530740#else
741 NULL,
742 NULL,
743 NULL,
744 NULL,
745 NULL,
746 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530747 NULL,
748 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530749#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530750 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530751
752 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530753
754 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530755 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530756 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530757
Srinivas Dasari32a79262015-02-19 13:04:49 +0530758 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
759
Katya Nigamf0511f62015-05-05 16:40:57 +0530760 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
761 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530762 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530763 WDI_ProcessFwrMemDumpRsp, /* WDI_FWR_MEM_DUMP_RSP */
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530764 WDI_ProcessRssiMonitorStartRsp, /* WDI_START_RSSI_MONITOR_RSP*/
765 WDI_ProcessRssiMonitorStopRsp, /* WDI_STOP_RSSI_MONITOR_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700766 /*---------------------------------------------------------------------
767 Indications
768 ---------------------------------------------------------------------*/
769 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
770 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
771 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
772 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
773 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
774 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
775
776 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
777
778 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
779
Jeff Johnson295189b2012-06-20 16:38:30 -0700780 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700781
782#ifdef FEATURE_WLAN_SCAN_PNO
783 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
784#else
785 NULL,
786#endif // FEATURE_WLAN_SCAN_PNO
787
788#ifdef WLAN_WAKEUP_EVENTS
789 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
790#else // WLAN_WAKEUP_EVENTS
791 NULL,
792#endif // WLAN_WAKEUP_EVENTS
793
794 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800795
Viral Modid86bde22012-12-10 13:09:21 -0800796 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530797#ifdef FEATURE_WLAN_TDLS
798 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
799#else
800 NULL,
801#endif
Leo Chang9056f462013-08-01 19:21:11 -0700802
803#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700804 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700805#else
806 NULL,
807#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700808
809 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700810
811 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530812
813#ifdef FEATURE_WLAN_BATCH_SCAN
814 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
815#else
816 NULL,
817#endif
818
Leo Chang0b0e45a2013-12-15 15:18:55 -0800819#ifdef FEATURE_WLAN_CH_AVOID
820 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
821#else
822 NULL,
823#endif /* FEATURE_WLAN_CH_AVOID */
824
Sunil Duttbd736ed2014-05-26 21:19:41 +0530825 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
826#ifdef WLAN_FEATURE_LINK_LAYER_STATS
827 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
828#else
829 NULL,
830#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530831#ifdef WLAN_FEATURE_EXTSCAN
832 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
833 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
834 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
835 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530836 WDI_ProcessEXTScanSsidHotListResultInd, /* WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND */
Dino Mycle41bdc942014-06-10 11:30:24 +0530837#else
838 NULL,
839 NULL,
840 NULL,
841 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530842 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530843#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530844#ifdef FEATURE_WLAN_TDLS
845 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
846#else
847 NULL,
848#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530849 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530850 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530851 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530852 WDI_Process_RssiBreachedInd, /* WDI_HAL_RSSI_BREACHED_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700853};
854
855
Jeff Johnsone7245742012-09-05 17:12:55 -0700856/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700857 WLAN DAL Global Control Block
858 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700859WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700860static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
861
Jeff Johnsone7245742012-09-05 17:12:55 -0700862const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700863
864/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700865WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700866void* WDI_GET_PAL_CTX( void )
867{
Jeff Johnsone7245742012-09-05 17:12:55 -0700868 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700869}/*WDI_GET_PAL_CTX*/
870
Jeff Johnsone7245742012-09-05 17:12:55 -0700871/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700872 Helper inline converters
873 ============================================================================*/
874/*Convert WDI driver type into HAL driver type*/
875WPT_STATIC WPT_INLINE WDI_Status
876WDI_HAL_2_WDI_STATUS
877(
878 eHalStatus halStatus
879);
880
881/*Convert WDI request type into HAL request type*/
882WPT_STATIC WPT_INLINE tHalHostMsgType
883WDI_2_HAL_REQ_TYPE
884(
885 WDI_RequestEnumType wdiReqType
886);
887
888/*Convert WDI response type into HAL response type*/
889WPT_STATIC WPT_INLINE WDI_ResponseEnumType
890HAL_2_WDI_RSP_TYPE
891(
892 tHalHostMsgType halMsg
893);
894
895/*Convert WDI driver type into HAL driver type*/
896WPT_STATIC WPT_INLINE tDriverType
897WDI_2_HAL_DRV_TYPE
898(
899 WDI_DriverType wdiDriverType
900);
901
902/*Convert WDI stop reason into HAL stop reason*/
903WPT_STATIC WPT_INLINE tHalStopType
904WDI_2_HAL_STOP_REASON
905(
906 WDI_StopType wdiStopType
907);
908
909/*Convert WDI scan mode type into HAL scan mode type*/
910WPT_STATIC WPT_INLINE eHalSysMode
911WDI_2_HAL_SCAN_MODE
912(
913 WDI_ScanMode wdiScanMode
914);
915
916/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700917WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700918WDI_2_HAL_SEC_CH_OFFSET
919(
920 WDI_HTSecondaryChannelOffset wdiSecChOffset
921);
922
923/*Convert WDI BSS type into HAL BSS type*/
924WPT_STATIC WPT_INLINE tSirBssType
925WDI_2_HAL_BSS_TYPE
926(
927 WDI_BssType wdiBSSType
928);
929
930/*Convert WDI NW type into HAL NW type*/
931WPT_STATIC WPT_INLINE tSirNwType
932WDI_2_HAL_NW_TYPE
933(
934 WDI_NwType wdiNWType
935);
936
937/*Convert WDI chanel bonding type into HAL cb type*/
938WPT_STATIC WPT_INLINE ePhyChanBondState
939WDI_2_HAL_CB_STATE
940(
941 WDI_PhyChanBondState wdiCbState
942);
943
944/*Convert WDI chanel bonding type into HAL cb type*/
945WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
946WDI_2_HAL_HT_OPER_MODE
947(
948 WDI_HTOperatingMode wdiHTOperMode
949);
950
951/*Convert WDI mimo PS type into HAL mimo PS type*/
952WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
953WDI_2_HAL_MIMO_PS
954(
955 WDI_HTMIMOPowerSaveState wdiHTOperMode
956);
957
958/*Convert WDI ENC type into HAL ENC type*/
959WPT_STATIC WPT_INLINE tAniEdType
960WDI_2_HAL_ENC_TYPE
961(
962 WDI_EncryptType wdiEncType
963);
964
965/*Convert WDI WEP type into HAL WEP type*/
966WPT_STATIC WPT_INLINE tAniWepType
967WDI_2_HAL_WEP_TYPE
968(
969 WDI_WepType wdiWEPType
970);
971
972/*Convert WDI Link State into HAL Link State*/
973WPT_STATIC WPT_INLINE tSirLinkState
974WDI_2_HAL_LINK_STATE
975(
976 WDI_LinkStateType wdiLinkState
977);
978
Jeff Johnsone7245742012-09-05 17:12:55 -0700979/*Translate a STA Context from WDI into HAL*/
980WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700981void
982WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700983(
Jeff Johnson295189b2012-06-20 16:38:30 -0700984 tConfigStaParams* phalConfigSta,
985 WDI_ConfigStaReqInfoType* pwdiConfigSta
986);
Jeff Johnsone7245742012-09-05 17:12:55 -0700987
988/*Translate a Rate set info from WDI into HAL*/
989WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700990WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700991(
Jeff Johnson295189b2012-06-20 16:38:30 -0700992 tSirMacRateSet* pHalRateSet,
993 WDI_RateSet* pwdiRateSet
994);
995
996/*Translate an EDCA Parameter Record from WDI into HAL*/
997WPT_STATIC WPT_INLINE void
998WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700999(
Jeff Johnson295189b2012-06-20 16:38:30 -07001000 tSirMacEdcaParamRecord* phalEdcaParam,
1001 WDI_EdcaParamRecord* pWDIEdcaParam
1002);
1003
1004/*Copy a management frame header from WDI fmt into HAL fmt*/
1005WPT_STATIC WPT_INLINE void
1006WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
1007(
1008 tSirMacMgmtHdr* pmacMgmtHdr,
1009 WDI_MacMgmtHdr* pwdiMacMgmtHdr
1010);
1011
1012/*Copy config bss parameters from WDI fmt into HAL fmt*/
1013WPT_STATIC WPT_INLINE void
1014WDI_CopyWDIConfigBSSToHALConfigBSS
1015(
1016 tConfigBssParams* phalConfigBSS,
1017 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1018);
1019
Jeff Johnsone7245742012-09-05 17:12:55 -07001020/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001021 pointed to by user data */
1022WPT_STATIC WPT_INLINE void
1023WDI_ExtractRequestCBFromEvent
1024(
1025 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001026 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001027 void** ppUserData
1028);
1029
1030wpt_uint8
1031WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001032(
Jeff Johnson295189b2012-06-20 16:38:30 -07001033 WDI_ControlBlockType* pWDICtx,
1034 WDI_BSSSessionType** ppSession
1035);
1036
1037void
1038WDI_AddBcastSTAtoSTATable
1039(
1040 WDI_ControlBlockType* pWDICtx,
1041 WDI_AddStaParams * staParams,
1042 wpt_uint16 usBcastStaIdx
1043);
1044
1045WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001046(
Jeff Johnson295189b2012-06-20 16:38:30 -07001047 WDI_ControlBlockType* pWDICtx,
1048 WDI_EventInfoType* pEventData
1049);
1050
1051void
1052WDI_SetPowerStateCb
1053(
1054 wpt_status status,
1055 unsigned int dxePhyAddr,
1056 void *pContext
1057);
1058
Jeff Johnson295189b2012-06-20 16:38:30 -07001059/**
1060 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001061
1062 @param wdiReqMsgId: WDI Message request Id
1063
1064 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001065 @return Result of the function call
1066*/
1067static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1068{
1069 switch (wdiReqMsgId)
1070 {
1071 CASE_RETURN_STRING( WDI_START_REQ );
1072 CASE_RETURN_STRING( WDI_STOP_REQ );
1073 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1074 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1075 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1076 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1077 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1078 CASE_RETURN_STRING( WDI_JOIN_REQ );
1079 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1080 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1081 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1082 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1083 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1084 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1085 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1086 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1087 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1088 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1089 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1090 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1091 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1092 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001093 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001094 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1095 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1096 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1097 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1098 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1099 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1100 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1101 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1102 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1103 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1104 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1105 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001106 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001107 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301108#ifdef FEATURE_WLAN_TDLS
1109 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301110 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301111#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001112 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1113 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1114 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1115 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1116 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1117 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1118 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1119 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1120 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1121 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1122 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1123 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1124 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1125 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1126 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1127 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1128 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1129 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1130 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1131 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1132 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1133 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1134 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1135 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1136 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001137 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001138 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1139 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1140 #ifdef FEATURE_WLAN_SCAN_PNO
1141 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1142 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1143 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1144 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001145#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001146 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001147#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001148 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1149 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1150 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1151 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1152 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1153 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1154 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1155 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1156 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301157 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001158 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001159 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001160#ifdef WLAN_FEATURE_11W
1161 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1162#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301163#ifdef FEATURE_WLAN_BATCH_SCAN
1164 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1165 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1166 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1167#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301168 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1169 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001170 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301171#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1172 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1173 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1174 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1175#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301176#ifdef WLAN_FEATURE_EXTSCAN
1177 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1178 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1179 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1180 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1181 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1182 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301183 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SSID_HOTLIST_REQ);
1184 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ);
Dino Mycle41bdc942014-06-10 11:30:24 +05301185#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301186 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301187 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301188 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301189 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301190 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301191 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301192 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301193 CASE_RETURN_STRING( WDI_MON_START_REQ );
1194 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301195 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301196 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
c_manjeecfd1efb2015-09-25 19:32:34 +05301197 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_REQ);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301198 CASE_RETURN_STRING( WDI_START_RSSI_MONITOR_REQ );
1199 CASE_RETURN_STRING( WDI_STOP_RSSI_MONITOR_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001200 default:
1201 return "Unknown WDI MessageId";
1202 }
1203}
1204
1205
1206
1207/**
1208 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001209
1210 @param wdiRespMsgId: WDI Message response Id
1211
1212 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001213 @return Result of the function call
1214*/
1215static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1216{
1217 switch (wdiRespMsgId)
1218 {
1219 CASE_RETURN_STRING( WDI_START_RESP );
1220 CASE_RETURN_STRING( WDI_STOP_RESP );
1221 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1222 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1223 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1224 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1225 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1226 CASE_RETURN_STRING( WDI_JOIN_RESP );
1227 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1228 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1229 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1230 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1231 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1232 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1233 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1234 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1235 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1236 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1237 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1238 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1239 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1240 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1241 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1242 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1243 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1244 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1245 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1246 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1247 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1248 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1249 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1250 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1251 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1252 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1253 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301254#ifdef FEATURE_WLAN_TDLS
1255 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301256 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301257 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1258#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001259 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1260 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1261 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1262 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1263 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1264 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1265 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1266 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1267 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1268 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1269 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1270 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1271 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1272 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1273 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1274 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1275 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1276 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1277 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1278 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1279 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1280 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1281 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1282 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1283 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001284 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001285 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1286 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1287 #ifdef FEATURE_WLAN_SCAN_PNO
1288 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1289 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1290 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1291 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001292#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001293 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001294#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001295 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1296 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1297 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1298 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1299 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1300 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1301 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1302 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001303 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301304#ifdef FEATURE_WLAN_BATCH_SCAN
1305 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1306#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001307 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301308 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301309 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301310#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1311 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1312 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1313 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1314#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301315#ifdef WLAN_FEATURE_EXTSCAN
1316 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1317 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1318 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1319 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1320 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1321 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301322 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
1323 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
Dino Mycle41bdc942014-06-10 11:30:24 +05301324 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1325 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1326 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1327 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301328 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301329
1330#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301331 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301332 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301333 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301334 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301335 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
c_manjeecfd1efb2015-09-25 19:32:34 +05301336 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_RSP);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301337 CASE_RETURN_STRING (WDI_START_RSSI_MONITOR_RSP);
1338 CASE_RETURN_STRING (WDI_STOP_RSSI_MONITOR_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001339 default:
1340 return "Unknown WDI MessageId";
1341 }
1342}
1343
1344/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301345 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1346 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301347 @param capabilityBitmap - Base address of a 4 element Bitmap array
1348 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301349 @see
1350 @returns None
1351 */
1352void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1353{
Abhishek Singh08b60122014-02-04 18:05:23 +05301354 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301355 char *pTempCapStr = NULL;
1356 char *pCapStr = NULL;
1357 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1358 if (NULL == pTempCapStr)
1359 {
1360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1361 "Memory allocation failed for CapStr");
1362 return;
1363 }
1364
1365 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301366 for (j = 0; j < 4; j++) {
1367 for (i = 0; i < 32; i++) {
1368 if ((*(capabilityBitmap + j) & (1 << i))) {
1369 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301370 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1371 pCapStr += strlen("MCC");
1372 break;
1373 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1374 pCapStr += strlen("P2P");
1375 break;
1376 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1377 pCapStr += strlen("DOT11AC");
1378 break;
1379 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1380 pCapStr += strlen("SLM_SESSIONIZATION");
1381 break;
1382 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1383 pCapStr += strlen("DOT11AC_OPMODE");
1384 break;
1385 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1386 pCapStr += strlen("SAP32STA");
1387 break;
1388 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1389 pCapStr += strlen("TDLS");
1390 break;
1391 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1392 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1393 break;
1394 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1395 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1396 break;
1397 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1398 pCapStr += strlen("BEACON_OFFLOAD");
1399 break;
1400 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1401 pCapStr += strlen("SCAN_OFFLOAD");
1402 break;
1403 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1404 pCapStr += strlen("ROAM_OFFLOAD");
1405 break;
1406 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1407 pCapStr += strlen("BCN_MISS_OFFLOAD");
1408 break;
1409 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1410 pCapStr += strlen("STA_POWERSAVE");
1411 break;
1412 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1413 pCapStr += strlen("AP_UAPSD");
1414 break;
1415 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1416 pCapStr += strlen("AP_DFS");
1417 break;
1418 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1419 pCapStr += strlen("BLOCKACK");
1420 break;
1421 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1422 pCapStr += strlen("PHY_ERR");
1423 break;
1424 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1425 pCapStr += strlen("BCN_FILTER");
1426 break;
1427 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1428 pCapStr += strlen("RTT");
1429 break;
1430 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1431 pCapStr += strlen("RATECTRL");
1432 break;
1433 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1434 pCapStr += strlen("WOW");
1435 break;
1436 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1437 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1438 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301439 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1440 pCapStr += strlen("FW_IN_TX_PATH");
1441 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301442 case HT40_OBSS_SCAN:
1443 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1444 "%s", "HT40_OBSS_SCAN");
1445 pCapStr += strlen("HT40_OBSS_SCAN");
1446 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301447 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1448 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1449 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1450 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1451 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301452 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1453 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1454 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301455 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1456 pCapStr += strlen("CH_SWITCH_V1");
1457 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301458#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1459 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1460 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1461 break;
1462#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301463#ifdef WLAN_FEATURE_EXTSCAN
1464 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1465 pCapStr += strlen("EXTENDED_SCAN");
1466 break;
1467#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301468 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1469 pCapStr += strlen("MU_MIMO");
1470 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301471
Mihir Shetec34258c2014-07-30 17:50:27 +05301472 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1473 pCapStr += strlen("DYNAMIC_WMM_PS");
1474 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301475 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1476 pCapStr += strlen("FW_STATS");
1477 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301478 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1479 pCapStr += strlen("MAC_SPOOFED_SCAN");
1480 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301481 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1482 pCapStr += strlen("WPS_PRBRSP_TMPL");
1483 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301484 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1485 pCapStr += strlen("BCN_IE_FLT_DELTA");
1486 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301487 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1488 pCapStr += strlen("MGMT_FRAME_LOGGING");
1489 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301490 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1491 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1492 break;
1493
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301494 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1495 pCapStr += strlen("DISA");
1496 break;
1497
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301498 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1499 pCapStr += strlen("TDLS_OFF_CHANNEL");
1500 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301501 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1502 pCapStr += strlen("LOGGING_ENHANCEMENT");
1503 break;
c_manjeecfd1efb2015-09-25 19:32:34 +05301504 case MEMORY_DUMP_SUPPORTED:snprintf(pCapStr, sizeof("FW_MEM_DUMP_LOGGING"), "%s", "FW_MEM_DUMP_LOGGING");
1505 pCapStr += strlen("FW_MEM_DUMP_LOGGING");
1506 break;
Sushant Kaushik33200572015-08-05 16:46:20 +05301507 case PER_PKT_STATS_SUPPORTED: snprintf(pCapStr, sizeof("PER_PKT_STATS_SUPPORTED"), "%s", "PER_PKT_STATS_SUPPORTED");
1508 pCapStr += strlen("PER_PKT_STATS_SUPPORTED");
1509 break;
1510
1511
Abhishek Singh08b60122014-02-04 18:05:23 +05301512 }
1513 *pCapStr++ = ',';
1514 *pCapStr++ = ' ';
1515 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301516 }
1517 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301518 pCapStr -= 2;
1519 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301521 if (pTempCapStr)
1522 {
1523 vos_mem_free(pTempCapStr);
1524 pTempCapStr = NULL;
1525 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301526}
1527
1528/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001529 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001530
1531 @param halStatusId: HAL status Id
1532
1533 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001534 @return Result of the function call
1535*/
1536static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1537{
1538 switch (halStatusId)
1539 {
1540 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1541 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1542 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1543 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1544 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1545 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1546 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1547 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1548 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1549 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1550 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1551 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1552 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1553 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1554 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1555 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1556 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1557 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1558 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1559 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1560 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1561 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1562 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1563 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1564 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1565 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1566 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1567 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1568 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1569 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1570 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1571 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1572 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1573 default:
1574 return "Unknown HAL status";
1575 }
1576}
1577
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301578/**
1579 * wdi_state_info_dump() - prints state information of wdi layer
1580 */
1581static void wdi_state_info_dump(void)
1582{
1583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1584 "%s pending commands: %d", __func__,
1585 gWDICb.wptPendingQueue.count);
1586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1587 "uGlobalState %d wdiExpectedResponse: %d",
1588 gWDICb.uGlobalState, gWDICb.wdiExpectedResponse);
1589}
1590
1591
1592/**
1593 * wdi_register_debug_callback() - registration function for wdi layer
1594 * to print WDI state information
1595 */
1596static void wdi_register_debug_callback(void)
1597{
1598 vos_register_debug_callback(VOS_MODULE_ID_WDI, &wdi_state_info_dump);
1599}
1600
1601
Jeff Johnsone7245742012-09-05 17:12:55 -07001602/*========================================================================
1603
Jeff Johnson295189b2012-06-20 16:38:30 -07001604 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001605
Jeff Johnson295189b2012-06-20 16:38:30 -07001606==========================================================================*/
1607
1608/**
1609 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001610
Jeff Johnson295189b2012-06-20 16:38:30 -07001611 DAL will allocate all the resources it needs. It will open PAL, it will also
1612 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001613 DXE/SMD or any other drivers that they need.
1614
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301615 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001616 ppWDIGlobalCtx: output pointer of Global Context
1617 pWdiDevCapability: output pointer of device capability
1618
1619 @return Result of the function call
1620*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001621WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001622WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001623(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301624 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001625 void** ppWDIGlobalCtx,
1626 WDI_DeviceCapabilityType* pWdiDevCapability,
1627 unsigned int driverType
1628)
1629{
1630 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001631 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001633 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1635
1636 /*---------------------------------------------------------------------
1637 Sanity check
1638 ---------------------------------------------------------------------*/
1639 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1640 {
1641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1642 "Invalid input parameters in WDI_Init");
1643
Jeff Johnsone7245742012-09-05 17:12:55 -07001644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001645 }
1646
1647 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001648 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001649 ---------------------------------------------------------------------*/
1650 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1651 {
1652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1653 "WDI module already initialized - return");
1654
Jeff Johnsone7245742012-09-05 17:12:55 -07001655 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001656 }
1657
1658 /*Module is now initialized - this flag is to ensure the fact that multiple
1659 init will not happen on WDI
1660 !! - potential race does exist because read and set are not atomic,
1661 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001662 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001663
1664 /*Setup the control block */
1665 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301666 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001667
1668 /*Setup the STA Table*/
1669 wdiStatus = WDI_STATableInit(&gWDICb);
1670 if ( WDI_STATUS_SUCCESS != wdiStatus )
1671 {
1672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1673 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001674 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001675 goto fail_STATableInit;
1676 }
1677
1678 /*------------------------------------------------------------------------
1679 Open the PAL
1680 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301681 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001682 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1683 {
1684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1685 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001686 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001687 goto fail_wpalOpen;
1688 }
1689
1690 /*Initialize main synchro mutex - it will be used to ensure integrity of
1691 the main WDI Control Block*/
1692 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1693 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1694 {
1695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1696 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001697 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001698 goto fail_mutex;
1699 }
1700
1701 /*Initialize the response timer - it will be used to time all messages
1702 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001703 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1704 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001705 &gWDICb);
1706 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1707 {
1708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1709 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001710 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001711 goto fail_timer;
1712 }
1713
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001714 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1715 WDI_SsrTimerCB,
1716 &gWDICb);
1717 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1718 {
1719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1720 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001721 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001722 goto fail_timer2;
1723 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001724 /* Initialize the WDI Pending Request Queue*/
1725 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1726 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1727 {
1728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1729 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001730 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 goto fail_pend_queue;
1732 }
1733
1734 /*Init WDI Pending Assoc Id Queue */
1735 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
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 assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001740 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001741 goto fail_assoc_queue;
1742 }
1743
1744 /*Initialize the BSS sessions pending Queue */
1745 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1746 {
1747 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1748 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1749 {
1750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1751 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001752 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001753 goto fail_bss_queue;
1754 }
1755 }
1756
1757 /*Indicate the control block is sufficiently initialized for callbacks*/
1758 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1759
1760 /*------------------------------------------------------------------------
1761 Initialize the Data Path Utility Module
1762 ------------------------------------------------------------------------*/
1763 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1764 if ( WDI_STATUS_SUCCESS != wdiStatus )
1765 {
1766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1767 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001768 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 goto fail_dp_util_init;
1770 }
1771
1772 /* Init Set power state event */
1773 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001774 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001775 {
1776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1777 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001778 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001779 goto fail_power_event;
1780 }
1781
1782 /* Init WCTS action event */
1783 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001785 {
1786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1787 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001788 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001789 goto fail_wcts_event;
1790 }
1791
1792 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001793 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001794 ------------------------------------------------------------------------*/
1795 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1796 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001797 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001798 wctsCBs.wctsRxMsgCBData = &gWDICb;
1799
Jeff Johnsone7245742012-09-05 17:12:55 -07001800 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001801 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001802 WDI_CT_CHANNEL_SIZE,
1803 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001804
1805 if ( NULL == gWDICb.wctsHandle )
1806 {
1807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001808 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001809 goto fail_wcts_open;
1810 }
1811
1812 gWDICb.driverMode = (tDriverType)driverType;
1813 /* FTM mode not need to open Transport Driver */
1814 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001815 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001816 /*------------------------------------------------------------------------
1817 Open the Data Transport
1818 ------------------------------------------------------------------------*/
1819 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1820 {
1821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001822 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001823 goto fail_wdts_open;
1824 }
1825 }
1826
1827 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001828 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301829 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001830 /*Send the context as a ptr to the global WDI Control Block*/
1831 *ppWDIGlobalCtx = &gWDICb;
1832
1833 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001834 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001835 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1836 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301837
1838 wdi_register_debug_callback();
1839
Jeff Johnson295189b2012-06-20 16:38:30 -07001840 return WDI_STATUS_SUCCESS;
1841
1842 /* ERROR handlers
1843 Undo everything that completed successfully */
1844
1845 fail_wdts_open:
1846 {
1847 wpt_status eventStatus;
1848
1849 /* Closing WCTS in this scenario is tricky since it has to close
1850 the SMD channel and then we get notified asynchronously when
1851 the channel has been closed. So we take some of the logic from
1852 the "normal" close procedure in WDI_Close()
1853 */
1854
1855 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001856 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001857 {
1858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001859 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001860 }
1861
1862 WCTS_CloseTransport(gWDICb.wctsHandle);
1863
1864 /* Wait for WCTS to close the control transport. If we were able
1865 to reset the event flag, then we'll wait for the event,
1866 otherwise we'll wait for a maximum amount of time required for
1867 the channel to be closed */
1868 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1869 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001870 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001871 WDI_WCTS_ACTION_TIMEOUT);
1872 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1873 {
1874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001875 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 }
1877 }
1878 else
1879 {
1880 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1881 }
1882 }
1883 fail_wcts_open:
1884 wpalEventDelete(&gWDICb.wctsActionEvent);
1885 fail_wcts_event:
1886 wpalEventDelete(&gWDICb.setPowerStateEvent);
1887 fail_power_event:
1888 WDI_DP_UtilsExit(&gWDICb);
1889 fail_dp_util_init:
1890 gWDICb.magic = 0;
1891 fail_bss_queue:
1892 /* entries 0 thru i-1 were successfully initialized */
1893 while (0 < i)
1894 {
1895 i--;
1896 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1897 }
1898 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1899 fail_assoc_queue:
1900 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1901 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001902 wpalTimerDelete(&gWDICb.ssrTimer);
1903 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001904 wpalTimerDelete(&gWDICb.wptResponseTimer);
1905 fail_timer:
1906 wpalMutexDelete(&gWDICb.wptMutex);
1907 fail_mutex:
1908 wpalClose(gWDICb.pPALContext);
1909 fail_wpalOpen:
1910 WDI_STATableClose(&gWDICb);
1911 fail_STATableInit:
1912 gWDIInitialized = eWLAN_PAL_FALSE;
1913
1914 return WDI_STATUS_E_FAILURE;
1915
1916}/*WDI_Init*/;
1917
1918/**
1919 @brief WDI_Start will be called when the upper MAC is ready to
1920 commence operation with the WLAN Device. Upon the call
1921 of this API the WLAN DAL will pack and send a HAL Start
1922 message to the lower RIVA sub-system if the SMD channel
1923 has been fully opened and the RIVA subsystem is up.
1924
1925 If the RIVA sub-system is not yet up and running DAL
1926 will queue the request for Open and will wait for the
1927 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001928 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001929
1930 WDI_Init must have been called.
1931
Jeff Johnsone7245742012-09-05 17:12:55 -07001932 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001933 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001934
Jeff Johnson295189b2012-06-20 16:38:30 -07001935 wdiStartRspCb: callback for passing back the response of
1936 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001937
Jeff Johnson295189b2012-06-20 16:38:30 -07001938 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001939 callback
1940
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 @see WDI_Start
1942 @return Result of the function call
1943*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001944WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001945WDI_Start
1946(
1947 WDI_StartReqParamsType* pwdiStartParams,
1948 WDI_StartRspCb wdiStartRspCb,
1949 void* pUserData
1950)
1951{
1952 WDI_EventInfoType wdiEventData;
1953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1954
1955 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001956 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 ------------------------------------------------------------------------*/
1958 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1959 {
1960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1961 "WDI API call before module is initialized - Fail request");
1962
Jeff Johnsone7245742012-09-05 17:12:55 -07001963 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001964 }
1965
1966 /*------------------------------------------------------------------------
1967 Fill in Event data and post to the Main FSM
1968 ------------------------------------------------------------------------*/
1969 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001970 wdiEventData.pEventData = pwdiStartParams;
1971 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1972 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001973 wdiEventData.pUserData = pUserData;
1974
1975 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1976
1977}/*WDI_Start*/
1978
1979/**
1980 @brief WDI_Stop will be called when the upper MAC is ready to
1981 stop any operation with the WLAN Device. Upon the call
1982 of this API the WLAN DAL will pack and send a HAL Stop
1983 message to the lower RIVA sub-system if the DAL Core is
1984 in started state.
1985
1986 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001987
1988 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001989
1990 WDI_Start must have been called.
1991
Jeff Johnsone7245742012-09-05 17:12:55 -07001992 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001993 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001994
Jeff Johnson295189b2012-06-20 16:38:30 -07001995 wdiStopRspCb: callback for passing back the response of
1996 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001997
Jeff Johnson295189b2012-06-20 16:38:30 -07001998 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001999 callback
2000
Jeff Johnson295189b2012-06-20 16:38:30 -07002001 @see WDI_Start
2002 @return Result of the function call
2003*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002004WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002005WDI_Stop
2006(
2007 WDI_StopReqParamsType* pwdiStopParams,
2008 WDI_StopRspCb wdiStopRspCb,
2009 void* pUserData
2010)
2011{
2012 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07002013 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2015
2016 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002017 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002018 ------------------------------------------------------------------------*/
2019 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2020 {
2021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2022 "WDI API call before module is initialized - Fail request");
2023
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 }
2026
Jeff Johnson43971f52012-07-17 12:26:56 -07002027 /*Access to the global state must be locked before cleaning */
2028 wpalMutexAcquire(&pWDICtx->wptMutex);
2029
2030 /*Clear all pending request*/
2031 WDI_ClearPendingRequests(pWDICtx);
2032
2033 /*We have completed cleaning unlock now*/
2034 wpalMutexRelease(&pWDICtx->wptMutex);
2035
Jeff Johnson295189b2012-06-20 16:38:30 -07002036 /* Free the global variables */
2037 wpalMemoryFree(gpHostWlanFeatCaps);
2038 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002039 gpHostWlanFeatCaps = NULL;
2040 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002041
2042 /*------------------------------------------------------------------------
2043 Fill in Event data and post to the Main FSM
2044 ------------------------------------------------------------------------*/
2045 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002046 wdiEventData.pEventData = pwdiStopParams;
2047 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
2048 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002049 wdiEventData.pUserData = pUserData;
2050
2051 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2052
2053}/*WDI_Stop*/
2054
2055
2056
2057/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002058 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002059 needs to interact with DAL. DAL will free its control
2060 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002061
2062 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002063
2064 WDI_Stop must have been called.
2065
2066 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002067
Jeff Johnson295189b2012-06-20 16:38:30 -07002068 @see WDI_Stop
2069 @return Result of the function call
2070*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002071WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002072WDI_Close
2073(
2074 void
2075)
2076{
2077 wpt_uint8 i;
2078 WDI_EventInfoType wdiEventData;
2079 wpt_status wptStatus;
2080 wpt_status eventStatus;
2081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2082
2083 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002084 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002085 ------------------------------------------------------------------------*/
2086 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2087 {
2088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2089 "WDI API call before module is initialized - Fail request");
2090
Jeff Johnsone7245742012-09-05 17:12:55 -07002091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002092 }
2093
2094 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2095 (the control transport will be closed by the FSM and we'll want
2096 to wait until that completes)*/
2097 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002098 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002099 {
2100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002101 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 /* fall through and try to finish closing via the FSM */
2103 }
2104
2105 /*------------------------------------------------------------------------
2106 Fill in Event data and post to the Main FSM
2107 ------------------------------------------------------------------------*/
2108 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002109 wdiEventData.pEventData = NULL;
2110 wdiEventData.uEventDataSize = 0;
2111 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002112 wdiEventData.pUserData = NULL;
2113
2114 gWDIInitialized = eWLAN_PAL_FALSE;
2115
2116 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2117
2118 /*Wait for WCTS to close the control transport
2119 (but only if we were able to reset the event flag*/
2120 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2121 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002122 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 WDI_WCTS_ACTION_TIMEOUT);
2124 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2125 {
2126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002127 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002128 }
2129 }
2130
2131 /* Destroy the WCTS action event */
2132 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2133 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2134 {
2135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2136 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002137 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002138 }
2139
2140 /* Destroy the Set Power State event */
2141 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2142 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2143 {
2144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2145 "WDI Close failed to destroy an event");
2146
Jeff Johnsone7245742012-09-05 17:12:55 -07002147 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002148 }
2149
2150 /*------------------------------------------------------------------------
2151 Closes the Data Path Utility Module
2152 ------------------------------------------------------------------------*/
2153 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2154 {
2155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2156 "WDI Init failed to close the DP Util Module");
2157
Jeff Johnsone7245742012-09-05 17:12:55 -07002158 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002159 }
2160
2161 /*destroy the BSS sessions pending Queue */
2162 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2163 {
2164 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2165 }
2166
2167 /* destroy the WDI Pending Assoc Id Request Queue*/
2168 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2169
2170 /* destroy the WDI Pending Request Queue*/
2171 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002172
Jeff Johnson295189b2012-06-20 16:38:30 -07002173 /*destroy the response timer */
2174 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2175
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002176 /*destroy the SSR timer */
2177 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2178
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 /*invalidate the main synchro mutex */
2180 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2181 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2182 {
2183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2184 "Failed to delete mutex %d", wptStatus);
2185 WDI_ASSERT(0);
2186 }
2187
2188 /*Clear control block. note that this will clear the "magic"
2189 which will inhibit all asynchronous callbacks*/
2190 WDI_CleanCB(&gWDICb);
2191
2192 return wptStatus;
2193
2194}/*WDI_Close*/
2195
2196/**
2197 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2198 This will do most of the WDI stop & close
2199 operations without doing any handshake with Riva
2200
2201 This will also make sure that the control transport
2202 will NOT be closed.
2203
2204 This request will not be queued.
2205
2206
2207 WDI_Start must have been called.
2208
2209 @param closeTransport: Close control channel if this is set
2210
2211 @return Result of the function call
2212*/
2213WDI_Status
2214WDI_Shutdown
2215(
2216 wpt_boolean closeTransport
2217)
2218{
2219 WDI_EventInfoType wdiEventData;
2220 wpt_status wptStatus;
2221 int i = 0;
2222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2223
2224 /*------------------------------------------------------------------------
2225 Sanity Check
2226 ------------------------------------------------------------------------*/
2227 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2228 {
2229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2230 "WDI API call before module is initialized - Fail request");
2231
2232 return WDI_STATUS_E_NOT_ALLOWED;
2233 }
2234
2235 /*------------------------------------------------------------------------
2236 Fill in Event data and post to the Main FSM
2237 ------------------------------------------------------------------------*/
2238 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2239 wdiEventData.pEventData = NULL;
2240 wdiEventData.uEventDataSize = 0;
2241
2242 /* Shutdown will not be queued, if the state is busy timer will be
2243 * stopped & this message will be processed.*/
2244 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2245 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2246 {
2247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002248 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002249 }
2250 /* Destroy the Set Power State event */
2251 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2252 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2253 {
2254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2255 "WDI Close failed to destroy an event");
2256
2257 WDI_ASSERT(0);
2258 }
2259 /*------------------------------------------------------------------------
2260 Closes the Data Path Utility Module
2261 ------------------------------------------------------------------------*/
2262 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2263 {
2264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2265 "WDI Init failed to close the DP Util Module");
2266
2267 WDI_ASSERT(0);
2268 }
2269 if ( closeTransport )
2270 {
2271 /* Close control transport, called from module unload */
2272 WCTS_CloseTransport(gWDICb.wctsHandle);
2273 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002274 else
2275 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002276 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002277 the pending messages in the transport queue */
2278 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2279 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002280 /*destroy the BSS sessions pending Queue */
2281 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2282 {
2283 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2284 }
2285
2286 /* destroy the WDI Pending Assoc Id Request Queue*/
2287 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2288 /* destroy the WDI Pending Request Queue*/
2289 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2290 /*destroy the response timer */
2291 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002292 /*destroy the SSR timer */
2293 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002294
2295 /*invalidate the main synchro mutex */
2296 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2297 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2298 {
2299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002300 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002301 WDI_ASSERT(0);
2302 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002303 /* Free the global variables */
2304 wpalMemoryFree(gpHostWlanFeatCaps);
2305 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002306 gpHostWlanFeatCaps = NULL;
2307 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002308 /*Clear control block. note that this will clear the "magic"
2309 which will inhibit all asynchronous callbacks*/
2310 WDI_CleanCB(&gWDICb);
2311 return wptStatus;
2312
2313}/*WDI_Shutdown*/
2314
2315
Jeff Johnsone7245742012-09-05 17:12:55 -07002316/*========================================================================
2317
Jeff Johnson295189b2012-06-20 16:38:30 -07002318 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002319
Jeff Johnson295189b2012-06-20 16:38:30 -07002320==========================================================================*/
2321
2322/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002323 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 the WLAN Device to get ready for a scan procedure. Upon
2325 the call of this API the WLAN DAL will pack and send a
2326 HAL Init Scan request message to the lower RIVA
2327 sub-system if DAL is in state STARTED.
2328
2329 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002330 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002331
2332 WDI_Start must have been called.
2333
2334 @param wdiInitScanParams: the init scan parameters as specified
2335 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002336
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 wdiInitScanRspCb: callback for passing back the response
2338 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002339
Jeff Johnson295189b2012-06-20 16:38:30 -07002340 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002341 callback
2342
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 @see WDI_Start
2344 @return Result of the function call
2345*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002346WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002347WDI_InitScanReq
2348(
2349 WDI_InitScanReqParamsType* pwdiInitScanParams,
2350 WDI_InitScanRspCb wdiInitScanRspCb,
2351 void* pUserData
2352)
2353{
2354 WDI_EventInfoType wdiEventData;
2355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2356
2357 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002358 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002359 ------------------------------------------------------------------------*/
2360 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2361 {
2362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2363 "WDI API call before module is initialized - Fail request");
2364
Jeff Johnsone7245742012-09-05 17:12:55 -07002365 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002366 }
2367
2368 /*------------------------------------------------------------------------
2369 Fill in Event data and post to the Main FSM
2370 ------------------------------------------------------------------------*/
2371 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002372 wdiEventData.pEventData = pwdiInitScanParams;
2373 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2374 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002375 wdiEventData.pUserData = pUserData;
2376
2377 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2378
2379}/*WDI_InitScanReq*/
2380
2381/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002382 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 wishes to change the Scan channel on the WLAN Device.
2384 Upon the call of this API the WLAN DAL will pack and
2385 send a HAL Start Scan request message to the lower RIVA
2386 sub-system if DAL is in state STARTED.
2387
2388 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002389 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002390
2391 WDI_InitScanReq must have been called.
2392
Jeff Johnsone7245742012-09-05 17:12:55 -07002393 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002394 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002395
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 wdiStartScanRspCb: callback for passing back the
2397 response of the start scan operation received from the
2398 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002399
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 callback
2402
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 @see WDI_InitScanReq
2404 @return Result of the function call
2405*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002406WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002407WDI_StartScanReq
2408(
2409 WDI_StartScanReqParamsType* pwdiStartScanParams,
2410 WDI_StartScanRspCb wdiStartScanRspCb,
2411 void* pUserData
2412)
2413{
2414 WDI_EventInfoType wdiEventData;
2415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2416
2417 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002418 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002419 ------------------------------------------------------------------------*/
2420 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2421 {
2422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2423 "WDI API call before module is initialized - Fail request");
2424
Jeff Johnsone7245742012-09-05 17:12:55 -07002425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 }
2427
2428 /*------------------------------------------------------------------------
2429 Fill in Event data and post to the Main FSM
2430 ------------------------------------------------------------------------*/
2431 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002432 wdiEventData.pEventData = pwdiStartScanParams;
2433 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2434 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002435 wdiEventData.pUserData = pUserData;
2436
2437 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2438
2439}/*WDI_StartScanReq*/
2440
2441
2442/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 wants to end scanning for a particular channel that it
2445 had set before by calling Scan Start on the WLAN Device.
2446 Upon the call of this API the WLAN DAL will pack and
2447 send a HAL End Scan request message to the lower RIVA
2448 sub-system if DAL is in state STARTED.
2449
2450 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002451 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002452
2453 WDI_StartScanReq must have been called.
2454
Jeff Johnsone7245742012-09-05 17:12:55 -07002455 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002456 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002457
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 wdiEndScanRspCb: callback for passing back the response
2459 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002460
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002462 callback
2463
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 @see WDI_StartScanReq
2465 @return Result of the function call
2466*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002468WDI_EndScanReq
2469(
2470 WDI_EndScanReqParamsType* pwdiEndScanParams,
2471 WDI_EndScanRspCb wdiEndScanRspCb,
2472 void* pUserData
2473)
2474{
2475 WDI_EventInfoType wdiEventData;
2476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2477
2478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 ------------------------------------------------------------------------*/
2481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2482 {
2483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2484 "WDI API call before module is initialized - Fail request");
2485
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 }
2488
2489 /*------------------------------------------------------------------------
2490 Fill in Event data and post to the Main FSM
2491 ------------------------------------------------------------------------*/
2492 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002493 wdiEventData.pEventData = pwdiEndScanParams;
2494 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2495 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 wdiEventData.pUserData = pUserData;
2497
2498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2499
2500}/*WDI_EndScanReq*/
2501
2502
2503/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 completed the scan process on the WLAN Device. Upon the
2506 call of this API the WLAN DAL will pack and send a HAL
2507 Finish Scan Request request message to the lower RIVA
2508 sub-system if DAL is in state STARTED.
2509
2510 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002512
2513 WDI_InitScanReq must have been called.
2514
Jeff Johnsone7245742012-09-05 17:12:55 -07002515 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002516 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002517
Jeff Johnson295189b2012-06-20 16:38:30 -07002518 wdiFinishScanRspCb: callback for passing back the
2519 response of the finish scan operation received from the
2520 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002521
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002523 callback
2524
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 @see WDI_InitScanReq
2526 @return Result of the function call
2527*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002528WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002529WDI_FinishScanReq
2530(
2531 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2532 WDI_FinishScanRspCb wdiFinishScanRspCb,
2533 void* pUserData
2534)
2535{
2536 WDI_EventInfoType wdiEventData;
2537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2538
2539 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002540 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002541 ------------------------------------------------------------------------*/
2542 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2543 {
2544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2545 "WDI API call before module is initialized - Fail request");
2546
Jeff Johnsone7245742012-09-05 17:12:55 -07002547 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002548 }
2549
2550 /*------------------------------------------------------------------------
2551 Fill in Event data and post to the Main FSM
2552 ------------------------------------------------------------------------*/
2553 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002554 wdiEventData.pEventData = pwdiFinishScanParams;
2555 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2556 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 wdiEventData.pUserData = pUserData;
2558
2559 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2560
2561}/*WDI_FinishScanReq*/
2562
Jeff Johnsone7245742012-09-05 17:12:55 -07002563/*========================================================================
2564
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002566
Jeff Johnson295189b2012-06-20 16:38:30 -07002567==========================================================================*/
2568
2569/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002570 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002571 to start an association procedure to a BSS. Upon the
2572 call of this API the WLAN DAL will pack and send a HAL
2573 Join request message to the lower RIVA sub-system if
2574 DAL is in state STARTED.
2575
2576 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002577 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002578
2579 WDI_Start must have been called.
2580
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002583
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 wdiJoinRspCb: callback for passing back the response of
2585 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002586
Jeff Johnson295189b2012-06-20 16:38:30 -07002587 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 callback
2589
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 @see WDI_Start
2591 @return Result of the function call
2592*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002593WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002594WDI_JoinReq
2595(
2596 WDI_JoinReqParamsType* pwdiJoinParams,
2597 WDI_JoinRspCb wdiJoinRspCb,
2598 void* pUserData
2599)
2600{
2601 WDI_EventInfoType wdiEventData;
2602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2603
2604 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002606 ------------------------------------------------------------------------*/
2607 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2608 {
2609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2610 "WDI API call before module is initialized - Fail request");
2611
Jeff Johnsone7245742012-09-05 17:12:55 -07002612 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 }
2614
2615 /*------------------------------------------------------------------------
2616 Fill in Event data and post to the Main FSM
2617 ------------------------------------------------------------------------*/
2618 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002619 wdiEventData.pEventData = pwdiJoinParams;
2620 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2621 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002622 wdiEventData.pUserData = pUserData;
2623
2624 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2625
2626}/*WDI_JoinReq*/
2627
2628/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002629 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 wishes to configure the newly acquired or in process of
2631 being acquired BSS to the HW . Upon the call of this API
2632 the WLAN DAL will pack and send a HAL Config BSS request
2633 message to the lower RIVA sub-system if DAL is in state
2634 STARTED.
2635
2636 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002638
2639 WDI_JoinReq must have been called.
2640
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002643
Jeff Johnson295189b2012-06-20 16:38:30 -07002644 wdiConfigBSSRspCb: callback for passing back the
2645 response of the config BSS operation received from the
2646 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002647
Jeff Johnson295189b2012-06-20 16:38:30 -07002648 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002649 callback
2650
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 @see WDI_JoinReq
2652 @return Result of the function call
2653*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002654WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002655WDI_ConfigBSSReq
2656(
2657 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2658 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2659 void* pUserData
2660)
2661{
2662 WDI_EventInfoType wdiEventData;
2663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2664
2665 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002666 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002667 ------------------------------------------------------------------------*/
2668 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2669 {
2670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2671 "WDI API call before module is initialized - Fail request");
2672
Jeff Johnsone7245742012-09-05 17:12:55 -07002673 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002674 }
2675
2676 /*------------------------------------------------------------------------
2677 Fill in Event data and post to the Main FSM
2678 ------------------------------------------------------------------------*/
2679 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002680 wdiEventData.pEventData = pwdiConfigBSSParams;
2681 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2682 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002683 wdiEventData.pUserData = pUserData;
2684
2685 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2686
2687}/*WDI_ConfigBSSReq*/
2688
2689/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002690 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002691 disassociating from the BSS and wishes to notify HW.
2692 Upon the call of this API the WLAN DAL will pack and
2693 send a HAL Del BSS request message to the lower RIVA
2694 sub-system if DAL is in state STARTED.
2695
2696 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002697 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002698
2699 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2700
Jeff Johnsone7245742012-09-05 17:12:55 -07002701 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002702 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002703
Jeff Johnson295189b2012-06-20 16:38:30 -07002704 wdiDelBSSRspCb: callback for passing back the response
2705 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002706
Jeff Johnson295189b2012-06-20 16:38:30 -07002707 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002708 callback
2709
2710 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002711 @return Result of the function call
2712*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002713WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002714WDI_DelBSSReq
2715(
2716 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2717 WDI_DelBSSRspCb wdiDelBSSRspCb,
2718 void* pUserData
2719)
2720{
2721 WDI_EventInfoType wdiEventData;
2722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2723
2724 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002725 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002726 ------------------------------------------------------------------------*/
2727 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2728 {
2729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2730 "WDI API call before module is initialized - Fail request");
2731
Jeff Johnsone7245742012-09-05 17:12:55 -07002732 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002733 }
2734
2735 /*------------------------------------------------------------------------
2736 Fill in Event data and post to the Main FSM
2737 ------------------------------------------------------------------------*/
2738 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 wdiEventData.pEventData = pwdiDelBSSParams;
2740 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2741 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002742 wdiEventData.pUserData = pUserData;
2743
2744 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2745
2746}/*WDI_DelBSSReq*/
2747
2748/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002749 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002750 associated to a BSS and wishes to configure HW for
2751 associated state. Upon the call of this API the WLAN DAL
2752 will pack and send a HAL Post Assoc request message to
2753 the lower RIVA sub-system if DAL is in state STARTED.
2754
2755 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002757
2758 WDI_JoinReq must have been called.
2759
2760 @param wdiPostAssocReqParams: the assoc parameters as specified
2761 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002762
Jeff Johnson295189b2012-06-20 16:38:30 -07002763 wdiPostAssocRspCb: callback for passing back the
2764 response of the post assoc operation received from the
2765 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002766
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002768 callback
2769
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 @see WDI_JoinReq
2771 @return Result of the function call
2772*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002773WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002774WDI_PostAssocReq
2775(
2776 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2777 WDI_PostAssocRspCb wdiPostAssocRspCb,
2778 void* pUserData
2779)
2780{
2781 WDI_EventInfoType wdiEventData;
2782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2783
2784 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002785 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002786 ------------------------------------------------------------------------*/
2787 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2788 {
2789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2790 "WDI API call before module is initialized - Fail request");
2791
Jeff Johnsone7245742012-09-05 17:12:55 -07002792 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 }
2794
2795 /*------------------------------------------------------------------------
2796 Fill in Event data and post to the Main FSM
2797 ------------------------------------------------------------------------*/
2798 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002799 wdiEventData.pEventData = pwdiPostAssocReqParams;
2800 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2801 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002802 wdiEventData.pUserData = pUserData;
2803
2804 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2805
2806}/*WDI_PostAssocReq*/
2807
2808/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002809 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002810 association with another STA has ended and the station
2811 must be deleted from HW. Upon the call of this API the
2812 WLAN DAL will pack and send a HAL Del STA request
2813 message to the lower RIVA sub-system if DAL is in state
2814 STARTED.
2815
2816 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002817 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002818
2819 WDI_PostAssocReq must have been called.
2820
Jeff Johnsone7245742012-09-05 17:12:55 -07002821 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002822 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002823
Jeff Johnson295189b2012-06-20 16:38:30 -07002824 wdiDelSTARspCb: callback for passing back the response
2825 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002826
Jeff Johnson295189b2012-06-20 16:38:30 -07002827 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002828 callback
2829
Jeff Johnson295189b2012-06-20 16:38:30 -07002830 @see WDI_PostAssocReq
2831 @return Result of the function call
2832*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002833WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002834WDI_DelSTAReq
2835(
2836 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2837 WDI_DelSTARspCb wdiDelSTARspCb,
2838 void* pUserData
2839)
2840{
2841 WDI_EventInfoType wdiEventData;
2842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2843
2844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 ------------------------------------------------------------------------*/
2847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2848 {
2849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2850 "WDI API call before module is initialized - Fail request");
2851
Jeff Johnsone7245742012-09-05 17:12:55 -07002852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002853 }
2854
2855 /*------------------------------------------------------------------------
2856 Fill in Event data and post to the Main FSM
2857 ------------------------------------------------------------------------*/
2858 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002859 wdiEventData.pEventData = pwdiDelSTAParams;
2860 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2861 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 wdiEventData.pUserData = pUserData;
2863
2864 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2865
2866}/*WDI_DelSTAReq*/
2867
Jeff Johnsone7245742012-09-05 17:12:55 -07002868/*========================================================================
2869
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002871
Jeff Johnson295189b2012-06-20 16:38:30 -07002872==========================================================================*/
2873
2874/**
2875 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2876 install a BSS encryption key on the HW. Upon the call of this
2877 API the WLAN DAL will pack and send a Set BSS Key request
2878 message to the lower RIVA sub-system if DAL is in state
2879 STARTED.
2880
2881 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002882 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002883
2884 WDI_PostAssocReq must have been called.
2885
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002888
Jeff Johnson295189b2012-06-20 16:38:30 -07002889 wdiSetBSSKeyRspCb: callback for passing back the
2890 response of the set BSS Key operation received from the
2891 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002892
Jeff Johnson295189b2012-06-20 16:38:30 -07002893 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002894 callback
2895
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 @see WDI_PostAssocReq
2897 @return Result of the function call
2898*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002899WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002900WDI_SetBSSKeyReq
2901(
2902 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2903 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2904 void* pUserData
2905)
2906{
2907 WDI_EventInfoType wdiEventData;
2908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2909
2910 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002911 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002912 ------------------------------------------------------------------------*/
2913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2914 {
2915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2916 "WDI API call before module is initialized - Fail request");
2917
Jeff Johnsone7245742012-09-05 17:12:55 -07002918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002919 }
2920
2921 /*------------------------------------------------------------------------
2922 Fill in Event data and post to the Main FSM
2923 ------------------------------------------------------------------------*/
2924 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002925 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2926 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2927 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002928 wdiEventData.pUserData = pUserData;
2929
2930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2931
2932}/*WDI_SetBSSKeyReq*/
2933
2934/**
2935 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2936 uninstall a BSS key from HW. Upon the call of this API the
2937 WLAN DAL will pack and send a HAL Remove BSS Key request
2938 message to the lower RIVA sub-system if DAL is in state
2939 STARTED.
2940
2941 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002942 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002943
2944 WDI_SetBSSKeyReq must have been called.
2945
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002947 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002948
Jeff Johnson295189b2012-06-20 16:38:30 -07002949 wdiRemoveBSSKeyRspCb: callback for passing back the
2950 response of the remove BSS key operation received from
2951 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002952
Jeff Johnson295189b2012-06-20 16:38:30 -07002953 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 callback
2955
Jeff Johnson295189b2012-06-20 16:38:30 -07002956 @see WDI_SetBSSKeyReq
2957 @return Result of the function call
2958*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002959WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002960WDI_RemoveBSSKeyReq
2961(
2962 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2963 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2964 void* pUserData
2965)
2966{
2967 WDI_EventInfoType wdiEventData;
2968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2969
2970 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002971 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002972 ------------------------------------------------------------------------*/
2973 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2974 {
2975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2976 "WDI API call before module is initialized - Fail request");
2977
Jeff Johnsone7245742012-09-05 17:12:55 -07002978 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002979 }
2980
2981 /*------------------------------------------------------------------------
2982 Fill in Event data and post to the Main FSM
2983 ------------------------------------------------------------------------*/
2984 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002985 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2986 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2987 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002988 wdiEventData.pUserData = pUserData;
2989
2990 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2991
2992}/*WDI_RemoveBSSKeyReq*/
2993
2994
2995/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002996 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002997 ready to install a STA(ast) encryption key in HW. Upon
2998 the call of this API the WLAN DAL will pack and send a
2999 HAL Set STA Key request message to the lower RIVA
3000 sub-system if DAL is in state STARTED.
3001
3002 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003003 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003004
3005 WDI_PostAssocReq must have been called.
3006
Jeff Johnsone7245742012-09-05 17:12:55 -07003007 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003008 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003009
Jeff Johnson295189b2012-06-20 16:38:30 -07003010 wdiSetSTAKeyRspCb: callback for passing back the
3011 response of the set STA key operation received from the
3012 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003013
Jeff Johnson295189b2012-06-20 16:38:30 -07003014 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003015 callback
3016
Jeff Johnson295189b2012-06-20 16:38:30 -07003017 @see WDI_PostAssocReq
3018 @return Result of the function call
3019*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003020WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003021WDI_SetSTAKeyReq
3022(
3023 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
3024 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
3025 void* pUserData
3026)
3027{
3028 WDI_EventInfoType wdiEventData;
3029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3030
3031 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003032 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003033 ------------------------------------------------------------------------*/
3034 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3035 {
3036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3037 "WDI API call before module is initialized - Fail request");
3038
Jeff Johnsone7245742012-09-05 17:12:55 -07003039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003040 }
3041
3042 /*------------------------------------------------------------------------
3043 Fill in Event data and post to the Main FSM
3044 ------------------------------------------------------------------------*/
3045 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003046 wdiEventData.pEventData = pwdiSetSTAKeyParams;
3047 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
3048 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003049 wdiEventData.pUserData = pUserData;
3050
3051 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3052
3053}/*WDI_SetSTAKeyReq*/
3054
3055
3056/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003057 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003058 wants to uninstall a previously set STA key in HW. Upon
3059 the call of this API the WLAN DAL will pack and send a
3060 HAL Remove STA Key request message to the lower RIVA
3061 sub-system if DAL is in state STARTED.
3062
3063 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003064 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003065
3066 WDI_SetSTAKeyReq must have been called.
3067
Jeff Johnsone7245742012-09-05 17:12:55 -07003068 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003070
Jeff Johnson295189b2012-06-20 16:38:30 -07003071 wdiRemoveSTAKeyRspCb: callback for passing back the
3072 response of the remove STA key operation received from
3073 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003074
Jeff Johnson295189b2012-06-20 16:38:30 -07003075 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 callback
3077
Jeff Johnson295189b2012-06-20 16:38:30 -07003078 @see WDI_SetSTAKeyReq
3079 @return Result of the function call
3080*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003081WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003082WDI_RemoveSTAKeyReq
3083(
3084 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3085 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3086 void* pUserData
3087)
3088{
3089 WDI_EventInfoType wdiEventData;
3090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3091
3092 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003093 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003094 ------------------------------------------------------------------------*/
3095 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3096 {
3097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3098 "WDI API call before module is initialized - Fail request");
3099
Jeff Johnsone7245742012-09-05 17:12:55 -07003100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003101 }
3102
3103 /*------------------------------------------------------------------------
3104 Fill in Event data and post to the Main FSM
3105 ------------------------------------------------------------------------*/
3106 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003107 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3108 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3109 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003110 wdiEventData.pUserData = pUserData;
3111
3112 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3113
3114}/*WDI_RemoveSTAKeyReq*/
3115
3116
3117/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003118 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003119 wants to install a STA Bcast encryption key on the HW.
3120 Upon the call of this API the WLAN DAL will pack and
3121 send a HAL Start request message to the lower RIVA
3122 sub-system if DAL is in state STARTED.
3123
3124 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003125 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003126
3127 WDI_PostAssocReq must have been called.
3128
Jeff Johnsone7245742012-09-05 17:12:55 -07003129 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003131
Jeff Johnson295189b2012-06-20 16:38:30 -07003132 wdiSetSTABcastKeyRspCb: callback for passing back the
3133 response of the set BSS Key operation received from the
3134 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003135
Jeff Johnson295189b2012-06-20 16:38:30 -07003136 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003137 callback
3138
Jeff Johnson295189b2012-06-20 16:38:30 -07003139 @see WDI_PostAssocReq
3140 @return Result of the function call
3141*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003142WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003143WDI_SetSTABcastKeyReq
3144(
3145 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3146 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3147 void* pUserData
3148)
3149
3150{
3151 WDI_EventInfoType wdiEventData;
3152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3153
3154 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003155 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003156 ------------------------------------------------------------------------*/
3157 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3158 {
3159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3160 "WDI API call before module is initialized - Fail request");
3161
Jeff Johnsone7245742012-09-05 17:12:55 -07003162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003163 }
3164
3165 /*------------------------------------------------------------------------
3166 Fill in Event data and post to the Main FSM
3167 ------------------------------------------------------------------------*/
3168 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003169 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3170 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3171 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003172 wdiEventData.pUserData = pUserData;
3173
3174 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3175
3176}/*WDI_SetSTABcastKeyReq*/
3177
3178/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003179 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 MAC wants to uninstall a STA Bcast key from HW. Upon the
3181 call of this API the WLAN DAL will pack and send a HAL
3182 Remove STA Bcast Key request message to the lower RIVA
3183 sub-system if DAL is in state STARTED.
3184
3185 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003186 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003187
3188 WDI_SetSTABcastKeyReq must have been called.
3189
Jeff Johnsone7245742012-09-05 17:12:55 -07003190 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003191 parameters as specified by the Device
3192 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003193
Jeff Johnson295189b2012-06-20 16:38:30 -07003194 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3195 response of the remove STA Bcast key operation received
3196 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003197
Jeff Johnson295189b2012-06-20 16:38:30 -07003198 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003199 callback
3200
Jeff Johnson295189b2012-06-20 16:38:30 -07003201 @see WDI_SetSTABcastKeyReq
3202 @return Result of the function call
3203*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003204WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003205WDI_RemoveSTABcastKeyReq
3206(
3207 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3208 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3209 void* pUserData
3210)
3211{
3212 WDI_EventInfoType wdiEventData;
3213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3214
3215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003217 ------------------------------------------------------------------------*/
3218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3219 {
3220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3221 "WDI API call before module is initialized - Fail request");
3222
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003224 }
3225
3226 /*------------------------------------------------------------------------
3227 Fill in Event data and post to the Main FSM
3228 ------------------------------------------------------------------------*/
3229 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003230 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3231 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3232 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003233 wdiEventData.pUserData = pUserData;
3234
3235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3236
3237}/*WDI_RemoveSTABcastKeyReq*/
3238
3239/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003240 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003241 MAC wants to set Max Tx Power to HW. Upon the
3242 call of this API the WLAN DAL will pack and send a HAL
3243 Remove STA Bcast Key request message to the lower RIVA
3244 sub-system if DAL is in state STARTED.
3245
3246 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003247 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003248
3249 WDI_SetSTABcastKeyReq must have been called.
3250
Jeff Johnsone7245742012-09-05 17:12:55 -07003251 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003252 parameters as specified by the Device
3253 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003254
Jeff Johnson295189b2012-06-20 16:38:30 -07003255 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3256 response of the remove STA Bcast key operation received
3257 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003258
Jeff Johnson295189b2012-06-20 16:38:30 -07003259 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003260 callback
3261
Jeff Johnson295189b2012-06-20 16:38:30 -07003262 @see WDI_SetMaxTxPowerReq
3263 @return Result of the function call
3264*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003265WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003266WDI_SetMaxTxPowerReq
3267(
3268 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3269 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3270 void* pUserData
3271)
3272{
3273 WDI_EventInfoType wdiEventData;
3274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3275
3276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003277 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003278 ------------------------------------------------------------------------*/
3279 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3280 {
3281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3282 "WDI API call before module is initialized - Fail request");
3283
Jeff Johnsone7245742012-09-05 17:12:55 -07003284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003285 }
3286
3287 /*------------------------------------------------------------------------
3288 Fill in Event data and post to the Main FSM
3289 ------------------------------------------------------------------------*/
3290 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003291 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3292 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3293 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003294 wdiEventData.pUserData = pUserData;
3295
3296 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3297}
3298
schang86c22c42013-03-13 18:41:24 -07003299/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003300 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3301 MAC wants to set Max Tx Power to HW for specific band.
3302
3303 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3304
3305 wdiReqStatusCb: callback for passing back the
3306 response msg from the device
3307
3308 pUserData: user data will be passed back with the
3309 callback
3310
3311 @see WDI_SetMaxTxPowerPerBandReq
3312 @return Result of the function call
3313*/
3314WDI_Status
3315WDI_SetMaxTxPowerPerBandReq
3316(
3317 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3318 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3319 void* pUserData
3320)
3321{
3322 WDI_EventInfoType wdiEventData;
3323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3324
3325 /*------------------------------------------------------------------------
3326 Sanity Check
3327 ------------------------------------------------------------------------*/
3328 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3329 {
3330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3331 "WDI API call before module is initialized - Fail request");
3332
3333 return WDI_STATUS_E_NOT_ALLOWED;
3334 }
3335
3336 /*------------------------------------------------------------------------
3337 Fill in Event data and post to the Main FSM
3338 ------------------------------------------------------------------------*/
3339 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3340 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3341 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3342 wdiEventData.pCBfnc = wdiReqStatusCb;
3343 wdiEventData.pUserData = pUserData;
3344
3345 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3346}
3347
3348/**
schang86c22c42013-03-13 18:41:24 -07003349 @brief WDI_SetTxPowerReq will be called when the upper
3350 MAC wants to set Tx Power to HW.
3351 In state BUSY this request will be queued. Request won't
3352 be allowed in any other state.
3353
3354
3355 @param pwdiSetTxPowerParams: set TS Power parameters
3356 BSSID and target TX Power with dbm included
3357
3358 wdiReqStatusCb: callback for passing back the response
3359
3360 pUserData: user data will be passed back with the
3361 callback
3362
3363 @return Result of the function call
3364*/
3365WDI_Status
3366WDI_SetTxPowerReq
3367(
3368 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3369 WDA_SetTxPowerRspCb wdiReqStatusCb,
3370 void* pUserData
3371)
3372{
3373 WDI_EventInfoType wdiEventData;
3374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3375
3376 /*------------------------------------------------------------------------
3377 Sanity Check
3378 ------------------------------------------------------------------------*/
3379 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3380 {
3381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3382 "WDI API call before module is initialized - Fail request");
3383
3384 return WDI_STATUS_E_NOT_ALLOWED;
3385 }
3386
3387 /*------------------------------------------------------------------------
3388 Fill in Event data and post to the Main FSM
3389 ------------------------------------------------------------------------*/
3390 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3391 wdiEventData.pEventData = pwdiSetTxPowerParams;
3392 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3393 wdiEventData.pCBfnc = wdiReqStatusCb;
3394 wdiEventData.pUserData = pUserData;
3395
3396 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3397}
3398
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003399#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003400WDI_Status
3401WDI_TSMStatsReq
3402(
3403 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3404 WDI_TsmRspCb wdiReqStatusCb,
3405 void* pUserData
3406)
3407{
3408 WDI_EventInfoType wdiEventData;
3409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 /*------------------------------------------------------------------------
3411 Sanity Check
3412 ------------------------------------------------------------------------*/
3413 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3414 {
3415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3416 "WDI API call before module is initialized - Fail request");
3417
3418 return WDI_STATUS_E_NOT_ALLOWED;
3419 }
3420
3421 /*------------------------------------------------------------------------
3422 Fill in Event data and post to the Main FSM
3423 ------------------------------------------------------------------------*/
3424 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3425 wdiEventData.pEventData = pwdiTsmReqParams;
3426 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3427 wdiEventData.pCBfnc = wdiReqStatusCb;
3428 wdiEventData.pUserData = pUserData;
3429
3430 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3431
3432}
3433#endif
3434
3435/*========================================================================
3436
3437 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003438
Jeff Johnson295189b2012-06-20 16:38:30 -07003439==========================================================================*/
3440
3441/**
3442 @brief WDI_AddTSReq will be called when the upper MAC to inform
3443 the device of a successful add TSpec negotiation. HW
3444 needs to receive the TSpec Info from the UMAC in order
3445 to configure properly the QoS data traffic. Upon the
3446 call of this API the WLAN DAL will pack and send a HAL
3447 Add TS request message to the lower RIVA sub-system if
3448 DAL is in state STARTED.
3449
3450 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003451 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003452
3453 WDI_PostAssocReq must have been called.
3454
3455 @param wdiAddTsReqParams: the add TS parameters as specified by
3456 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003457
Jeff Johnson295189b2012-06-20 16:38:30 -07003458 wdiAddTsRspCb: callback for passing back the response of
3459 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003460
Jeff Johnson295189b2012-06-20 16:38:30 -07003461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003462 callback
3463
Jeff Johnson295189b2012-06-20 16:38:30 -07003464 @see WDI_PostAssocReq
3465 @return Result of the function call
3466*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003468WDI_AddTSReq
3469(
3470 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3471 WDI_AddTsRspCb wdiAddTsRspCb,
3472 void* pUserData
3473)
3474{
3475 WDI_EventInfoType wdiEventData;
3476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3477
3478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003480 ------------------------------------------------------------------------*/
3481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3482 {
3483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3484 "WDI API call before module is initialized - Fail request");
3485
Jeff Johnsone7245742012-09-05 17:12:55 -07003486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 }
3488
3489 /*------------------------------------------------------------------------
3490 Fill in Event data and post to the Main FSM
3491 ------------------------------------------------------------------------*/
3492 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003493 wdiEventData.pEventData = pwdiAddTsReqParams;
3494 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3495 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003496 wdiEventData.pUserData = pUserData;
3497
3498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3499
3500}/*WDI_AddTSReq*/
3501
3502
3503
3504/**
3505 @brief WDI_DelTSReq will be called when the upper MAC has ended
3506 admission on a specific AC. This is to inform HW that
3507 QoS traffic parameters must be rest. Upon the call of
3508 this API the WLAN DAL will pack and send a HAL Del TS
3509 request message to the lower RIVA sub-system if DAL is
3510 in state STARTED.
3511
3512 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003513 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003514
3515 WDI_AddTSReq must have been called.
3516
3517 @param wdiDelTsReqParams: the del TS parameters as specified by
3518 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003519
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 wdiDelTsRspCb: callback for passing back the response of
3521 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003522
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003524 callback
3525
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 @see WDI_AddTSReq
3527 @return Result of the function call
3528*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003529WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003530WDI_DelTSReq
3531(
3532 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3533 WDI_DelTsRspCb wdiDelTsRspCb,
3534 void* pUserData
3535)
3536{
3537 WDI_EventInfoType wdiEventData;
3538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3539
3540 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003541 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003542 ------------------------------------------------------------------------*/
3543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3544 {
3545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3546 "WDI API call before module is initialized - Fail request");
3547
Jeff Johnsone7245742012-09-05 17:12:55 -07003548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003549 }
3550
3551 /*------------------------------------------------------------------------
3552 Fill in Event data and post to the Main FSM
3553 ------------------------------------------------------------------------*/
3554 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003555 wdiEventData.pEventData = pwdiDelTsReqParams;
3556 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3557 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003558 wdiEventData.pUserData = pUserData;
3559
3560 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3561
3562}/*WDI_DelTSReq*/
3563
3564
3565
3566/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003568 wishes to update the EDCA parameters used by HW for QoS
3569 data traffic. Upon the call of this API the WLAN DAL
3570 will pack and send a HAL Update EDCA Params request
3571 message to the lower RIVA sub-system if DAL is in state
3572 STARTED.
3573
3574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003576
3577 WDI_PostAssocReq must have been called.
3578
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003581
Jeff Johnson295189b2012-06-20 16:38:30 -07003582 wdiUpdateEDCAParamsRspCb: callback for passing back the
3583 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003584
Jeff Johnson295189b2012-06-20 16:38:30 -07003585 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 callback
3587
Jeff Johnson295189b2012-06-20 16:38:30 -07003588 @see WDI_PostAssocReq
3589 @return Result of the function call
3590*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003592WDI_UpdateEDCAParams
3593(
3594 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3595 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3596 void* pUserData
3597)
3598{
3599 WDI_EventInfoType wdiEventData;
3600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3601
3602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 ------------------------------------------------------------------------*/
3605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3606 {
3607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3608 "WDI API call before module is initialized - Fail request");
3609
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003611 }
3612
3613 /*------------------------------------------------------------------------
3614 Fill in Event data and post to the Main FSM
3615 ------------------------------------------------------------------------*/
3616 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003617 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3618 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3619 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003620 wdiEventData.pUserData = pUserData;
3621
3622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3623
3624}/*WDI_UpdateEDCAParams*/
3625
3626
3627/**
3628 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3629 successfully a BA session and needs to notify the HW for
3630 the appropriate settings to take place. Upon the call of
3631 this API the WLAN DAL will pack and send a HAL Add BA
3632 request message to the lower RIVA sub-system if DAL is
3633 in state STARTED.
3634
3635 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003637
3638 WDI_PostAssocReq must have been called.
3639
3640 @param wdiAddBAReqParams: the add BA parameters as specified by
3641 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003642
Jeff Johnson295189b2012-06-20 16:38:30 -07003643 wdiAddBARspCb: callback for passing back the response of
3644 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003645
Jeff Johnson295189b2012-06-20 16:38:30 -07003646 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003647 callback
3648
Jeff Johnson295189b2012-06-20 16:38:30 -07003649 @see WDI_PostAssocReq
3650 @return Result of the function call
3651*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003652WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003653WDI_AddBASessionReq
3654(
3655 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3656 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3657 void* pUserData
3658)
3659{
3660 WDI_EventInfoType wdiEventData;
3661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3662
3663 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003664 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003665 ------------------------------------------------------------------------*/
3666 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3667 {
3668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3669 "WDI API call before module is initialized - Fail request");
3670
Jeff Johnsone7245742012-09-05 17:12:55 -07003671 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003672 }
3673
3674 /*------------------------------------------------------------------------
3675 Fill in Event data and post to the Main FSM
3676 ------------------------------------------------------------------------*/
3677 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003678 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3679 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3680 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003681 wdiEventData.pUserData = pUserData;
3682
3683 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3684
3685}/*WDI_AddBASessionReq*/
3686
3687/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003688 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 inform HW that it has deleted a previously created BA
3690 session. Upon the call of this API the WLAN DAL will
3691 pack and send a HAL Del BA request message to the lower
3692 RIVA sub-system if DAL is in state STARTED.
3693
3694 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003695 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003696
3697 WDI_AddBAReq must have been called.
3698
3699 @param wdiDelBAReqParams: the del BA parameters as specified by
3700 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003701
Jeff Johnson295189b2012-06-20 16:38:30 -07003702 wdiDelBARspCb: callback for passing back the response of
3703 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003704
Jeff Johnson295189b2012-06-20 16:38:30 -07003705 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003706 callback
3707
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 @see WDI_AddBAReq
3709 @return Result of the function call
3710*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003711WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003712WDI_DelBAReq
3713(
3714 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3715 WDI_DelBARspCb wdiDelBARspCb,
3716 void* pUserData
3717)
3718{
3719 WDI_EventInfoType wdiEventData;
3720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3721
3722 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003723 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 ------------------------------------------------------------------------*/
3725 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3726 {
3727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3728 "WDI API call before module is initialized - Fail request");
3729
Jeff Johnsone7245742012-09-05 17:12:55 -07003730 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003731 }
3732
3733 /*------------------------------------------------------------------------
3734 Fill in Event data and post to the Main FSM
3735 ------------------------------------------------------------------------*/
3736 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003737 wdiEventData.pEventData = pwdiDelBAReqParams;
3738 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3739 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 wdiEventData.pUserData = pUserData;
3741
3742 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3743
3744}/*WDI_DelBAReq*/
3745
Jeff Johnsone7245742012-09-05 17:12:55 -07003746/*========================================================================
3747
Jeff Johnson295189b2012-06-20 16:38:30 -07003748 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003749
Jeff Johnson295189b2012-06-20 16:38:30 -07003750==========================================================================*/
3751
3752/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003753 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003754 wants to set the power save related configurations of
3755 the WLAN Device. Upon the call of this API the WLAN DAL
3756 will pack and send a HAL Update CFG request message to
3757 the lower RIVA sub-system if DAL is in state STARTED.
3758
3759 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003761
3762 WDI_Start must have been called.
3763
Jeff Johnsone7245742012-09-05 17:12:55 -07003764 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003765 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003766
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 wdiSetPwrSaveCfgCb: callback for passing back the
3768 response of the set power save cfg operation received
3769 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003770
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003772 callback
3773
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003775 @return Result of the function call
3776*/
3777WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003778WDI_SetPwrSaveCfgReq
3779(
3780 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3781 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3782 void* pUserData
3783)
3784{
3785 WDI_EventInfoType wdiEventData;
3786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3787
3788 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003789 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 ------------------------------------------------------------------------*/
3791 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3792 {
3793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3794 "WDI API call before module is initialized - Fail request");
3795
Jeff Johnsone7245742012-09-05 17:12:55 -07003796 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 }
3798
3799 /*------------------------------------------------------------------------
3800 Fill in Event data and post to the Main FSM
3801 ------------------------------------------------------------------------*/
3802 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003803 wdiEventData.pEventData = pwdiPowerSaveCfg;
3804 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3805 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003806 wdiEventData.pUserData = pUserData;
3807
3808 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3809
3810}/*WDI_SetPwrSaveCfgReq*/
3811
3812/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003813 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003814 request the device to get into IMPS power state. Upon
3815 the call of this API the WLAN DAL will send a HAL Enter
3816 IMPS request message to the lower RIVA sub-system if DAL
3817 is in state STARTED.
3818
3819 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003820 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003821
Jeff Johnsone7245742012-09-05 17:12:55 -07003822
3823 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 response of the Enter IMPS operation received from the
3825 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003826
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003828 callback
3829
Jeff Johnson295189b2012-06-20 16:38:30 -07003830 @see WDI_Start
3831 @return Result of the function call
3832*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003833WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003834WDI_EnterImpsReq
3835(
Mihir Shetea4306052014-03-25 00:02:54 +05303836 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003837 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3838 void* pUserData
3839)
3840{
3841 WDI_EventInfoType wdiEventData;
3842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3843
3844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003845 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003846 ------------------------------------------------------------------------*/
3847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3848 {
3849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3850 "WDI API call before module is initialized - Fail request");
3851
Jeff Johnsone7245742012-09-05 17:12:55 -07003852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003853 }
3854
3855 /*------------------------------------------------------------------------
3856 Fill in Event data and post to the Main FSM
3857 ------------------------------------------------------------------------*/
3858 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303859 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3860 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003861 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003862 wdiEventData.pUserData = pUserData;
3863
3864 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3865
3866}/*WDI_EnterImpsReq*/
3867
3868/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003869 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003870 request the device to get out of IMPS power state. Upon
3871 the call of this API the WLAN DAL will send a HAL Exit
3872 IMPS request message to the lower RIVA sub-system if DAL
3873 is in state STARTED.
3874
3875 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003876 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003877
Jeff Johnson295189b2012-06-20 16:38:30 -07003878
Jeff Johnsone7245742012-09-05 17:12:55 -07003879
3880 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003881 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003882
Jeff Johnson295189b2012-06-20 16:38:30 -07003883 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003884 callback
3885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 @see WDI_Start
3887 @return Result of the function call
3888*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003889WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003890WDI_ExitImpsReq
3891(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303892 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3894 void* pUserData
3895)
3896{
3897 WDI_EventInfoType wdiEventData;
3898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3899
3900 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003901 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003902 ------------------------------------------------------------------------*/
3903 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3904 {
3905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3906 "WDI API call before module is initialized - Fail request");
3907
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 }
3910
3911 /*------------------------------------------------------------------------
3912 Fill in Event data and post to the Main FSM
3913 ------------------------------------------------------------------------*/
3914 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303915 wdiEventData.pEventData = pwdiExitImpsReqParams;
3916 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 wdiEventData.pUserData = pUserData;
3919
3920 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3921
3922}/*WDI_ExitImpsReq*/
3923
3924/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003925 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003926 request the device to get into BMPS power state. Upon
3927 the call of this API the WLAN DAL will pack and send a
3928 HAL Enter BMPS request message to the lower RIVA
3929 sub-system if DAL is in state STARTED.
3930
3931 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003933
3934 WDI_PostAssocReq must have been called.
3935
Jeff Johnsone7245742012-09-05 17:12:55 -07003936 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003938
Jeff Johnson295189b2012-06-20 16:38:30 -07003939 wdiEnterBmpsRspCb: callback for passing back the
3940 response of the Enter BMPS operation received from the
3941 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003942
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003944 callback
3945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 @see WDI_PostAssocReq
3947 @return Result of the function call
3948*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003949WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003950WDI_EnterBmpsReq
3951(
3952 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3953 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3954 void* pUserData
3955)
3956{
3957 WDI_EventInfoType wdiEventData;
3958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3959
3960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003961 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003962 ------------------------------------------------------------------------*/
3963 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3964 {
3965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3966 "WDI API call before module is initialized - Fail request");
3967
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 }
3970
3971 /*------------------------------------------------------------------------
3972 Fill in Event data and post to the Main FSM
3973 ------------------------------------------------------------------------*/
3974 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003975 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3976 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3977 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 wdiEventData.pUserData = pUserData;
3979
3980 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3981
3982}/*WDI_EnterBmpsReq*/
3983
3984/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003985 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003986 request the device to get out of BMPS power state. Upon
3987 the call of this API the WLAN DAL will pack and send a
3988 HAL Exit BMPS request message to the lower RIVA
3989 sub-system if DAL is in state STARTED.
3990
3991 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003993
3994 WDI_PostAssocReq must have been called.
3995
Jeff Johnsone7245742012-09-05 17:12:55 -07003996 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003997 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003998
Jeff Johnson295189b2012-06-20 16:38:30 -07003999 wdiExitBmpsRspCb: callback for passing back the response
4000 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004001
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004003 callback
4004
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 @see WDI_PostAssocReq
4006 @return Result of the function call
4007*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004008WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004009WDI_ExitBmpsReq
4010(
4011 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
4012 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
4013 void* pUserData
4014)
4015{
4016 WDI_EventInfoType wdiEventData;
4017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4018
4019 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 ------------------------------------------------------------------------*/
4022 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4023 {
4024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4025 "WDI API call before module is initialized - Fail request");
4026
Jeff Johnsone7245742012-09-05 17:12:55 -07004027 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004028 }
4029
4030 /*------------------------------------------------------------------------
4031 Fill in Event data and post to the Main FSM
4032 ------------------------------------------------------------------------*/
4033 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004034 wdiEventData.pEventData = pwdiExitBmpsReqParams;
4035 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
4036 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004037 wdiEventData.pUserData = pUserData;
4038
4039 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4040
4041}/*WDI_ExitBmpsReq*/
4042
4043/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 request the device to get into UAPSD power state. Upon
4046 the call of this API the WLAN DAL will pack and send a
4047 HAL Enter UAPSD request message to the lower RIVA
4048 sub-system if DAL is in state STARTED.
4049
4050 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004052
4053 WDI_PostAssocReq must have been called.
4054 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004055
4056 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004058
Jeff Johnson295189b2012-06-20 16:38:30 -07004059 wdiEnterUapsdRspCb: callback for passing back the
4060 response of the Enter UAPSD operation received from the
4061 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004062
Jeff Johnson295189b2012-06-20 16:38:30 -07004063 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 callback
4065
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4067 @return Result of the function call
4068*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004069WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004070WDI_EnterUapsdReq
4071(
4072 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4073 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4074 void* pUserData
4075)
4076{
4077 WDI_EventInfoType wdiEventData;
4078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4079
4080 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004081 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 ------------------------------------------------------------------------*/
4083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4084 {
4085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4086 "WDI API call before module is initialized - Fail request");
4087
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 }
4090
4091 /*------------------------------------------------------------------------
4092 Fill in Event data and post to the Main FSM
4093 ------------------------------------------------------------------------*/
4094 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4096 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4097 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004098 wdiEventData.pUserData = pUserData;
4099
4100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4101
4102}/*WDI_EnterUapsdReq*/
4103
4104/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004105 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 request the device to get out of UAPSD power state. Upon
4107 the call of this API the WLAN DAL will send a HAL Exit
4108 UAPSD request message to the lower RIVA sub-system if
4109 DAL is in state STARTED.
4110
4111 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004113
4114 WDI_PostAssocReq must have been called.
4115
Jeff Johnsone7245742012-09-05 17:12:55 -07004116 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004117 response of the Exit UAPSD operation received from the
4118 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 callback
4122
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 @see WDI_PostAssocReq
4124 @return Result of the function call
4125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004127WDI_ExitUapsdReq
4128(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004129 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004130 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4131 void* pUserData
4132)
4133{
4134 WDI_EventInfoType wdiEventData;
4135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4136
4137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 ------------------------------------------------------------------------*/
4140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4141 {
4142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4143 "WDI API call before module is initialized - Fail request");
4144
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 }
4147
4148 /*------------------------------------------------------------------------
4149 Fill in Event data and post to the Main FSM
4150 ------------------------------------------------------------------------*/
4151 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004152 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4153 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 wdiEventData.pUserData = pUserData;
4156
4157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4158
4159}/*WDI_ExitUapsdReq*/
4160
4161/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 MAC wants to set the UAPSD related configurations
4164 of an associated STA (while acting as an AP) to the WLAN
4165 Device. Upon the call of this API the WLAN DAL will pack
4166 and send a HAL Update UAPSD params request message to
4167 the lower RIVA sub-system if DAL is in state STARTED.
4168
4169 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004171
4172 WDI_ConfigBSSReq must have been called.
4173
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004176
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 wdiUpdateUapsdParamsCb: callback for passing back the
4178 response of the update UAPSD params operation received
4179 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004180
Jeff Johnson295189b2012-06-20 16:38:30 -07004181 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004182 callback
4183
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 @see WDI_ConfigBSSReq
4185 @return Result of the function call
4186*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004187WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004188WDI_UpdateUapsdParamsReq
4189(
4190 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4191 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4192 void* pUserData
4193)
4194{
4195 WDI_EventInfoType wdiEventData;
4196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4197
4198 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004200 ------------------------------------------------------------------------*/
4201 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4202 {
4203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4204 "WDI API call before module is initialized - Fail request");
4205
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 }
4208
4209 /*------------------------------------------------------------------------
4210 Fill in Event data and post to the Main FSM
4211 ------------------------------------------------------------------------*/
4212 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004214 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004215 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004216 wdiEventData.pUserData = pUserData;
4217
4218 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4219
4220}/*WDI_UpdateUapsdParamsReq*/
4221
4222/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 MAC wants to set the UAPSD related configurations before
4225 requesting for enter UAPSD power state to the WLAN
4226 Device. Upon the call of this API the WLAN DAL will pack
4227 and send a HAL Set UAPSD params request message to
4228 the lower RIVA sub-system if DAL is in state STARTED.
4229
4230 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004231 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004232
4233 WDI_PostAssocReq must have been called.
4234
4235 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4236 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004237
Jeff Johnson295189b2012-06-20 16:38:30 -07004238 wdiSetUapsdAcParamsCb: callback for passing back the
4239 response of the set UAPSD params operation received from
4240 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004241
Jeff Johnson295189b2012-06-20 16:38:30 -07004242 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004243 callback
4244
Jeff Johnson295189b2012-06-20 16:38:30 -07004245 @see WDI_PostAssocReq
4246 @return Result of the function call
4247*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004248WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004249WDI_SetUapsdAcParamsReq
4250(
4251 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4252 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4253 void* pUserData
4254)
4255{
4256 WDI_EventInfoType wdiEventData;
4257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4258
4259 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004260 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 ------------------------------------------------------------------------*/
4262 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4263 {
4264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4265 "WDI API call before module is initialized - Fail request");
4266
Jeff Johnsone7245742012-09-05 17:12:55 -07004267 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 }
4269
4270 /*------------------------------------------------------------------------
4271 Fill in Event data and post to the Main FSM
4272 ------------------------------------------------------------------------*/
4273 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 wdiEventData.pEventData = pwdiUapsdInfo;
4275 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4276 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004277 wdiEventData.pUserData = pUserData;
4278
4279 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4280
4281}/*WDI_SetUapsdAcParamsReq*/
4282
4283/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304284 @brief WDI_FWLoggingDXEdoneInd
4285
4286 FW Logging DXE done Indication from the upper layer will be sent
4287 down to HAL
4288
4289 @param WDI_FWLoggingDXEdoneIndInfoType
4290
4291 @see
4292
4293 @return Status of the request
4294*/
4295WDI_Status
4296WDI_FWLoggingDXEdoneInd
4297(
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304298 wpt_uint32 data
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304299)
4300{
4301
4302 WDI_EventInfoType wdiEventData;
4303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4304
4305 /*------------------------------------------------------------------------
4306 Sanity Check
4307 ------------------------------------------------------------------------*/
4308 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4309 {
4310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4311 "WDI API call before module is initialized - Fail request");
4312
4313 return WDI_STATUS_E_NOT_ALLOWED;
4314 }
4315
4316 /*------------------------------------------------------------------------
4317 Fill in Event data and post to the Main FSM
4318 ------------------------------------------------------------------------*/
4319 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304320 wdiEventData.pEventData = (void *)&data;
4321 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304322 wdiEventData.pCBfnc = NULL;
4323 wdiEventData.pUserData = NULL;
4324
4325 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4326
4327}/*WDI_FWLoggingDXEdoneInd*/
4328
4329/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304330 @brief WDI_GetFrameLogReq will be called when the upper
4331 MAC wants to initialize frame logging. Upon the call of
4332 this API the WLAN DAL will pack and send a HAL
4333 Frame logging init request message to
4334 the lower RIVA sub-system.
4335
4336 In state BUSY this request will be queued. Request won't
4337 be allowed in any other state.
4338
4339
4340 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4341 as specified by the Device Interface
4342
4343 wdiGetFrameLogRspCb: callback for passing back the
4344 response of the frame logging init operation received
4345 from the device
4346
4347 pUserData: user data will be passed back with the
4348 callback
4349
4350 @return Result of the function call
4351*/
4352WDI_Status
4353WDI_GetFrameLogReq
4354(
4355 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4356 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4357 void* pUserData
4358)
4359{
4360 WDI_EventInfoType wdiEventData;
4361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4362
4363 /*------------------------------------------------------------------------
4364 Sanity Check
4365 ------------------------------------------------------------------------*/
4366 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4367 {
4368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4369 "WDI API call before module is initialized - Fail request");
4370
4371 return WDI_STATUS_E_NOT_ALLOWED;
4372 }
4373
4374 /*------------------------------------------------------------------------
4375 Fill in Event data and post to the Main FSM
4376 ------------------------------------------------------------------------*/
4377 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4378 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4379 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4380 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4381 wdiEventData.pUserData = pUserData;
4382
4383 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4384}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304385
4386
4387/**
4388 @brief WDI_FatalEventLogsReq will be called when the upper
4389 MAC wants to send the flush command. Upon the call of
4390 this API the WLAN DAL will pack and send a HAL
4391 Fatal Event Req message to the lower RIVA sub-system.
4392
4393 In state BUSY this request will be queued. Request won't
4394 be allowed in any other state.
4395
4396
4397 @param pwdiFlushLogsReqInfo: the Flush Logs params
4398 as specified by the Device Interface
4399
4400 wdiFlushLogsRspCb: callback for passing back the
4401 response of the Flush Logs operation received
4402 from the device
4403
4404 pUserData: user data will be passed back with the
4405 callback
4406
4407 @return Result of the function call
4408*/
4409
4410WDI_Status
4411WDI_FatalEventLogsReq
4412(
4413 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4414 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4415 void* pUserData
4416)
4417{
4418 WDI_EventInfoType wdiEventData;
4419
4420 /*------------------------------------------------------------------------
4421 Sanity Check
4422 ------------------------------------------------------------------------*/
4423 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4424 {
4425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4426 "WDI API call before module is initialized - Fail request");
4427
4428 return WDI_STATUS_E_NOT_ALLOWED;
4429 }
4430
4431 /*------------------------------------------------------------------------
4432 Fill in Event data and post to the Main FSM
4433 ------------------------------------------------------------------------*/
4434 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4435 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4436 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4437 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4438 wdiEventData.pUserData = pUserData;
4439
4440 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4441
4442}
4443
4444
Siddharth Bhal64246172015-02-27 01:04:37 +05304445/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304446 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304447 MAC wants to initialize frame logging. Upon the call of
4448 this API the WLAN DAL will pack and send a HAL
4449 Frame logging init request message to
4450 the lower RIVA sub-system.
4451
4452 In state BUSY this request will be queued. Request won't
4453 be allowed in any other state.
4454
4455
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304456 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304457 as specified by the Device Interface
4458
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304459 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304460 response of the frame logging init operation received
4461 from the device
4462
4463 pUserData: user data will be passed back with the
4464 callback
4465
4466 @return Result of the function call
4467*/
4468WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304469WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304470(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304471 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4472 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304473 void* pUserData
4474)
4475{
4476 WDI_EventInfoType wdiEventData;
4477
4478 /*------------------------------------------------------------------------
4479 Sanity Check
4480 ------------------------------------------------------------------------*/
4481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4482 {
4483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4484 "WDI API call before module is initialized - Fail request");
4485
4486 return WDI_STATUS_E_NOT_ALLOWED;
4487 }
4488
4489 /*------------------------------------------------------------------------
4490 Fill in Event data and post to the Main FSM
4491 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304492 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4493 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4494 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4495 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304496 wdiEventData.pUserData = pUserData;
4497
4498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4499}
4500
c_manjeecfd1efb2015-09-25 19:32:34 +05304501
4502/**
4503 @brief WDI_FwrMemDumpReq will be called when the upper
4504 MAC wants to get fwr mem dump. Upon the call of
4505 this API the WLAN DAL will pack and send a HAL
4506 Frame logging init request message to
4507 the lower RIVA sub-system.
4508
4509 In state BUSY this request will be queued. Request won't
4510 be allowed in any other state.
4511
4512
4513 @param pWdiFwrMemDumpReq: the fwr mem dump req params
4514 as specified by the Device Interface
4515
4516 wdiFWLoggingInitReqCb: callback for passing back the
4517 response of the frame logging init operation received
4518 from the device
4519
4520 pUserData: user data will be passed back with the
4521 callback
4522
4523 @return Result of the function call
4524*/
4525
4526WDI_Status
4527WDI_FwrMemDumpReq
4528
4529(
4530 WDI_FwrMemDumpReqType *pwdiFwrMemDumpReqInfo,
4531 WDI_FwrMemDumpCb wdiFwrMemDumpRspCb,
4532 void* pUserData
4533)
4534{
4535 WDI_EventInfoType wdiEventData;
4536
4537 /*------------------------------------------------------------------------
4538 Sanity Check
4539 ------------------------------------------------------------------------*/
4540 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4541 {
4542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4543 "WDI API call before module is initialized - Fail request");
4544
4545 return WDI_STATUS_E_NOT_ALLOWED;
4546 }
4547
4548 /*------------------------------------------------------------------------
4549 Fill in Event data and post to the Main FSM
4550 ------------------------------------------------------------------------*/
4551 wdiEventData.wdiRequest = WDI_FWR_MEM_DUMP_REQ;
4552 wdiEventData.pEventData = pwdiFwrMemDumpReqInfo;
4553 wdiEventData.uEventDataSize = sizeof(WDI_FwrMemDumpReqType);
4554 wdiEventData.pCBfnc = wdiFwrMemDumpRspCb;
4555 wdiEventData.pUserData = pUserData;
4556
4557 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4558}
4559
4560
4561
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304562/**
Gupta, Kapil7c34b322015-09-30 13:12:35 +05304563 @brief WDI_StartRssiMonitorReq will be called when the upper
4564 MAC wants to initialize Rssi Monitor on a bssid.
4565 Upon the call of this API the WLAN DAL will pack and
4566 send a HAL Rssi Monitor init request message to
4567 the lower RIVA sub-system.
4568
4569 In state BUSY this request will be queued. Request won't
4570 be allowed in any other state.
4571
4572
4573 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4574 as specified by the Device Interface
4575
4576 wdiRssiMonitorStartRspCb: callback for passing back the
4577 response of the rssi monitor operation received
4578 from the device
4579
4580 pUserData: user data will be passed back with the
4581 callback
4582
4583 @return Result of the function call
4584*/
4585WDI_Status
4586WDI_StartRssiMonitorReq
4587(
4588 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4589 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb,
4590 void* pUserData
4591)
4592{
4593 WDI_EventInfoType wdiEventData;
4594
4595 /*------------------------------------------------------------------------
4596 Sanity Check
4597 ------------------------------------------------------------------------*/
4598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4599 {
4600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4601 "WDI API call before module is initialized - Fail request");
4602
4603 return WDI_STATUS_E_NOT_ALLOWED;
4604 }
4605
4606 /*------------------------------------------------------------------------
4607 Fill in Event data and post to the Main FSM
4608 ------------------------------------------------------------------------*/
4609 wdiEventData.wdiRequest = WDI_START_RSSI_MONITOR_REQ;
4610 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4611 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4612 wdiEventData.pCBfnc = wdiRssiMonitorStartRspCb;
4613 wdiEventData.pUserData = pUserData;
4614
4615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4616}
4617
4618/**
4619 @brief WDI_StopRssiMonitorReq will be called when the upper
4620 MAC wants to stop Rssi Monitor on a bssid.
4621 Upon the call of this API the WLAN DAL will pack and
4622 send a HAL Rssi Monitor stop request message to
4623 the lower RIVA sub-system.
4624
4625 In state BUSY this request will be queued. Request won't
4626 be allowed in any other state.
4627
4628
4629 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4630 as specified by the Device Interface
4631
4632 wdiRssiMonitorStopRspCb: callback for passing back the
4633 response of the rssi monitor operation received
4634 from the device
4635
4636 pUserData: user data will be passed back with the
4637 callback
4638
4639 @return Result of the function call
4640*/
4641WDI_Status
4642WDI_StopRssiMonitorReq
4643(
4644 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4645 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb,
4646 void* pUserData
4647)
4648{
4649 WDI_EventInfoType wdiEventData;
4650
4651 /*------------------------------------------------------------------------
4652 Sanity Check
4653 ------------------------------------------------------------------------*/
4654 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4655 {
4656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4657 "WDI API call before module is initialized - Fail request");
4658
4659 return WDI_STATUS_E_NOT_ALLOWED;
4660 }
4661
4662 /*------------------------------------------------------------------------
4663 Fill in Event data and post to the Main FSM
4664 ------------------------------------------------------------------------*/
4665 wdiEventData.wdiRequest = WDI_STOP_RSSI_MONITOR_REQ;
4666 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4667 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4668 wdiEventData.pCBfnc = wdiRssiMonitorStopRspCb;
4669 wdiEventData.pUserData = pUserData;
4670
4671 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4672}
4673
4674
4675/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004676 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004677 MAC wants to set/reset the RXP filters for received pkts
4678 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4679 and send a HAL configure RXP filter request message to
4680 the lower RIVA sub-system.
4681
4682 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004684
Jeff Johnsone7245742012-09-05 17:12:55 -07004685
4686 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004687 filter as specified by the Device
4688 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004689
Jeff Johnson295189b2012-06-20 16:38:30 -07004690 wdiConfigureRxpFilterCb: callback for passing back the
4691 response of the configure RXP filter operation received
4692 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004693
Jeff Johnson295189b2012-06-20 16:38:30 -07004694 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004695 callback
4696
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 @return Result of the function call
4698*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004699WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004700WDI_ConfigureRxpFilterReq
4701(
4702 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4703 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4704 void* pUserData
4705)
4706{
4707 WDI_EventInfoType wdiEventData;
4708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4709
4710 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004711 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004712 ------------------------------------------------------------------------*/
4713 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4714 {
4715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4716 "WDI API call before module is initialized - Fail request");
4717
Jeff Johnsone7245742012-09-05 17:12:55 -07004718 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 }
4720
4721 /*------------------------------------------------------------------------
4722 Fill in Event data and post to the Main FSM
4723 ------------------------------------------------------------------------*/
4724 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004725 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4726 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4727 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004728 wdiEventData.pUserData = pUserData;
4729
4730 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4731}/*WDI_ConfigureRxpFilterReq*/
4732
4733/**
4734 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4735 wants to set the beacon filters while in power save.
4736 Upon the call of this API the WLAN DAL will pack and
4737 send a Beacon filter request message to the
4738 lower RIVA sub-system.
4739
4740 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004741 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004742
Jeff Johnsone7245742012-09-05 17:12:55 -07004743
4744 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004745 filter as specified by the Device
4746 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004747
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 wdiBeaconFilterCb: callback for passing back the
4749 response of the set beacon filter operation received
4750 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004751
Jeff Johnson295189b2012-06-20 16:38:30 -07004752 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004753 callback
4754
Jeff Johnson295189b2012-06-20 16:38:30 -07004755 @return Result of the function call
4756*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004757WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004758WDI_SetBeaconFilterReq
4759(
4760 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4761 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4762 void* pUserData
4763)
4764{
4765 WDI_EventInfoType wdiEventData;
4766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4767
4768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004769 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004770 ------------------------------------------------------------------------*/
4771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4772 {
4773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4774 "WDI API call before module is initialized - Fail request");
4775
Jeff Johnsone7245742012-09-05 17:12:55 -07004776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 }
4778
4779 /*------------------------------------------------------------------------
4780 Fill in Event data and post to the Main FSM
4781 ------------------------------------------------------------------------*/
4782 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004784 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004785 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004786 wdiEventData.pUserData = pUserData;
4787
4788 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4789}/*WDI_SetBeaconFilterReq*/
4790
4791/**
4792 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4793 wants to remove the beacon filter for particular IE
4794 while in power save. Upon the call of this API the WLAN
4795 DAL will pack and send a remove Beacon filter request
4796 message to the lower RIVA sub-system.
4797
4798 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004800
Jeff Johnsone7245742012-09-05 17:12:55 -07004801
4802 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004803 filter as specified by the Device
4804 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004805
Jeff Johnson295189b2012-06-20 16:38:30 -07004806 wdiBeaconFilterCb: callback for passing back the
4807 response of the remove beacon filter operation received
4808 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004809
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004811 callback
4812
Jeff Johnson295189b2012-06-20 16:38:30 -07004813 @return Result of the function call
4814*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004815WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004816WDI_RemBeaconFilterReq
4817(
4818 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4819 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4820 void* pUserData
4821)
4822{
4823 WDI_EventInfoType wdiEventData;
4824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4825
4826 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004828 ------------------------------------------------------------------------*/
4829 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4830 {
4831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4832 "WDI API call before module is initialized - Fail request");
4833
Jeff Johnsone7245742012-09-05 17:12:55 -07004834 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004835 }
4836
4837 /*------------------------------------------------------------------------
4838 Fill in Event data and post to the Main FSM
4839 ------------------------------------------------------------------------*/
4840 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004841 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004842 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004843 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004844 wdiEventData.pUserData = pUserData;
4845
4846 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4847}/*WDI_RemBeaconFilterReq*/
4848
4849/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004850 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004851 MAC wants to set the RSSI thresholds related
4852 configurations while in power save. Upon the call of
4853 this API the WLAN DAL will pack and send a HAL Set RSSI
4854 thresholds request message to the lower RIVA
4855 sub-system if DAL is in state STARTED.
4856
4857 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004858 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004859
4860 WDI_PostAssocReq must have been called.
4861
4862 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4863 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004864
Jeff Johnson295189b2012-06-20 16:38:30 -07004865 wdiSetUapsdAcParamsCb: callback for passing back the
4866 response of the set UAPSD params operation received from
4867 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004868
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004870 callback
4871
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 @see WDI_PostAssocReq
4873 @return Result of the function call
4874*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004875WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004876WDI_SetRSSIThresholdsReq
4877(
4878 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4879 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4880 void* pUserData
4881)
4882{
4883 WDI_EventInfoType wdiEventData;
4884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4885
4886 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004887 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004888 ------------------------------------------------------------------------*/
4889 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4890 {
4891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4892 "WDI API call before module is initialized - Fail request");
4893
Jeff Johnsone7245742012-09-05 17:12:55 -07004894 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004895 }
4896
4897 /*------------------------------------------------------------------------
4898 Fill in Event data and post to the Main FSM
4899 ------------------------------------------------------------------------*/
4900 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004901 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004902 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 wdiEventData.pUserData = pUserData;
4905
4906 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4907}/* WDI_SetRSSIThresholdsReq*/
4908
4909/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004911 wants to set the filter to minimize unnecessary host
4912 wakeup due to broadcast traffic while in power save.
4913 Upon the call of this API the WLAN DAL will pack and
4914 send a HAL host offload request message to the
4915 lower RIVA sub-system if DAL is in state STARTED.
4916
4917 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004918 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004919
4920 WDI_PostAssocReq must have been called.
4921
Jeff Johnsone7245742012-09-05 17:12:55 -07004922 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004923 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004924
Jeff Johnson295189b2012-06-20 16:38:30 -07004925 wdiHostOffloadCb: callback for passing back the response
4926 of the host offload operation received from the
4927 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004928
Jeff Johnson295189b2012-06-20 16:38:30 -07004929 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004930 callback
4931
Jeff Johnson295189b2012-06-20 16:38:30 -07004932 @see WDI_PostAssocReq
4933 @return Result of the function call
4934*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004935WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004936WDI_HostOffloadReq
4937(
4938 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4939 WDI_HostOffloadCb wdiHostOffloadCb,
4940 void* pUserData
4941)
4942{
4943 WDI_EventInfoType wdiEventData;
4944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4945
4946 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004947 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004948 ------------------------------------------------------------------------*/
4949 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4950 {
4951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4952 "WDI API call before module is initialized - Fail request");
4953
Jeff Johnsone7245742012-09-05 17:12:55 -07004954 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004955 }
4956
4957 /*------------------------------------------------------------------------
4958 Fill in Event data and post to the Main FSM
4959 ------------------------------------------------------------------------*/
4960 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004962 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 wdiEventData.pUserData = pUserData;
4965
4966 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4967}/*WDI_HostOffloadReq*/
4968
4969/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 @brief WDI_KeepAliveReq will be called when the upper MAC
4971 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 and minimize unnecessary host wakeups due to while in power save.
4973 Upon the call of this API the WLAN DAL will pack and
4974 send a HAL Keep Alive request message to the
4975 lower RIVA sub-system if DAL is in state STARTED.
4976
4977 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004978 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004979
4980 WDI_PostAssocReq must have been called.
4981
Jeff Johnsone7245742012-09-05 17:12:55 -07004982 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004983 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004984
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 wdiKeepAliveCb: callback for passing back the response
4986 of the Keep Alive operation received from the
4987 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004988
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004990 callback
4991
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 @see WDI_PostAssocReq
4993 @return Result of the function call
4994*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004995WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004996WDI_KeepAliveReq
4997(
4998 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4999 WDI_KeepAliveCb wdiKeepAliveCb,
5000 void* pUserData
5001)
5002{
5003 WDI_EventInfoType wdiEventData;
5004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5005
5006 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005007 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005008 ------------------------------------------------------------------------*/
5009 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5010 {
5011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5012 "WDI_KeepAliveReq: WDI API call before module "
5013 "is initialized - Fail request");
5014
Jeff Johnsone7245742012-09-05 17:12:55 -07005015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005016 }
5017
5018 /*------------------------------------------------------------------------
5019 Fill in Event data and post to the Main FSM
5020 ------------------------------------------------------------------------*/
5021 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005022 wdiEventData.pEventData = pwdiKeepAliveParams;
5023 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
5024 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005025 wdiEventData.pUserData = pUserData;
5026
5027 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5028}/*WDI_KeepAliveReq*/
5029
5030/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005031 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005032 wants to set the Wowl Bcast ptrn to minimize unnecessary
5033 host wakeup due to broadcast traffic while in power
5034 save. Upon the call of this API the WLAN DAL will pack
5035 and send a HAL Wowl Bcast ptrn request message to the
5036 lower RIVA sub-system if DAL is in state STARTED.
5037
5038 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005039 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005040
5041 WDI_PostAssocReq must have been called.
5042
Jeff Johnsone7245742012-09-05 17:12:55 -07005043 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005044 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005045
Jeff Johnson295189b2012-06-20 16:38:30 -07005046 wdiWowlAddBcPtrnCb: callback for passing back the
5047 response of the add Wowl bcast ptrn operation received
5048 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005049
Jeff Johnson295189b2012-06-20 16:38:30 -07005050 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005051 callback
5052
Jeff Johnson295189b2012-06-20 16:38:30 -07005053 @see WDI_PostAssocReq
5054 @return Result of the function call
5055*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005056WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005057WDI_WowlAddBcPtrnReq
5058(
5059 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
5060 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
5061 void* pUserData
5062)
5063{
5064 WDI_EventInfoType wdiEventData;
5065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5066
5067 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005068 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005069 ------------------------------------------------------------------------*/
5070 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5071 {
5072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5073 "WDI API call before module is initialized - Fail request");
5074
Jeff Johnsone7245742012-09-05 17:12:55 -07005075 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005076 }
5077
5078 /*------------------------------------------------------------------------
5079 Fill in Event data and post to the Main FSM
5080 ------------------------------------------------------------------------*/
5081 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005082 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005083 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005085 wdiEventData.pUserData = pUserData;
5086
5087 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5088}/*WDI_WowlAddBcPtrnReq*/
5089
5090/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005091 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005092 wants to clear the Wowl Bcast ptrn. Upon the call of
5093 this API the WLAN DAL will pack and send a HAL delete
5094 Wowl Bcast ptrn request message to the lower RIVA
5095 sub-system if DAL is in state STARTED.
5096
5097 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005098 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005099
5100 WDI_WowlAddBcPtrnReq must have been called.
5101
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005104
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 wdiWowlDelBcPtrnCb: callback for passing back the
5106 response of the del Wowl bcast ptrn operation received
5107 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005108
Jeff Johnson295189b2012-06-20 16:38:30 -07005109 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005110 callback
5111
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 @see WDI_WowlAddBcPtrnReq
5113 @return Result of the function call
5114*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005115WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005116WDI_WowlDelBcPtrnReq
5117(
5118 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
5119 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
5120 void* pUserData
5121)
5122{
5123 WDI_EventInfoType wdiEventData;
5124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5125
5126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005128 ------------------------------------------------------------------------*/
5129 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5130 {
5131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5132 "WDI API call before module is initialized - Fail request");
5133
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005135 }
5136
5137 /*------------------------------------------------------------------------
5138 Fill in Event data and post to the Main FSM
5139 ------------------------------------------------------------------------*/
5140 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005142 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005143 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005144 wdiEventData.pUserData = pUserData;
5145
5146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5147}/*WDI_WowlDelBcPtrnReq*/
5148
5149/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005150 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 wants to enter the Wowl state to minimize unnecessary
5152 host wakeup while in power save. Upon the call of this
5153 API the WLAN DAL will pack and send a HAL Wowl enter
5154 request message to the lower RIVA sub-system if DAL is
5155 in state STARTED.
5156
5157 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005158 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005159
5160 WDI_PostAssocReq must have been called.
5161
Jeff Johnsone7245742012-09-05 17:12:55 -07005162 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005163 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005164
Jeff Johnson295189b2012-06-20 16:38:30 -07005165 wdiWowlEnterReqCb: callback for passing back the
5166 response of the enter Wowl operation received from the
5167 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005168
Jeff Johnson295189b2012-06-20 16:38:30 -07005169 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005170 callback
5171
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 @see WDI_PostAssocReq
5173 @return Result of the function call
5174*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005175WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005176WDI_WowlEnterReq
5177(
5178 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
5179 WDI_WowlEnterReqCb wdiWowlEnterCb,
5180 void* pUserData
5181)
5182{
5183 WDI_EventInfoType wdiEventData;
5184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5185
5186 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005187 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005188 ------------------------------------------------------------------------*/
5189 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5190 {
5191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5192 "WDI API call before module is initialized - Fail request");
5193
Jeff Johnsone7245742012-09-05 17:12:55 -07005194 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005195 }
5196
5197 /*------------------------------------------------------------------------
5198 Fill in Event data and post to the Main FSM
5199 ------------------------------------------------------------------------*/
5200 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005201 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005202 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005203 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005204 wdiEventData.pUserData = pUserData;
5205
5206 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5207}/*WDI_WowlEnterReq*/
5208
5209/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005210 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005211 wants to exit the Wowl state. Upon the call of this API
5212 the WLAN DAL will pack and send a HAL Wowl exit request
5213 message to the lower RIVA sub-system if DAL is in state
5214 STARTED.
5215
5216 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005217 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005218
5219 WDI_WowlEnterReq must have been called.
5220
Jeff Johnsone7245742012-09-05 17:12:55 -07005221 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005222 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005223
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 wdiWowlExitReqCb: callback for passing back the response
5225 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005226
Jeff Johnson295189b2012-06-20 16:38:30 -07005227 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005228 callback
5229
Jeff Johnson295189b2012-06-20 16:38:30 -07005230 @see WDI_WowlEnterReq
5231 @return Result of the function call
5232*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005233WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005234WDI_WowlExitReq
5235(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005236 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005237 WDI_WowlExitReqCb wdiWowlExitCb,
5238 void* pUserData
5239)
5240{
5241 WDI_EventInfoType wdiEventData;
5242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5243
5244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005245 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005246 ------------------------------------------------------------------------*/
5247 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5248 {
5249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5250 "WDI API call before module is initialized - Fail request");
5251
Jeff Johnsone7245742012-09-05 17:12:55 -07005252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005253 }
5254
5255 /*------------------------------------------------------------------------
5256 Fill in Event data and post to the Main FSM
5257 ------------------------------------------------------------------------*/
5258 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005259 wdiEventData.pEventData = pwdiWowlExitParams;
5260 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005261 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005262 wdiEventData.pUserData = pUserData;
5263
5264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5265}/*WDI_WowlExitReq*/
5266
5267/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005268 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005269 the upper MAC wants to dynamically adjusts the listen
5270 interval based on the WLAN/MSM activity. Upon the call
5271 of this API the WLAN DAL will pack and send a HAL
5272 configure Apps Cpu Wakeup State request message to the
5273 lower RIVA sub-system.
5274
5275 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005276 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005277
Jeff Johnsone7245742012-09-05 17:12:55 -07005278
5279 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005280 Apps Cpu Wakeup State as specified by the
5281 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005282
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5284 back the response of the configure Apps Cpu Wakeup State
5285 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005286
Jeff Johnson295189b2012-06-20 16:38:30 -07005287 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005288 callback
5289
Jeff Johnson295189b2012-06-20 16:38:30 -07005290 @return Result of the function call
5291*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005292WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005293WDI_ConfigureAppsCpuWakeupStateReq
5294(
5295 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5296 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5297 void* pUserData
5298)
5299{
5300 WDI_EventInfoType wdiEventData;
5301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5302
5303 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005304 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005305 ------------------------------------------------------------------------*/
5306 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5307 {
5308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5309 "WDI API call before module is initialized - Fail request");
5310
Jeff Johnsone7245742012-09-05 17:12:55 -07005311 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005312 }
5313
5314 /*------------------------------------------------------------------------
5315 Fill in Event data and post to the Main FSM
5316 ------------------------------------------------------------------------*/
5317 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005318 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5319 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5320 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005321 wdiEventData.pUserData = pUserData;
5322
5323 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5324}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5325/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005326 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005327 to to perform a flush operation on a given AC. Upon the
5328 call of this API the WLAN DAL will pack and send a HAL
5329 Flush AC request message to the lower RIVA sub-system if
5330 DAL is in state STARTED.
5331
5332 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005333 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005334
5335 WDI_AddBAReq must have been called.
5336
Jeff Johnsone7245742012-09-05 17:12:55 -07005337 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005339
Jeff Johnson295189b2012-06-20 16:38:30 -07005340 wdiFlushAcRspCb: callback for passing back the response
5341 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005342
Jeff Johnson295189b2012-06-20 16:38:30 -07005343 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 callback
5345
Jeff Johnson295189b2012-06-20 16:38:30 -07005346 @see WDI_AddBAReq
5347 @return Result of the function call
5348*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005349WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005350WDI_FlushAcReq
5351(
5352 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5353 WDI_FlushAcRspCb wdiFlushAcRspCb,
5354 void* pUserData
5355)
5356{
5357 WDI_EventInfoType wdiEventData;
5358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5359
5360 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005361 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005362 ------------------------------------------------------------------------*/
5363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5364 {
5365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5366 "WDI API call before module is initialized - Fail request");
5367
Jeff Johnsone7245742012-09-05 17:12:55 -07005368 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005369 }
5370
5371 /*------------------------------------------------------------------------
5372 Fill in Event data and post to the Main FSM
5373 ------------------------------------------------------------------------*/
5374 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005375 wdiEventData.pEventData = pwdiFlushAcReqParams;
5376 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5377 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005378 wdiEventData.pUserData = pUserData;
5379
5380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5381
5382}/*WDI_FlushAcReq*/
5383
5384/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005385 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005386 wants to notify the lower mac on a BT AMP event. This is
5387 to inform BTC-SLM that some BT AMP event occurred. Upon
5388 the call of this API the WLAN DAL will pack and send a
5389 HAL BT AMP event request message to the lower RIVA
5390 sub-system if DAL is in state STARTED.
5391
5392 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005393 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005394
Jeff Johnsone7245742012-09-05 17:12:55 -07005395
5396 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005397 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005398
Jeff Johnson295189b2012-06-20 16:38:30 -07005399 wdiBtAmpEventRspCb: callback for passing back the
5400 response of the BT AMP event operation received from the
5401 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005402
Jeff Johnson295189b2012-06-20 16:38:30 -07005403 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005404 callback
5405
Jeff Johnson295189b2012-06-20 16:38:30 -07005406 @return Result of the function call
5407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005409WDI_BtAmpEventReq
5410(
5411 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5412 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5413 void* pUserData
5414)
5415{
5416 WDI_EventInfoType wdiEventData;
5417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5418
5419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005421 ------------------------------------------------------------------------*/
5422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5423 {
5424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5425 "WDI API call before module is initialized - Fail request");
5426
Jeff Johnsone7245742012-09-05 17:12:55 -07005427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005428 }
5429
5430 /*------------------------------------------------------------------------
5431 Fill in Event data and post to the Main FSM
5432 ------------------------------------------------------------------------*/
5433 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005434 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5435 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5436 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005437 wdiEventData.pUserData = pUserData;
5438
5439 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5440
5441}/*WDI_BtAmpEventReq*/
5442
Jeff Johnsone7245742012-09-05 17:12:55 -07005443#ifdef FEATURE_OEM_DATA_SUPPORT
5444/**
5445 @brief WDI_Start Oem Data Req will be called when the upper MAC
5446 wants to notify the lower mac on a oem data Req event.Upon
5447 the call of this API the WLAN DAL will pack and send a
5448 HAL OEM Data Req event request message to the lower RIVA
5449 sub-system if DAL is in state STARTED.
5450
5451 In state BUSY this request will be queued. Request won't
5452 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005453
5454
Jeff Johnsone7245742012-09-05 17:12:55 -07005455
5456 @param pwdiOemDataReqParams: the Oem Data Req as
5457 specified by the Device Interface
5458
5459 wdiStartOemDataRspCb: callback for passing back the
5460 response of the Oem Data Req received from the
5461 device
5462
5463 pUserData: user data will be passed back with the
5464 callback
5465
5466 @return Result of the function call
5467*/
5468WDI_Status
5469WDI_StartOemDataReq
5470(
5471 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5472 WDI_oemDataRspCb wdiOemDataRspCb,
5473 void* pUserData
5474)
5475{
5476 WDI_EventInfoType wdiEventData;
5477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5478
5479 /*------------------------------------------------------------------------
5480 Sanity Check
5481 ------------------------------------------------------------------------*/
5482 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5483 {
5484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5485 "WDI API call before module is initialized - Fail request");
5486
5487 return WDI_STATUS_E_NOT_ALLOWED;
5488 }
5489
5490 /*------------------------------------------------------------------------
5491 Fill in Event data and post to the Main FSM
5492 ------------------------------------------------------------------------*/
5493 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5494 wdiEventData.pEventData = pwdiOemDataReqParams;
5495 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5496 wdiEventData.pCBfnc = wdiOemDataRspCb;
5497 wdiEventData.pUserData = pUserData;
5498
5499 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5500
5501
5502}
5503
5504#endif
5505
5506
5507/*========================================================================
5508
Jeff Johnson295189b2012-06-20 16:38:30 -07005509 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005510
Jeff Johnson295189b2012-06-20 16:38:30 -07005511==========================================================================*/
5512/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005513 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005514 the WLAN HW to change the current channel of operation.
5515 Upon the call of this API the WLAN DAL will pack and
5516 send a HAL Start request message to the lower RIVA
5517 sub-system if DAL is in state STARTED.
5518
5519 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005520 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005521
5522 WDI_Start must have been called.
5523
Jeff Johnsone7245742012-09-05 17:12:55 -07005524 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005526
Jeff Johnson295189b2012-06-20 16:38:30 -07005527 wdiSwitchChRspCb: callback for passing back the response
5528 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005529
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 callback
5532
Jeff Johnson295189b2012-06-20 16:38:30 -07005533 @see WDI_Start
5534 @return Result of the function call
5535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005537WDI_SwitchChReq
5538(
5539 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5540 WDI_SwitchChRspCb wdiSwitchChRspCb,
5541 void* pUserData
5542)
5543{
5544 WDI_EventInfoType wdiEventData;
5545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5546
5547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005549 ------------------------------------------------------------------------*/
5550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5551 {
5552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5553 "WDI API call before module is initialized - Fail request");
5554
Jeff Johnsone7245742012-09-05 17:12:55 -07005555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005556 }
5557
5558 /*------------------------------------------------------------------------
5559 Fill in Event data and post to the Main FSM
5560 ------------------------------------------------------------------------*/
5561 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005562 wdiEventData.pEventData = pwdiSwitchChReqParams;
5563 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5564 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005565 wdiEventData.pUserData = pUserData;
5566
5567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5568
5569}/*WDI_SwitchChReq*/
5570
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005571/**
5572 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5573 the WLAN HW to change the current channel of operation.
5574 Upon the call of this API the WLAN DAL will pack and
5575 send a HAL Start request message to the lower RIVA
5576 sub-system if DAL is in state STARTED.
5577 This request message also includes source of channel switch,
5578 like CSA,
5579
5580 In state BUSY this request will be queued. Request won't
5581 be allowed in any other state.
5582
5583 WDI_Start must have been called.
5584
5585 @param wdiSwitchChReqParams: the switch ch parameters as
5586 specified by the Device Interface
5587
5588 wdiSwitchChRspCb: callback for passing back the response
5589 of the switch ch operation received from the device
5590
5591 pUserData: user data will be passed back with the
5592 callback
5593
5594 @see WDI_Start
5595 @return Result of the function call
5596*/
5597WDI_Status
5598WDI_SwitchChReq_V1
5599(
5600 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5601 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5602 void* pUserData
5603)
5604{
5605 WDI_EventInfoType wdiEventData;
5606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5608 "WDI API call WDI_SwitchChReq_V1");
5609 /*------------------------------------------------------------------------
5610 Sanity Check
5611 ------------------------------------------------------------------------*/
5612 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5613 {
5614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5615 "WDI API call before module is initialized - Fail request");
5616
5617 return WDI_STATUS_E_NOT_ALLOWED;
5618 }
5619
5620 /*------------------------------------------------------------------------
5621 Fill in Event data and post to the Main FSM
5622 ------------------------------------------------------------------------*/
5623 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5624 wdiEventData.pEventData = pwdiSwitchChReqParams;
5625 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5626 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5627 wdiEventData.pUserData = pUserData;
5628
5629 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5630
5631}/*WDI_SwitchChReq_V1*/
5632
Jeff Johnson295189b2012-06-20 16:38:30 -07005633
5634/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005635 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005636 wishes to add or update a STA in HW. Upon the call of
5637 this API the WLAN DAL will pack and send a HAL Start
5638 message request message to the lower RIVA sub-system if
5639 DAL is in state STARTED.
5640
5641 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005642 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005643
5644 WDI_Start must have been called.
5645
Jeff Johnsone7245742012-09-05 17:12:55 -07005646 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005647 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005648
Jeff Johnson295189b2012-06-20 16:38:30 -07005649 wdiConfigSTARspCb: callback for passing back the
5650 response of the config STA operation received from the
5651 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005652
Jeff Johnson295189b2012-06-20 16:38:30 -07005653 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005654 callback
5655
Jeff Johnson295189b2012-06-20 16:38:30 -07005656 @see WDI_Start
5657 @return Result of the function call
5658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005660WDI_ConfigSTAReq
5661(
5662 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5663 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5664 void* pUserData
5665)
5666{
5667 WDI_EventInfoType wdiEventData;
5668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5669
5670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005671 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005672 ------------------------------------------------------------------------*/
5673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5674 {
5675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5676 "WDI API call before module is initialized - Fail request");
5677
Jeff Johnsone7245742012-09-05 17:12:55 -07005678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 }
5680
5681 /*------------------------------------------------------------------------
5682 Fill in Event data and post to the Main FSM
5683 ------------------------------------------------------------------------*/
5684 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005685 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5686 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5687 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005688 wdiEventData.pUserData = pUserData;
5689
5690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5691
5692}/*WDI_ConfigSTAReq*/
5693
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005694 /**
5695 @brief WDI_UpdateChannelReq will be called when the upper MAC
5696 wants to update the channel list on change in country code.
5697
5698 In state BUSY this request will be queued. Request won't
5699 be allowed in any other state.
5700
5701 WDI_UpdateChannelReq must have been called.
5702
5703 @param wdiUpdateChannelReqParams: the updated channel parameters
5704 as specified by the Device Interface
5705
5706 wdiUpdateChannelRspCb: callback for passing back the
5707 response of the update channel operation received from
5708 the device
5709
5710 pUserData: user data will be passed back with the
5711 callback
5712
5713 @return Result of the function call
5714*/
5715WDI_Status
5716WDI_UpdateChannelReq
5717(
5718 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5719 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5720 void* pUserData
5721)
5722{
5723 WDI_EventInfoType wdiEventData = {{0}};
5724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5725
5726 /*------------------------------------------------------------------------
5727 Sanity Check
5728 ------------------------------------------------------------------------*/
5729 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5730 {
5731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5732 "WDI API call before module is initialized - Fail request");
5733
5734 return WDI_STATUS_E_NOT_ALLOWED;
5735 }
5736
5737 /*------------------------------------------------------------------------
5738 Fill in Event data and post to the Main FSM
5739 ------------------------------------------------------------------------*/
5740 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5741 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5742 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5743 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5744 wdiEventData.pUserData = pUserData;
5745
5746 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5747
5748}/*WDI_UpdateChannelReq*/
5749
Jeff Johnson295189b2012-06-20 16:38:30 -07005750/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005751 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005752 wants to change the state of an ongoing link. Upon the
5753 call of this API the WLAN DAL will pack and send a HAL
5754 Start message request message to the lower RIVA
5755 sub-system if DAL is in state STARTED.
5756
5757 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005759
5760 WDI_JoinStartReq must have been called.
5761
Jeff Johnsone7245742012-09-05 17:12:55 -07005762 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005763 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005764
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 wdiSetLinkStateRspCb: callback for passing back the
5766 response of the set link state operation received from
5767 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005768
Jeff Johnson295189b2012-06-20 16:38:30 -07005769 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005770 callback
5771
Jeff Johnson295189b2012-06-20 16:38:30 -07005772 @see WDI_JoinStartReq
5773 @return Result of the function call
5774*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005775WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005776WDI_SetLinkStateReq
5777(
5778 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5779 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5780 void* pUserData
5781)
5782{
5783 WDI_EventInfoType wdiEventData;
5784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5785
5786 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005787 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005788 ------------------------------------------------------------------------*/
5789 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5790 {
5791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5792 "WDI API call before module is initialized - Fail request");
5793
Jeff Johnsone7245742012-09-05 17:12:55 -07005794 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005795 }
5796
5797 /*------------------------------------------------------------------------
5798 Fill in Event data and post to the Main FSM
5799 ------------------------------------------------------------------------*/
5800 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005801 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5802 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5803 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005804 wdiEventData.pUserData = pUserData;
5805
5806 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5807
5808}/*WDI_SetLinkStateReq*/
5809
5810
5811/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005812 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005813 to get statistics (MIB counters) from the device. Upon
5814 the call of this API the WLAN DAL will pack and send a
5815 HAL Start request message to the lower RIVA sub-system
5816 if DAL is in state STARTED.
5817
5818 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005819 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005820
5821 WDI_Start must have been called.
5822
Jeff Johnsone7245742012-09-05 17:12:55 -07005823 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005825
Jeff Johnson295189b2012-06-20 16:38:30 -07005826 wdiGetStatsRspCb: callback for passing back the response
5827 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005828
Jeff Johnson295189b2012-06-20 16:38:30 -07005829 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005830 callback
5831
Jeff Johnson295189b2012-06-20 16:38:30 -07005832 @see WDI_Start
5833 @return Result of the function call
5834*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005835WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005836WDI_GetStatsReq
5837(
5838 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5839 WDI_GetStatsRspCb wdiGetStatsRspCb,
5840 void* pUserData
5841)
5842{
5843 WDI_EventInfoType wdiEventData;
5844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5845
5846 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005847 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005848 ------------------------------------------------------------------------*/
5849 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5850 {
5851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5852 "WDI API call before module is initialized - Fail request");
5853
Jeff Johnsone7245742012-09-05 17:12:55 -07005854 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005855 }
5856
5857 /*------------------------------------------------------------------------
5858 Fill in Event data and post to the Main FSM
5859 ------------------------------------------------------------------------*/
5860 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005861 wdiEventData.pEventData = pwdiGetStatsReqParams;
5862 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5863 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005864 wdiEventData.pUserData = pUserData;
5865
5866 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5867
5868}/*WDI_GetStatsReq*/
5869
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005870#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005871/**
5872 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5873 to get roam rssi from the device. Upon
5874 the call of this API the WLAN DAL will pack and send a
5875 HAL Start request message to the lower RIVA sub-system
5876 if DAL is in state STARTED.
5877
5878 In state BUSY this request will be queued. Request won't
5879 be allowed in any other state.
5880
5881 WDI_Start must have been called.
5882
5883 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5884 specified by the Device Interface
5885
5886 wdiGetRoamRssiRspCb: callback for passing back the response
5887 of the get stats operation received from the device
5888
5889 pUserData: user data will be passed back with the
5890 callback
5891
5892 @see WDI_Start
5893 @return Result of the function call
5894*/
5895WDI_Status
5896WDI_GetRoamRssiReq
5897(
5898 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5899 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5900 void* pUserData
5901)
5902{
5903 WDI_EventInfoType wdiEventData;
5904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5905
5906 /*------------------------------------------------------------------------
5907 Sanity Check
5908 ------------------------------------------------------------------------*/
5909 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5910 {
5911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5912 "WDI API call before module is initialized - Fail request");
5913
5914 return WDI_STATUS_E_NOT_ALLOWED;
5915 }
5916 /*------------------------------------------------------------------------
5917 Fill in Event data and post to the Main FSM
5918 ------------------------------------------------------------------------*/
5919 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5920 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5921 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5922 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5923 wdiEventData.pUserData = pUserData;
5924
5925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5926
5927}/*WDI_GetRoamRssiReq*/
5928#endif
5929
Jeff Johnson295189b2012-06-20 16:38:30 -07005930
5931/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005932 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005933 it wishes to change the configuration of the WLAN
5934 Device. Upon the call of this API the WLAN DAL will pack
5935 and send a HAL Update CFG request message to the lower
5936 RIVA sub-system if DAL is in state STARTED.
5937
5938 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005939 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005940
5941 WDI_Start must have been called.
5942
Jeff Johnsone7245742012-09-05 17:12:55 -07005943 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005944 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005945
Jeff Johnson295189b2012-06-20 16:38:30 -07005946 wdiUpdateCfgsRspCb: callback for passing back the
5947 response of the update cfg operation received from the
5948 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005949
Jeff Johnson295189b2012-06-20 16:38:30 -07005950 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005951 callback
5952
Jeff Johnson295189b2012-06-20 16:38:30 -07005953 @see WDI_Start
5954 @return Result of the function call
5955*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005957WDI_UpdateCfgReq
5958(
5959 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5960 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5961 void* pUserData
5962)
5963{
5964 WDI_EventInfoType wdiEventData;
5965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5966
5967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005969 ------------------------------------------------------------------------*/
5970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5971 {
5972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5973 "WDI API call before module is initialized - Fail request");
5974
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 }
5977
5978 /*------------------------------------------------------------------------
5979 Fill in Event data and post to the Main FSM
5980 ------------------------------------------------------------------------*/
5981 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005982 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5983 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5984 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005985 wdiEventData.pUserData = pUserData;
5986
5987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5988
5989}/*WDI_UpdateCfgReq*/
5990
5991
5992
5993/**
5994 @brief WDI_AddBAReq will be called when the upper MAC has setup
5995 successfully a BA session and needs to notify the HW for
5996 the appropriate settings to take place. Upon the call of
5997 this API the WLAN DAL will pack and send a HAL Add BA
5998 request message to the lower RIVA sub-system if DAL is
5999 in state STARTED.
6000
6001 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006002 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006003
6004 WDI_PostAssocReq must have been called.
6005
6006 @param wdiAddBAReqParams: the add BA parameters as specified by
6007 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006008
Jeff Johnson295189b2012-06-20 16:38:30 -07006009 wdiAddBARspCb: callback for passing back the response of
6010 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006011
Jeff Johnson295189b2012-06-20 16:38:30 -07006012 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006013 callback
6014
Jeff Johnson295189b2012-06-20 16:38:30 -07006015 @see WDI_PostAssocReq
6016 @return Result of the function call
6017*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006018WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006019WDI_AddBAReq
6020(
6021 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
6022 WDI_AddBARspCb wdiAddBARspCb,
6023 void* pUserData
6024)
6025{
6026 WDI_EventInfoType wdiEventData;
6027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6028
6029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006030 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 ------------------------------------------------------------------------*/
6032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6033 {
6034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6035 "WDI API call before module is initialized - Fail request");
6036
Jeff Johnsone7245742012-09-05 17:12:55 -07006037 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006038 }
6039
6040 /*------------------------------------------------------------------------
6041 Fill in Event data and post to the Main FSM
6042 ------------------------------------------------------------------------*/
6043 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006044 wdiEventData.pEventData = pwdiAddBAReqParams;
6045 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
6046 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 wdiEventData.pUserData = pUserData;
6048
6049 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6050
6051}/*WDI_AddBAReq*/
6052
6053
6054/**
6055 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
6056 successfully a BA session and needs to notify the HW for
6057 the appropriate settings to take place. Upon the call of
6058 this API the WLAN DAL will pack and send a HAL Add BA
6059 request message to the lower RIVA sub-system if DAL is
6060 in state STARTED.
6061
6062 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006063 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006064
6065 WDI_PostAssocReq must have been called.
6066
6067 @param wdiAddBAReqParams: the add BA parameters as specified by
6068 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006069
Jeff Johnson295189b2012-06-20 16:38:30 -07006070 wdiAddBARspCb: callback for passing back the response of
6071 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006072
Jeff Johnson295189b2012-06-20 16:38:30 -07006073 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006074 callback
6075
Jeff Johnson295189b2012-06-20 16:38:30 -07006076 @see WDI_PostAssocReq
6077 @return Result of the function call
6078*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006079WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006080WDI_TriggerBAReq
6081(
6082 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
6083 WDI_TriggerBARspCb wdiTriggerBARspCb,
6084 void* pUserData
6085)
6086{
6087 WDI_EventInfoType wdiEventData;
6088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6089
6090 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 ------------------------------------------------------------------------*/
6093 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6094 {
6095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6096 "WDI API call before module is initialized - Fail request");
6097
Jeff Johnsone7245742012-09-05 17:12:55 -07006098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006099 }
6100
6101 /*------------------------------------------------------------------------
6102 Fill in Event data and post to the Main FSM
6103 ------------------------------------------------------------------------*/
6104 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006105 wdiEventData.pEventData = pwdiTriggerBAReqParams;
6106 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
6107 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006108 wdiEventData.pUserData = pUserData;
6109
6110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6111
6112}/*WDI_AddBAReq*/
6113
6114/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006115 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 wishes to update any of the Beacon parameters used by HW.
6117 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
6118 message to the lower RIVA sub-system if DAL is in state
6119 STARTED.
6120
6121 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006122 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006123
6124 WDI_PostAssocReq must have been called.
6125
Jeff Johnsone7245742012-09-05 17:12:55 -07006126 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006127 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006128
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 wdiUpdateBeaconParamsRspCb: callback for passing back the
6130 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006131
Jeff Johnson295189b2012-06-20 16:38:30 -07006132 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006133 callback
6134
Jeff Johnson295189b2012-06-20 16:38:30 -07006135 @see WDI_PostAssocReq
6136 @return Result of the function call
6137*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006138WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006139WDI_UpdateBeaconParamsReq
6140(
6141 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
6142 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
6143 void* pUserData
6144)
6145{
6146 WDI_EventInfoType wdiEventData;
6147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6148
6149 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006150 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006151 ------------------------------------------------------------------------*/
6152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6153 {
6154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6155 "WDI API call before module is initialized - Fail request");
6156
Jeff Johnsone7245742012-09-05 17:12:55 -07006157 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006158 }
6159
6160 /*------------------------------------------------------------------------
6161 Fill in Event data and post to the Main FSM
6162 ------------------------------------------------------------------------*/
6163 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006164 wdiEventData.pEventData = pwdiUpdateBeaconParams;
6165 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
6166 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006167 wdiEventData.pUserData = pUserData;
6168
6169 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6170
6171}/*WDI_UpdateBeaconParamsReq*/
6172
6173/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006174 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006175 wishes to update the Beacon template used by HW.
6176 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
6177 message to the lower RIVA sub-system if DAL is in state
6178 STARTED.
6179
6180 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006182
6183 WDI_PostAssocReq must have been called.
6184
Jeff Johnsone7245742012-09-05 17:12:55 -07006185 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006186 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006187
Jeff Johnson295189b2012-06-20 16:38:30 -07006188 wdiSendBeaconParamsRspCb: callback for passing back the
6189 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006190
Jeff Johnson295189b2012-06-20 16:38:30 -07006191 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006192 callback
6193
Jeff Johnson295189b2012-06-20 16:38:30 -07006194 @see WDI_PostAssocReq
6195 @return Result of the function call
6196*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006197WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006198WDI_SendBeaconParamsReq
6199(
6200 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
6201 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
6202 void* pUserData
6203)
6204{
6205 WDI_EventInfoType wdiEventData;
6206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6207
6208 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006209 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 ------------------------------------------------------------------------*/
6211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6212 {
6213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6214 "WDI API call before module is initialized - Fail request");
6215
Jeff Johnsone7245742012-09-05 17:12:55 -07006216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 }
6218
6219 /*------------------------------------------------------------------------
6220 Fill in Event data and post to the Main FSM
6221 ------------------------------------------------------------------------*/
6222 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006223 wdiEventData.pEventData = pwdiSendBeaconParams;
6224 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6225 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006226 wdiEventData.pUserData = pUserData;
6227
6228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6229
6230}/*WDI_SendBeaconParamsReq*/
6231
6232/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006233 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006234 upper MAC wants to update the probe response template to
6235 be transmitted as Soft AP
6236 Upon the call of this API the WLAN DAL will
6237 pack and send the probe rsp template message to the
6238 lower RIVA sub-system if DAL is in state STARTED.
6239
6240 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006241 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006242
6243
Jeff Johnsone7245742012-09-05 17:12:55 -07006244 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006245 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006246
Jeff Johnson295189b2012-06-20 16:38:30 -07006247 wdiSendBeaconParamsRspCb: callback for passing back the
6248 response of the Send Beacon Params operation received
6249 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006250
Jeff Johnson295189b2012-06-20 16:38:30 -07006251 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006252 callback
6253
Jeff Johnson295189b2012-06-20 16:38:30 -07006254 @see WDI_AddBAReq
6255 @return Result of the function call
6256*/
6257
Jeff Johnsone7245742012-09-05 17:12:55 -07006258WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006259WDI_UpdateProbeRspTemplateReq
6260(
6261 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6262 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6263 void* pUserData
6264)
6265{
6266 WDI_EventInfoType wdiEventData;
6267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6268
6269 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006270 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006271 ------------------------------------------------------------------------*/
6272 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6273 {
6274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6275 "WDI API call before module is initialized - Fail request");
6276
Jeff Johnsone7245742012-09-05 17:12:55 -07006277 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006278 }
6279
6280 /*------------------------------------------------------------------------
6281 Fill in Event data and post to the Main FSM
6282 ------------------------------------------------------------------------*/
6283 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006284 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6285 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6286 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006287 wdiEventData.pUserData = pUserData;
6288
6289 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6290
6291}/*WDI_UpdateProbeRspTemplateReq*/
6292
6293/**
6294 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6295 to the NV memory.
6296
6297
6298 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6299 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006300
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 wdiNvDownloadRspCb: callback for passing back the response of
6302 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006303
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 callback
6306
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 @see WDI_PostAssocReq
6308 @return Result of the function call
6309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006311WDI_NvDownloadReq
6312(
6313 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6314 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6315 void* pUserData
6316)
6317{
6318 WDI_EventInfoType wdiEventData;
6319
6320 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006321 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006322 ------------------------------------------------------------------------*/
6323 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6324 {
6325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6326 "WDI API call before module is initialized - Fail request");
6327
Jeff Johnsone7245742012-09-05 17:12:55 -07006328 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006329 }
6330
6331 /*------------------------------------------------------------------------
6332 Fill in Event data and post to the Main FSM
6333 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006334 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6335 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6336 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6337 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006338 wdiEventData.pUserData = pUserData;
6339
6340 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6341
6342}/*WDI_NVDownloadReq*/
6343
Jeff Johnson295189b2012-06-20 16:38:30 -07006344/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006345 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006346 upper MAC wants to send Notice of Absence
6347 Upon the call of this API the WLAN DAL will
6348 pack and send the probe rsp template message to the
6349 lower RIVA sub-system if DAL is in state STARTED.
6350
6351 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006353
6354
Jeff Johnsone7245742012-09-05 17:12:55 -07006355 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006357
Jeff Johnson295189b2012-06-20 16:38:30 -07006358 wdiSendBeaconParamsRspCb: callback for passing back the
6359 response of the Send Beacon Params operation received
6360 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006361
Jeff Johnson295189b2012-06-20 16:38:30 -07006362 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006363 callback
6364
Jeff Johnson295189b2012-06-20 16:38:30 -07006365 @see WDI_AddBAReq
6366 @return Result of the function call
6367*/
6368WDI_Status
6369WDI_SetP2PGONOAReq
6370(
6371 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6372 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6373 void* pUserData
6374)
6375{
6376 WDI_EventInfoType wdiEventData;
6377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6378
6379 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006380 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 ------------------------------------------------------------------------*/
6382 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6383 {
6384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6385 "WDI API call before module is initialized - Fail request");
6386
Jeff Johnsone7245742012-09-05 17:12:55 -07006387 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006388 }
6389
6390 /*------------------------------------------------------------------------
6391 Fill in Event data and post to the Main FSM
6392 ------------------------------------------------------------------------*/
6393 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6395 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6396 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006397 wdiEventData.pUserData = pUserData;
6398
6399 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6400
6401}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006402
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306403#ifdef FEATURE_WLAN_TDLS
6404/**
6405 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6406 upper MAC wants to send TDLS Link Establish Request Parameters
6407 Upon the call of this API the WLAN DAL will
6408 pack and send the TDLS Link Establish Request message to the
6409 lower RIVA sub-system if DAL is in state STARTED.
6410
6411 In state BUSY this request will be queued. Request won't
6412 be allowed in any other state.
6413
6414
6415 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6416 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6417
6418 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6419 response of the TDLS Link Establish request received
6420 from the device
6421
6422 pUserData: user data will be passed back with the
6423 callback
6424
6425 @see
6426 @return Result of the function call
6427*/
6428WDI_Status
6429WDI_SetTDLSLinkEstablishReq
6430(
6431 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6432 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6433 void* pUserData
6434)
6435{
6436 WDI_EventInfoType wdiEventData;
6437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6438
6439 /*------------------------------------------------------------------------
6440 Sanity Check
6441 ------------------------------------------------------------------------*/
6442 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6443 {
6444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6445 "WDI API call before module is initialized - Fail request");
6446
6447 return WDI_STATUS_E_NOT_ALLOWED;
6448 }
6449
6450 /*------------------------------------------------------------------------
6451 Fill in Event data and post to the Main FSM
6452 ------------------------------------------------------------------------*/
6453 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6454 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6455 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6456 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6457 wdiEventData.pUserData = pUserData;
6458
6459 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6460
6461}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306462
6463//tdlsoffchan
6464/**
6465 @brief WDI_SetTDLSChanSwitchReq will be called when the
6466 upper MAC wants to send TDLS Chan Switch Request Parameters
6467 Upon the call of this API the WLAN DAL will
6468 pack and send the TDLS Link Establish Request message to the
6469 lower RIVA sub-system if DAL is in state STARTED.
6470
6471 In state BUSY this request will be queued. Request won't
6472 be allowed in any other state.
6473
6474
6475 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6476 for Link Establishment (Used for TDLS Off Channel ...)
6477
6478 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6479 response of the TDLS Chan Switch request received
6480 from the device
6481
6482 pUserData: user data will be passed back with the
6483 callback
6484
6485 @see
6486 @return Result of the function call
6487*/
6488WDI_Status
6489WDI_SetTDLSChanSwitchReq
6490(
6491 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6492 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6493 void* pUserData
6494)
6495{
6496 WDI_EventInfoType wdiEventData;
6497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6498
6499 /*------------------------------------------------------------------------
6500 Sanity Check
6501 ------------------------------------------------------------------------*/
6502 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6503 {
6504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6505 "WDI API call before module is initialized - Fail request");
6506
6507 return WDI_STATUS_E_NOT_ALLOWED;
6508 }
6509
6510 /*------------------------------------------------------------------------
6511 Fill in Event data and post to the Main FSM
6512 ------------------------------------------------------------------------*/
6513 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6514 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6515 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6516 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6517 wdiEventData.pUserData = pUserData;
6518
6519 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6520
6521}/*WDI_SetTDLSChanSwitchReq*/
6522
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306523#endif
6524
Jeff Johnson295189b2012-06-20 16:38:30 -07006525/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006526 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006527 UMAC wanted to add STA self while opening any new session
6528 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006529 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006530
6531
Jeff Johnsone7245742012-09-05 17:12:55 -07006532 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006533 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006534
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006536 callback
6537
6538 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006539 @return Result of the function call
6540*/
6541WDI_Status
6542WDI_AddSTASelfReq
6543(
6544 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6545 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6546 void* pUserData
6547)
6548{
6549 WDI_EventInfoType wdiEventData;
6550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6551
6552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006554 ------------------------------------------------------------------------*/
6555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6556 {
6557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6558 "WDI API call before module is initialized - Fail request");
6559
Jeff Johnsone7245742012-09-05 17:12:55 -07006560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006561 }
6562
6563 /*------------------------------------------------------------------------
6564 Fill in Event data and post to the Main FSM
6565 ------------------------------------------------------------------------*/
6566 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006567 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6568 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6569 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 wdiEventData.pUserData = pUserData;
6571
6572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6573
6574}/*WDI_AddSTASelfReq*/
6575
6576
Jeff Johnsone7245742012-09-05 17:12:55 -07006577#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006578/**
6579 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6580 the device of a successful add TSpec negotiation. HW
6581 needs to receive the TSpec Info from the UMAC in order
6582 to configure properly the QoS data traffic. Upon the
6583 call of this API the WLAN DAL will pack and send a HAL
6584 Add TS request message to the lower RIVA sub-system if
6585 DAL is in state STARTED.
6586
6587 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006588 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006589
6590 WDI_PostAssocReq must have been called.
6591
6592 @param wdiAddTsReqParams: the add TS parameters as specified by
6593 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006594
Jeff Johnson295189b2012-06-20 16:38:30 -07006595 wdiAddTsRspCb: callback for passing back the response of
6596 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006597
Jeff Johnson295189b2012-06-20 16:38:30 -07006598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006599 callback
6600
Jeff Johnson295189b2012-06-20 16:38:30 -07006601 @see WDI_PostAssocReq
6602 @return Result of the function call
6603*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006605WDI_AggrAddTSReq
6606(
6607 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6608 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6609 void* pUserData
6610)
6611{
6612 WDI_EventInfoType wdiEventData;
6613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6614
6615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 ------------------------------------------------------------------------*/
6618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6619 {
6620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6621 "WDI API call before module is initialized - Fail request");
6622
Jeff Johnsone7245742012-09-05 17:12:55 -07006623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006624 }
6625
6626 /*------------------------------------------------------------------------
6627 Fill in Event data and post to the Main FSM
6628 ------------------------------------------------------------------------*/
6629 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006630 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6631 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6632 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006633 wdiEventData.pUserData = pUserData;
6634
6635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6636
6637}/*WDI_AggrAddTSReq*/
6638
6639#endif /* WLAN_FEATURE_VOWIFI_11R */
6640
Jeff Johnson295189b2012-06-20 16:38:30 -07006641/**
6642 @brief WDI_FTMCommandReq
6643 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006644
6645 @param ftmCommandReq: FTM Command Body
6646 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006648
Jeff Johnson295189b2012-06-20 16:38:30 -07006649 @see
6650 @return Result of the function call
6651*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006652WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006653WDI_FTMCommandReq
6654(
6655 WDI_FTMCommandReqType *ftmCommandReq,
6656 WDI_FTMCommandRspCb ftmCommandRspCb,
6657 void *pUserData
6658)
6659{
6660 WDI_EventInfoType wdiEventData;
6661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6662
6663 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006664 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006665 ------------------------------------------------------------------------*/
6666 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6667 {
6668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6669 "WDI API call before module is initialized - Fail request");
6670
Jeff Johnsone7245742012-09-05 17:12:55 -07006671 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006672 }
6673
6674 /*------------------------------------------------------------------------
6675 Fill in Event data and post to the Main FSM
6676 ------------------------------------------------------------------------*/
6677 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6678 wdiEventData.pEventData = (void *)ftmCommandReq;
6679 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6680 wdiEventData.pCBfnc = ftmCommandRspCb;
6681 wdiEventData.pUserData = pUserData;
6682
6683 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6684}
Jeff Johnson295189b2012-06-20 16:38:30 -07006685/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006686 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006687
6688 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006690
6691
6692 @param pwdiResumeReqParams: as specified by
6693 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006694
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 wdiResumeReqRspCb: callback for passing back the response of
6696 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006697
Jeff Johnson295189b2012-06-20 16:38:30 -07006698 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006699 callback
6700
6701 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 @return Result of the function call
6703*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006704WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006705WDI_HostResumeReq
6706(
6707 WDI_ResumeParamsType* pwdiResumeReqParams,
6708 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6709 void* pUserData
6710)
6711{
6712 WDI_EventInfoType wdiEventData;
6713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6714
6715 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006716 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006717 ------------------------------------------------------------------------*/
6718 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6719 {
6720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6721 "WDI API call before module is initialized - Fail request");
6722
Jeff Johnsone7245742012-09-05 17:12:55 -07006723 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 }
6725
6726 /*------------------------------------------------------------------------
6727 Fill in Event data and post to the Main FSM
6728 ------------------------------------------------------------------------*/
6729 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006730 wdiEventData.pEventData = pwdiResumeReqParams;
6731 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6732 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006733 wdiEventData.pUserData = pUserData;
6734
6735 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6736
6737}/*WDI_HostResumeReq*/
6738
6739/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006740 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006741
6742 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006743 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006744
6745
6746 @param pwdiDelStaSelfReqParams: as specified by
6747 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006748
Jeff Johnson295189b2012-06-20 16:38:30 -07006749 wdiDelStaSelfRspCb: callback for passing back the response of
6750 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006751
Jeff Johnson295189b2012-06-20 16:38:30 -07006752 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006753 callback
6754
Jeff Johnson295189b2012-06-20 16:38:30 -07006755 @see WDI_PostAssocReq
6756 @return Result of the function call
6757*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006758WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006759WDI_DelSTASelfReq
6760(
6761 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6762 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6763 void* pUserData
6764)
6765{
6766 WDI_EventInfoType wdiEventData;
6767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6768
6769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006770 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006771 ------------------------------------------------------------------------*/
6772 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6773 {
6774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6775 "WDI API call before module is initialized - Fail request");
6776
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006778 }
6779
6780 /*------------------------------------------------------------------------
6781 Fill in Event data and post to the Main FSM
6782 ------------------------------------------------------------------------*/
6783 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006784 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6785 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6786 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006787 wdiEventData.pUserData = pUserData;
6788
6789 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6790
6791}/*WDI_AggrAddTSReq*/
6792
6793/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006794 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6795 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006796 Upon the call of this API the WLAN DAL will pack
6797 and send a HAL Set Tx Per Tracking request message to the
6798 lower RIVA sub-system if DAL is in state STARTED.
6799
6800 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006801 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006802
Jeff Johnsone7245742012-09-05 17:12:55 -07006803 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006804 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006805
Jeff Johnson295189b2012-06-20 16:38:30 -07006806 pwdiSetTxPerTrackingRspCb: callback for passing back the
6807 response of the set Tx PER Tracking configurations operation received
6808 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006809
Jeff Johnson295189b2012-06-20 16:38:30 -07006810 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006811 callback
6812
Jeff Johnson295189b2012-06-20 16:38:30 -07006813 @return Result of the function call
6814*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006815WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006816WDI_SetTxPerTrackingReq
6817(
6818 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6819 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6820 void* pUserData
6821)
6822{
6823 WDI_EventInfoType wdiEventData;
6824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6825
6826 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006827 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006828 ------------------------------------------------------------------------*/
6829 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6830 {
6831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6832 "WDI API call before module is initialized - Fail request");
6833
Jeff Johnsone7245742012-09-05 17:12:55 -07006834 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 }
6836
6837 /*------------------------------------------------------------------------
6838 Fill in Event data and post to the Main FSM
6839 ------------------------------------------------------------------------*/
6840 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006841 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006843 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006844 wdiEventData.pUserData = pUserData;
6845
6846 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6847
6848}/*WDI_SetTxPerTrackingReq*/
6849
6850/**
6851 @brief WDI_SetTmLevelReq
6852 If HW Thermal condition changed, driver should react based on new
6853 HW thermal condition.
6854
6855 @param pwdiSetTmLevelReq: New thermal condition information
6856
6857 pwdiSetTmLevelRspCb: callback
6858
6859 usrData: user data will be passed back with the
6860 callback
6861
6862 @return Result of the function call
6863*/
6864WDI_Status
6865WDI_SetTmLevelReq
6866(
6867 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6868 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6869 void *usrData
6870)
6871{
6872 WDI_EventInfoType wdiEventData;
6873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6874
6875 /*------------------------------------------------------------------------
6876 Sanity Check
6877 ------------------------------------------------------------------------*/
6878 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6879 {
6880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6881 "WDI API call before module is initialized - Fail request");
6882
6883 return WDI_STATUS_E_NOT_ALLOWED;
6884 }
6885
6886 /*------------------------------------------------------------------------
6887 Fill in Event data and post to the Main FSM
6888 ------------------------------------------------------------------------*/
6889 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6890 wdiEventData.pEventData = pwdiSetTmLevelReq;
6891 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6892 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6893 wdiEventData.pUserData = usrData;
6894
6895 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6896}
6897
6898/**
6899 @brief WDI_HostSuspendInd
6900
6901 Suspend Indication from the upper layer will be sent
6902 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006903
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006905
6906 @see
6907
Jeff Johnson295189b2012-06-20 16:38:30 -07006908 @return Status of the request
6909*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006910WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006911WDI_HostSuspendInd
6912(
6913 WDI_SuspendParamsType* pwdiSuspendIndParams
6914)
6915{
6916
6917 WDI_EventInfoType wdiEventData;
6918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6919
6920 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006921 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006922 ------------------------------------------------------------------------*/
6923 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6924 {
6925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6926 "WDI API call before module is initialized - Fail request");
6927
Jeff Johnsone7245742012-09-05 17:12:55 -07006928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006929 }
6930
6931 /*------------------------------------------------------------------------
6932 Fill in Event data and post to the Main FSM
6933 ------------------------------------------------------------------------*/
6934 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006935 wdiEventData.pEventData = pwdiSuspendIndParams;
6936 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6937 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006938 wdiEventData.pUserData = NULL;
6939
6940 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6941
6942}/*WDI_HostSuspendInd*/
6943
6944/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006945 @brief WDI_TrafficStatsInd
6946 Traffic Stats from the upper layer will be sent
6947 down to HAL
6948
6949 @param WDI_TrafficStatsIndType
6950
6951 @see
6952
6953 @return Status of the request
6954*/
6955WDI_Status
6956WDI_TrafficStatsInd
6957(
6958 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6959)
6960{
6961
6962 WDI_EventInfoType wdiEventData;
6963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6964
6965 /*------------------------------------------------------------------------
6966 Sanity Check
6967 ------------------------------------------------------------------------*/
6968 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6969 {
6970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6971 "WDI API call before module is initialized - Fail request");
6972
6973 return WDI_STATUS_E_NOT_ALLOWED;
6974 }
6975
6976 /*------------------------------------------------------------------------
6977 Fill in Event data and post to the Main FSM
6978 ------------------------------------------------------------------------*/
6979 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6980 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6981 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6982 wdiEventData.pCBfnc = NULL;
6983 wdiEventData.pUserData = NULL;
6984
6985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6986
6987}/*WDI_TrafficStatsInd*/
6988
Chet Lanctot186b5732013-03-18 10:26:30 -07006989#ifdef WLAN_FEATURE_11W
6990/**
6991 @brief WDI_ExcludeUnencryptedInd
6992 Register with HAL to receive/drop unencrypted frames
6993
6994 @param WDI_ExcludeUnencryptIndType
6995
6996 @see
6997
6998 @return Status of the request
6999*/
7000WDI_Status
7001WDI_ExcludeUnencryptedInd
7002(
7003 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
7004)
7005{
7006
7007 WDI_EventInfoType wdiEventData;
7008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7009
7010 /*------------------------------------------------------------------------
7011 Sanity Check
7012 ------------------------------------------------------------------------*/
7013 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7014 {
7015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7016 "WDI API call before module is initialized - Fail request");
7017
7018 return WDI_STATUS_E_NOT_ALLOWED;
7019 }
7020
7021 /*------------------------------------------------------------------------
7022 Fill in Event data and post to the Main FSM
7023 ------------------------------------------------------------------------*/
7024 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
7025 wdiEventData.pEventData = pWdiExcUnencParams;
7026 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
7027 wdiEventData.pCBfnc = NULL;
7028 wdiEventData.pUserData = NULL;
7029
7030 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7031
7032}/*WDI_TrafficStatsInd*/
7033#endif
7034
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007035/**
Yue Mab9c86f42013-08-14 15:59:08 -07007036 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
7037
7038 @param addPeriodicTxPtrnParams: Add Pattern parameters
7039
7040 @see
7041
7042 @return Status of the request
7043*/
7044WDI_Status
7045WDI_AddPeriodicTxPtrnInd
7046(
7047 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
7048)
7049{
7050 WDI_EventInfoType wdiEventData;
7051
7052 /*-------------------------------------------------------------------------
7053 Sanity Check
7054 ------------------------------------------------------------------------*/
7055 if (eWLAN_PAL_FALSE == gWDIInitialized)
7056 {
7057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7058 "WDI API call before module is initialized - Fail request!");
7059
7060 return WDI_STATUS_E_NOT_ALLOWED;
7061 }
7062
7063 /*-------------------------------------------------------------------------
7064 Fill in Event data and post to the Main FSM
7065 ------------------------------------------------------------------------*/
7066 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
7067 wdiEventData.pEventData = addPeriodicTxPtrnParams;
7068 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
7069 wdiEventData.pCBfnc = NULL;
7070 wdiEventData.pUserData = NULL;
7071
7072 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7073}
7074
7075/**
7076 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
7077
7078 @param delPeriodicTxPtrnParams: Delete Pattern parameters
7079
7080 @see
7081
7082 @return Status of the request
7083*/
7084WDI_Status
7085WDI_DelPeriodicTxPtrnInd
7086(
7087 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
7088)
7089{
7090 WDI_EventInfoType wdiEventData;
7091
7092 /*-------------------------------------------------------------------------
7093 Sanity Check
7094 ------------------------------------------------------------------------*/
7095 if (eWLAN_PAL_FALSE == gWDIInitialized)
7096 {
7097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7098 "WDI API call before module is initialized - Fail request!");
7099
7100 return WDI_STATUS_E_NOT_ALLOWED;
7101 }
7102
7103 /*-------------------------------------------------------------------------
7104 Fill in Event data and post to the Main FSM
7105 ------------------------------------------------------------------------*/
7106 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
7107 wdiEventData.pEventData = delPeriodicTxPtrnParams;
7108 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
7109 wdiEventData.pCBfnc = NULL;
7110 wdiEventData.pUserData = NULL;
7111
7112 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7113}
7114
7115/**
Jeff Johnson295189b2012-06-20 16:38:30 -07007116 @brief WDI_HALDumpCmdReq
7117 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007118
7119 @param halDumpCmdReqParams: Hal Dump Command Body
7120 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007122
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 @see
7124 @return Result of the function call
7125*/
7126WDI_Status WDI_HALDumpCmdReq
7127(
7128 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
7129 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
7130 void *pUserData
7131)
7132{
7133 WDI_EventInfoType wdiEventData;
7134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7135
7136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007137 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007138 ------------------------------------------------------------------------*/
7139 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7140 {
7141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7142 "WDI API call before module is initialized - Fail request");
7143
Jeff Johnsone7245742012-09-05 17:12:55 -07007144 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 }
7146
7147 /*------------------------------------------------------------------------
7148 Fill in Event data and post to the Main FSM
7149 ------------------------------------------------------------------------*/
7150 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
7151 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
7152 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
7153 wdiEventData.pCBfnc = halDumpCmdRspCb;
7154 wdiEventData.pUserData = pUserData;
7155
7156 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7157}
7158
Jeff Johnsone7245742012-09-05 17:12:55 -07007159/*============================================================================
7160
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07007162
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 ============================================================================*/
7164
7165/**
7166 @brief Main FSM Start function for all states except BUSY
7167
Jeff Johnsone7245742012-09-05 17:12:55 -07007168
7169 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007170 wdiEV: event posted to the main DAL FSM
7171 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07007172 structure
7173
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 @see
7175 @return Result of the function call
7176*/
7177WDI_Status
7178WDI_PostMainEvent
7179(
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 WDI_ControlBlockType* pWDICtx,
7181 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07007183)
7184{
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 WDI_Status wdiStatus;
7186 WDI_MainFuncType pfnWDIMainEvHdlr;
7187 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05307188 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7190
7191 /*-------------------------------------------------------------------------
7192 Sanity check
7193 -------------------------------------------------------------------------*/
7194 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
7195 ( wdiEV >= WDI_MAX_EVENT ))
7196 {
7197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7198 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
7199 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07007200 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007201 }
7202
7203 /*Access to the global state must be locked */
7204 wpalMutexAcquire(&pWDICtx->wptMutex);
7205
7206 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007207 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07007208
7209 wdiOldState = pWDICtx->uGlobalState;
7210
7211 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007212 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
7213 response comes from CCPU for the request sent by host:
7214 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 -07007215 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 -07007216 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07007217 CCPU:
7218 don't change the state */
7219 if ( WDI_RESPONSE_EVENT != wdiEV)
7220 {
7221 /*Transition to BUSY State - the request is now being processed by the FSM,
7222 if the request fails we shall transition back to the old state, if not
7223 the request will manage its own state transition*/
7224 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7225 }
7226 /* If the state function associated with the EV is NULL it means that this
7227 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007228 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007229 {
7230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007233 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007234 }
7235 else
7236 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307237 if (!(failCnt & 0xF))
7238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007240 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307241 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007242 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007243 }
7244
7245 /* If a request handles itself well it will end up in a success or in a
7246 pending
7247 Success - means that the request was processed and the proper state
7248 transition already occurred or will occur when the resp is received
7249 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007250
Jeff Johnson295189b2012-06-20 16:38:30 -07007251 Pending - means the request could not be processed at this moment in time
7252 because the FSM was already busy so no state transition or dequeueing
7253 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007254
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 Success for synchronous case means that the transition may occur and
7256 processing of pending requests may continue - so it should go through
7257 and restores the state and continue processing queued requests*/
7258 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7259 ( WDI_STATUS_PENDING != wdiStatus ))
7260 {
7261 if ( WDI_RESPONSE_EVENT != wdiEV)
7262 {
7263 /*The request has failed or could not be processed - transition back to
7264 the old state - check to see if anything was queued and try to execute
7265 The dequeue logic should post a message to a thread and return - no
7266 actual processing can occur */
7267 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7268 }
7269 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007270
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 }
7272
7273 /* we have completed processing the event */
7274 wpalMutexRelease(&pWDICtx->wptMutex);
7275
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007277
7278}/*WDI_PostMainEvent*/
7279
7280
7281/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007282 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007283--------------------------------------------------------------------------*/
7284/**
7285 @brief Main FSM Start function for all states except BUSY
7286
Jeff Johnsone7245742012-09-05 17:12:55 -07007287
7288 @param pWDICtx: pointer to the WLAN DAL context
7289 pEventData: pointer to the event information structure
7290
Jeff Johnson295189b2012-06-20 16:38:30 -07007291 @see
7292 @return Result of the function call
7293*/
7294WDI_Status
7295WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007296(
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 WDI_ControlBlockType* pWDICtx,
7298 WDI_EventInfoType* pEventData
7299)
7300{
7301
7302 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007304 ----------------------------------------------------------------------*/
7305 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7306 {
7307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007308 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 pWDICtx, pEventData);
7310 return WDI_STATUS_E_FAILURE;
7311 }
7312
7313 wpalMutexAcquire(&pWDICtx->wptMutex);
7314
7315 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 ----------------------------------------------------------------------*/
7318 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7319 {
7320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7321 "Control Transport not yet Open - queueing the request");
7322
7323 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007324 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007325
7326 wpalMutexRelease(&pWDICtx->wptMutex);
7327 return WDI_STATUS_PENDING;
7328 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007329
Jeff Johnson295189b2012-06-20 16:38:30 -07007330 wpalMutexRelease(&pWDICtx->wptMutex);
7331
7332 /*Return Success*/
7333 return WDI_ProcessRequest( pWDICtx, pEventData );
7334
7335}/*WDI_MainStart*/
7336
7337/**
7338 @brief Main FSM Response function for state INIT
7339
Jeff Johnsone7245742012-09-05 17:12:55 -07007340
7341 @param pWDICtx: pointer to the WLAN DAL context
7342 pEventData: pointer to the event information structure
7343
Jeff Johnson295189b2012-06-20 16:38:30 -07007344 @see
7345 @return Result of the function call
7346*/
7347WDI_Status
7348WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007349(
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 WDI_ControlBlockType* pWDICtx,
7351 WDI_EventInfoType* pEventData
7352)
7353{
7354 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007355 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007356 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007358
7359 /*Return Success*/
7360 return WDI_STATUS_E_NOT_ALLOWED;
7361}/* WDI_MainRspInit */
7362
7363/**
7364 @brief Main FSM Close function for all states except BUSY
7365
Jeff Johnsone7245742012-09-05 17:12:55 -07007366
7367 @param pWDICtx: pointer to the WLAN DAL context
7368 pEventData: pointer to the event information structure
7369
Jeff Johnson295189b2012-06-20 16:38:30 -07007370 @see
7371 @return Result of the function call
7372*/
7373WDI_Status
7374WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007375(
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 WDI_ControlBlockType* pWDICtx,
7377 WDI_EventInfoType* pEventData
7378)
7379{
7380
7381 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007382 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 ----------------------------------------------------------------------*/
7384 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7385 {
7386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007387 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007388 pWDICtx, pEventData);
7389 return WDI_STATUS_E_FAILURE;
7390 }
7391
7392 /*Return Success*/
7393 return WDI_ProcessRequest( pWDICtx, pEventData );
7394
7395}/*WDI_MainClose*/
7396/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007398--------------------------------------------------------------------------*/
7399/**
7400 @brief Main FSM Start function for state STARTED
7401
Jeff Johnsone7245742012-09-05 17:12:55 -07007402
7403 @param pWDICtx: pointer to the WLAN DAL context
7404 pEventData: pointer to the event information structure
7405
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 @see
7407 @return Result of the function call
7408*/
7409WDI_Status
7410WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007411(
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 WDI_ControlBlockType* pWDICtx,
7413 WDI_EventInfoType* pEventData
7414)
7415{
7416 WDI_StartRspCb wdiStartRspCb = NULL;
7417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7418
7419 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007421 ----------------------------------------------------------------------*/
7422 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7423 {
7424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007425 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 pWDICtx, pEventData);
7427 return WDI_STATUS_E_FAILURE;
7428 }
7429
7430 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007431 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007432 ----------------------------------------------------------------------*/
7433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007435
7436 wpalMutexAcquire(&pWDICtx->wptMutex);
7437
7438 /*Transition back to started because the post function transitioned us to
7439 busy*/
7440 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7441
7442 /*Check to see if any request is pending*/
7443 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007444
Jeff Johnson295189b2012-06-20 16:38:30 -07007445 wpalMutexRelease(&pWDICtx->wptMutex);
7446
7447 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007448 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7449
Jeff Johnson295189b2012-06-20 16:38:30 -07007450 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307451 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007452
7453 /*Return Success*/
7454 return WDI_STATUS_SUCCESS;
7455
7456}/*WDI_MainStartStarted*/
7457
7458/**
7459 @brief Main FSM Stop function for state STARTED
7460
Jeff Johnsone7245742012-09-05 17:12:55 -07007461
7462 @param pWDICtx: pointer to the WLAN DAL context
7463 pEventData: pointer to the event information structure
7464
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 @see
7466 @return Result of the function call
7467*/
7468WDI_Status
7469WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007470(
Jeff Johnson295189b2012-06-20 16:38:30 -07007471 WDI_ControlBlockType* pWDICtx,
7472 WDI_EventInfoType* pEventData
7473)
7474{
7475 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007476 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007477 ----------------------------------------------------------------------*/
7478 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7479 {
7480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007481 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007482 pWDICtx, pEventData);
7483 return WDI_STATUS_E_FAILURE;
7484 }
7485
7486 /*State at this point is BUSY - because we enter this state before posting
7487 an event to the FSM in order to prevent potential race conditions*/
7488
7489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7490 "Processing stop request in FSM");
7491
7492 /*Return Success*/
7493 return WDI_ProcessRequest( pWDICtx, pEventData );
7494
7495}/*WDI_MainStopStarted*/
7496/**
7497 @brief Main FSM Request function for state started
7498
Jeff Johnsone7245742012-09-05 17:12:55 -07007499
7500 @param pWDICtx: pointer to the WLAN DAL context
7501 pEventData: pointer to the event information structure
7502
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 @see
7504 @return Result of the function call
7505*/
7506WDI_Status
7507WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007508(
Jeff Johnson295189b2012-06-20 16:38:30 -07007509 WDI_ControlBlockType* pWDICtx,
7510 WDI_EventInfoType* pEventData
7511)
7512{
7513
7514 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007515 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007516 ----------------------------------------------------------------------*/
7517 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7518 {
7519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007520 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007521 pWDICtx, pEventData);
7522 return WDI_STATUS_E_FAILURE;
7523 }
7524
7525 /*State at this point is BUSY - because we enter this state before posting
7526 an event to the FSM in order to prevent potential race conditions*/
7527
7528 /*Return Success*/
7529 return WDI_ProcessRequest( pWDICtx, pEventData );
7530
7531}/*WDI_MainReqStarted*/
7532
7533/**
7534 @brief Main FSM Response function for all states except INIT
7535
Jeff Johnsone7245742012-09-05 17:12:55 -07007536
7537 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007538 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007539
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 @see
7541 @return Result of the function call
7542*/
7543WDI_Status
7544WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007545(
Jeff Johnson295189b2012-06-20 16:38:30 -07007546 WDI_ControlBlockType* pWDICtx,
7547 WDI_EventInfoType* pEventData
7548)
7549{
Jeff Johnsone7245742012-09-05 17:12:55 -07007550 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007551 wpt_boolean expectedResponse;
7552
7553 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007554 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007555 ----------------------------------------------------------------------*/
7556 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7557 {
7558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007559 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 pWDICtx, pEventData);
7561 return WDI_STATUS_E_FAILURE;
7562 }
7563
7564 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7565 {
7566 /* we received an expected response */
7567 expectedResponse = eWLAN_PAL_TRUE;
7568
7569 /*We expect that we will transition to started after this processing*/
7570 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7571
7572 /* we are no longer expecting a response */
7573 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7574 }
7575 else
7576 {
7577 /* we received an indication or unexpected response */
7578 expectedResponse = eWLAN_PAL_FALSE;
7579 /* for indications no need to update state from what it is right
7580 now, unless it explicitly does it in the indication handler (say
7581 for device failure ind) */
7582 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7583 }
7584
7585 /*Process the response and indication */
7586 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7587
7588 /*Lock the CB as we are about to do a state transition*/
7589 wpalMutexAcquire(&pWDICtx->wptMutex);
7590
7591 /*Transition to the expected state after the response processing
7592 - this should always be started state with the following exceptions:
7593 1. processing of a failed start response
7594 2. device failure detected while processing response
7595 3. stop response received*/
7596 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007597
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 /*Dequeue request that may have been queued while we were waiting for the
7599 response */
7600 if ( expectedResponse )
7601 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007602 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 }
7604
7605 wpalMutexRelease(&pWDICtx->wptMutex);
7606
7607 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007608 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007609
7610}/*WDI_MainRsp*/
7611
7612/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007614--------------------------------------------------------------------------*/
7615/**
7616 @brief Main FSM Stop function for state STOPPED
7617
Jeff Johnsone7245742012-09-05 17:12:55 -07007618
7619 @param pWDICtx: pointer to the WLAN DAL context
7620 pEventData: pointer to the event information structure
7621
Jeff Johnson295189b2012-06-20 16:38:30 -07007622 @see
7623 @return Result of the function call
7624*/
7625WDI_Status
7626WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007627(
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 WDI_ControlBlockType* pWDICtx,
7629 WDI_EventInfoType* pEventData
7630)
7631{
7632 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 ----------------------------------------------------------------------*/
7635 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7636 {
7637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007638 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007639 pWDICtx, pEventData);
7640 return WDI_STATUS_E_FAILURE;
7641 }
7642
7643 /*We should normally not get a STOP request if we are already stopped
7644 since we should normally be stopped by the UMAC. However in some
7645 error situations we put ourselves in the stopped state without the
7646 UMAC knowing, so when we get a STOP request in this state we still
7647 process it since we need to clean up the underlying state */
7648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7649 "Processing stop request while stopped in FSM");
7650
7651 /*Return Success*/
7652 return WDI_ProcessRequest( pWDICtx, pEventData );
7653
7654}/*WDI_MainStopStopped*/
7655
7656/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007657 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007658--------------------------------------------------------------------------*/
7659/**
7660 @brief Main FSM Start function for state BUSY
7661
Jeff Johnsone7245742012-09-05 17:12:55 -07007662
7663 @param pWDICtx: pointer to the WLAN DAL context
7664 pEventData: pointer to the event information structure
7665
Jeff Johnson295189b2012-06-20 16:38:30 -07007666 @see
7667 @return Result of the function call
7668*/
7669WDI_Status
7670WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007671(
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 WDI_ControlBlockType* pWDICtx,
7673 WDI_EventInfoType* pEventData
7674)
7675{
7676 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 ----------------------------------------------------------------------*/
7679 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7680 {
7681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007682 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007683 pWDICtx, pEventData);
7684 return WDI_STATUS_E_FAILURE;
7685 }
7686
7687 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 ----------------------------------------------------------------------*/
7690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7691 "WDI Busy state - queue start request");
7692
7693 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007694 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007695
7696 /*Return Success*/
7697 return WDI_STATUS_PENDING;
7698}/*WDI_MainStartBusy*/
7699
7700/**
7701 @brief Main FSM Stop function for state BUSY
7702
Jeff Johnsone7245742012-09-05 17:12:55 -07007703
7704 @param pWDICtx: pointer to the WLAN DAL context
7705 pEventData: pointer to the event information structure
7706
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 @see
7708 @return Result of the function call
7709*/
7710WDI_Status
7711WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007712(
Jeff Johnson295189b2012-06-20 16:38:30 -07007713 WDI_ControlBlockType* pWDICtx,
7714 WDI_EventInfoType* pEventData
7715)
7716{
7717 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007718 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007719 ----------------------------------------------------------------------*/
7720 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7721 {
7722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007723 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 pWDICtx, pEventData);
7725 return WDI_STATUS_E_FAILURE;
7726 }
7727
7728 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007729 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 ----------------------------------------------------------------------*/
7731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7732 "WDI Busy state - queue stop request");
7733
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007736
Jeff Johnson295189b2012-06-20 16:38:30 -07007737}/*WDI_MainStopBusy*/
7738
7739/**
7740 @brief Main FSM Request function for state BUSY
7741
Jeff Johnsone7245742012-09-05 17:12:55 -07007742
7743 @param pWDICtx: pointer to the WLAN DAL context
7744 pEventData: pointer to the event information structure
7745
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 @see
7747 @return Result of the function call
7748*/
7749WDI_Status
7750WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007751(
Jeff Johnson295189b2012-06-20 16:38:30 -07007752 WDI_ControlBlockType* pWDICtx,
7753 WDI_EventInfoType* pEventData
7754)
7755{
7756 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007757 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007758 ----------------------------------------------------------------------*/
7759 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7760 {
7761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007762 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 pWDICtx, pEventData);
7764 return WDI_STATUS_E_FAILURE;
7765 }
7766
7767 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007769 ----------------------------------------------------------------------*/
7770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7771 "WDI Busy state - queue request %d because waiting for response %d",
7772 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7773
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007776
Jeff Johnson295189b2012-06-20 16:38:30 -07007777}/*WDI_MainReqBusy*/
7778/**
7779 @brief Main FSM Close function for state BUSY
7780
Jeff Johnsone7245742012-09-05 17:12:55 -07007781
7782 @param pWDICtx: pointer to the WLAN DAL context
7783 pEventData: pointer to the event information structure
7784
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 @see
7786 @return Result of the function call
7787*/
7788WDI_Status
7789WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007790(
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 WDI_ControlBlockType* pWDICtx,
7792 WDI_EventInfoType* pEventData
7793)
7794{
7795 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 ----------------------------------------------------------------------*/
7798 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7799 {
7800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007801 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007802 pWDICtx, pEventData);
7803 return WDI_STATUS_E_FAILURE;
7804 }
7805
7806 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007807 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007808 ----------------------------------------------------------------------*/
7809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7810 "WDI Busy state - queue close request");
7811
Jeff Johnsone7245742012-09-05 17:12:55 -07007812 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007814
Jeff Johnson295189b2012-06-20 16:38:30 -07007815}/*WDI_MainCloseBusy*/
7816
7817/**
7818 @brief Main FSM Shutdown function for INIT & STARTED states
7819
7820
7821 @param pWDICtx: pointer to the WLAN DAL context
7822 pEventData: pointer to the event information structure
7823
7824 @see
7825 @return Result of the function call
7826*/
7827WDI_Status
7828WDI_MainShutdown
7829(
7830 WDI_ControlBlockType* pWDICtx,
7831 WDI_EventInfoType* pEventData
7832)
7833{
7834 /*--------------------------------------------------------------------
7835 Sanity Check
7836 ----------------------------------------------------------------------*/
7837 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7838 {
7839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007840 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 pWDICtx, pEventData);
7842 return WDI_STATUS_E_FAILURE;
7843 }
7844
7845 /*State at this point is BUSY - because we enter this state before posting
7846 an event to the FSM in order to prevent potential race conditions*/
7847
7848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7849 "Processing shutdown request in FSM");
7850
7851 /*Return Success*/
7852 return WDI_ProcessRequest( pWDICtx, pEventData );
7853
7854}/*WDI_MainShutdown*/
7855
7856/**
7857 @brief Main FSM Shutdown function for BUSY state
7858
7859
7860 @param pWDICtx: pointer to the WLAN DAL context
7861 pEventData: pointer to the event information structure
7862
7863 @see
7864 @return Result of the function call
7865*/
7866WDI_Status
7867WDI_MainShutdownBusy
7868(
7869 WDI_ControlBlockType* pWDICtx,
7870 WDI_EventInfoType* pEventData
7871)
7872{
7873 /*--------------------------------------------------------------------
7874 Sanity Check
7875 ----------------------------------------------------------------------*/
7876 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7877 {
7878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007879 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 pWDICtx, pEventData);
7881 return WDI_STATUS_E_FAILURE;
7882 }
7883
7884 /* If you are waiting for a HAL response at this stage, you are not
7885 * going to get it. Riva is already shutdown/crashed.
7886 */
7887 wpalTimerStop(&gWDICb.wptResponseTimer);
7888
7889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7890 "Processing shutdown request in FSM: Busy state ");
7891
7892 return WDI_ProcessRequest( pWDICtx, pEventData );
7893
7894}/*WDI_MainShutdownBusy*/
7895
7896
Jeff Johnsone7245742012-09-05 17:12:55 -07007897/*=======================================================================
7898
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007900
Jeff Johnson295189b2012-06-20 16:38:30 -07007901*=======================================================================*/
7902
7903/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007905========================================================================*/
7906/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007909
7910 @param pWDICtx: pointer to the WLAN DAL context
7911 pEventData: pointer to the event information structure
7912
Jeff Johnson295189b2012-06-20 16:38:30 -07007913 @see
7914 @return Result of the function call
7915*/
7916WDI_Status
7917WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007918(
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 WDI_ControlBlockType* pWDICtx,
7920 WDI_EventInfoType* pEventData
7921)
7922{
7923 WDI_StartReqParamsType* pwdiStartParams = NULL;
7924 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007925 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 wpt_uint16 usDataOffset = 0;
7927 wpt_uint16 usSendSize = 0;
7928
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 tHalMacStartReqMsg halStartReq;
7930 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7932
7933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007935 -------------------------------------------------------------------------*/
7936 if (( NULL == pEventData ) ||
7937 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7938 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7939 {
7940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007944 }
7945
7946 /*-----------------------------------------------------------------------
7947 Get message buffer
7948 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 pwdiStartParams->usConfigBufferLen;
7951
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 usLen,
7954 &pSendBuffer, &usDataOffset, &usSendSize))||
7955 ( usSendSize < (usDataOffset + usLen )))
7956 {
7957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007958 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 pEventData, pwdiStartParams, wdiStartRspCb);
7960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 }
7963
7964 /*-----------------------------------------------------------------------
7965 Fill in the message
7966 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 halStartReq.startReqParams.driverType =
7968 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007969
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 halStartReq.startReqParams.uConfigBufferLen =
7971 pwdiStartParams->usConfigBufferLen;
7972 wpalMemoryCopy( pSendBuffer+usDataOffset,
7973 &halStartReq.startReqParams,
7974 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007975
Jeff Johnsone7245742012-09-05 17:12:55 -07007976 usDataOffset += sizeof(halStartReq.startReqParams);
7977 wpalMemoryCopy( pSendBuffer+usDataOffset,
7978 pwdiStartParams->pConfigBuffer,
7979 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007980
7981 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007983
7984 /*Save Low Level Ind CB and associated user data - it will be used further
7985 on when an indication is coming from the lower MAC*/
7986 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007988
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007993 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7995
Jeff Johnsone7245742012-09-05 17:12:55 -07007996
Jeff Johnson295189b2012-06-20 16:38:30 -07007997}/*WDI_ProcessStartReq*/
7998
7999/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008002
8003 @param pWDICtx: pointer to the WLAN DAL context
8004 pEventData: pointer to the event information structure
8005
Jeff Johnson295189b2012-06-20 16:38:30 -07008006 @see
8007 @return Result of the function call
8008*/
8009WDI_Status
8010WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008011(
Jeff Johnson295189b2012-06-20 16:38:30 -07008012 WDI_ControlBlockType* pWDICtx,
8013 WDI_EventInfoType* pEventData
8014)
8015{
8016 WDI_StopReqParamsType* pwdiStopParams = NULL;
8017 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 wpt_uint16 usDataOffset = 0;
8020 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07008021 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8024
8025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 -------------------------------------------------------------------------*/
8028 if (( NULL == pEventData ) ||
8029 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
8030 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
8031 {
8032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008033 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008035 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 }
8037
8038 /*-----------------------------------------------------------------------
8039 Get message buffer
8040 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 sizeof(halStopReq.stopReqParams),
8043 &pSendBuffer, &usDataOffset, &usSendSize))||
8044 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
8045 {
8046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008047 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 pEventData, pwdiStopParams, wdiStopRspCb);
8049 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008050 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 }
8052
8053 /*-----------------------------------------------------------------------
8054 Fill in the message
8055 -----------------------------------------------------------------------*/
8056 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
8057 pwdiStopParams->wdiStopReason);
8058
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 wpalMemoryCopy( pSendBuffer+usDataOffset,
8060 &halStopReq.stopReqParams,
8061 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008062
8063 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008065
8066 /*! TO DO: stop the data services */
8067 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8068 {
8069 /*Stop the STA Table !UT- check this logic again
8070 It is safer to do it here than on the response - because a stop is imminent*/
8071 WDI_STATableStop(pWDICtx);
8072
8073 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07008074 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
8075 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 {
8077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8078 "WDI Init failed to reset power state event");
8079
Jeff Johnsone7245742012-09-05 17:12:55 -07008080 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008081 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 }
8083 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08008084 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
8085 if( eWLAN_PAL_STATUS_SUCCESS != status )
8086 {
8087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008088 "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 -08008089 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008090 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08008091 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008092 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07008093 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 */
Jeff Johnson43971f52012-07-17 12:26:56 -07008095 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
8096 WDI_SET_POWER_STATE_TIMEOUT);
8097 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 {
8099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8100 "WDI Init failed to wait on an event");
8101
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008103 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 }
8105 }
8106
8107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008110 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008111 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
8112
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008113fail:
8114 // Release the message buffer so we don't leak
8115 wpalMemoryFree(pSendBuffer);
8116
8117failRequest:
8118 //WDA should have failure check to avoid the memory leak
8119 return WDI_STATUS_E_FAILURE;
8120
Jeff Johnson295189b2012-06-20 16:38:30 -07008121}/*WDI_ProcessStopReq*/
8122
8123/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008126
8127 @param pWDICtx: pointer to the WLAN DAL context
8128 pEventData: pointer to the event information structure
8129
Jeff Johnson295189b2012-06-20 16:38:30 -07008130 @see
8131 @return Result of the function call
8132*/
8133WDI_Status
8134WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008135(
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 WDI_ControlBlockType* pWDICtx,
8137 WDI_EventInfoType* pEventData
8138)
8139{
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8142
8143 /*Lock control block for cleanup*/
8144 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008145
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 /*Clear all pending request*/
8147 WDI_ClearPendingRequests(pWDICtx);
8148
8149 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07008151
8152 /* Close Data transport*/
8153 /* FTM mode does not open Data Path */
8154 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8155 {
8156 WDTS_Close(pWDICtx);
8157 }
8158
8159 /*Close the STA Table !UT- check this logic again*/
8160 WDI_STATableClose(pWDICtx);
8161
8162 /*close the PAL */
8163 wptStatus = wpalClose(pWDICtx->pPALContext);
8164 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8165 {
8166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8167 "Failed to wpal Close %d", wptStatus);
8168 WDI_ASSERT(0);
8169 }
8170
8171 /*Transition back to init state*/
8172 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
8173
8174 wpalMutexRelease(&pWDICtx->wptMutex);
8175
8176 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008177 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008178
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008180}/*WDI_ProcessCloseReq*/
8181
8182
8183/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008185===========================================================================*/
8186
8187/**
8188 @brief Process Init Scan Request function (called when Main FSM
8189 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008190
8191 @param pWDICtx: pointer to the WLAN DAL context
8192 pEventData: pointer to the event information structure
8193
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 @see
8195 @return Result of the function call
8196*/
8197WDI_Status
8198WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008199(
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 WDI_ControlBlockType* pWDICtx,
8201 WDI_EventInfoType* pEventData
8202)
8203{
8204 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
8205 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 wpt_uint16 usDataOffset = 0;
8208 wpt_uint16 usSendSize = 0;
8209 wpt_uint8 i = 0;
8210
8211 tHalInitScanReqMsg halInitScanReqMsg;
8212
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 * It shold be removed once host and riva changes are in sync*/
8215 tHalInitScanConReqMsg halInitScanConReqMsg;
8216
8217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8218
8219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008221 -------------------------------------------------------------------------*/
8222 if (( NULL == pEventData ) ||
8223 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8224 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8225 {
8226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008230 }
8231
8232#if 0
8233 wpalMutexAcquire(&pWDICtx->wptMutex);
8234 /*-----------------------------------------------------------------------
8235 Check to see if SCAN is already in progress - if so reject the req
8236 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008238 -----------------------------------------------------------------------*/
8239 if ( pWDICtx->bScanInProgress )
8240 {
8241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8242 "Scan is already in progress - subsequent scan is not allowed"
8243 " until the first scan completes");
8244
8245 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008247 }
8248
Jeff Johnsone7245742012-09-05 17:12:55 -07008249 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8250 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008251
8252 wpalMutexRelease(&pWDICtx->wptMutex);
8253#endif
Viral Modid86bde22012-12-10 13:09:21 -08008254 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 {
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 /*-----------------------------------------------------------------------
8259 Get message buffer
8260 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 sizeof(halInitScanConReqMsg.initScanParams),
8263 &pSendBuffer, &usDataOffset, &usSendSize))||
8264 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8265 {
8266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008267 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 }
8272
8273
8274 /*-----------------------------------------------------------------------
8275 Fill in the message
8276 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008277 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8279
8280 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8281 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8282
Jeff Johnsone7245742012-09-05 17:12:55 -07008283 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008285 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8289
8290 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8291 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8292
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8294 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008295
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8298
8299 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8300 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008301 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8303 }
8304
Jeff Johnsone7245742012-09-05 17:12:55 -07008305 wpalMemoryCopy( pSendBuffer+usDataOffset,
8306 &halInitScanConReqMsg.initScanParams,
8307 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 }
8309 else
8310 {
8311 /*-----------------------------------------------------------------------
8312 Get message buffer
8313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 sizeof(halInitScanReqMsg.initScanParams),
8316 &pSendBuffer, &usDataOffset, &usSendSize))||
8317 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8318 {
8319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008320 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008321 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008324 }
8325
8326
8327 /*-----------------------------------------------------------------------
8328 Fill in the message
8329 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008331 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8332
8333 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8334 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8335
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008337 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008339 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008340 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8342
8343 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8344 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8345
Jeff Johnsone7245742012-09-05 17:12:55 -07008346 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008347 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8348
8349 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8350 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008351 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8353 }
8354
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 wpalMemoryCopy( pSendBuffer+usDataOffset,
8356 &halInitScanReqMsg.initScanParams,
8357 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 }
8359
8360 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008362
8363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8368
8369}/*WDI_ProcessInitScanReq*/
8370
8371/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008374
8375 @param pWDICtx: pointer to the WLAN DAL context
8376 pEventData: pointer to the event information structure
8377
Jeff Johnson295189b2012-06-20 16:38:30 -07008378 @see
8379 @return Result of the function call
8380*/
8381WDI_Status
8382WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008383(
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 WDI_ControlBlockType* pWDICtx,
8385 WDI_EventInfoType* pEventData
8386)
8387{
8388 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8389 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 wpt_uint16 usDataOffset = 0;
8392 wpt_uint16 usSendSize = 0;
8393
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8396
8397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 -------------------------------------------------------------------------*/
8400 if (( NULL == pEventData ) ||
8401 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8402 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8403 {
8404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 }
8409
8410#if 0
8411 wpalMutexAcquire(&pWDICtx->wptMutex);
8412 /*-----------------------------------------------------------------------
8413 Check to see if SCAN is already in progress - start scan is only
8414 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008415 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8419 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8420 {
8421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8422 "Scan start not allowed in this state %d %d",
8423 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008424
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 }
8428
Jeff Johnsone7245742012-09-05 17:12:55 -07008429 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008430
8431 wpalMutexRelease(&pWDICtx->wptMutex);
8432#endif
8433
8434 /*-----------------------------------------------------------------------
8435 Get message buffer
8436 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 sizeof(halStartScanReqMsg.startScanParams),
8439 &pSendBuffer, &usDataOffset, &usSendSize))||
8440 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8441 {
8442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008443 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 }
8448
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 wpalMemoryCopy( pSendBuffer+usDataOffset,
8452 &halStartScanReqMsg.startScanParams,
8453 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008454
8455 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008457
8458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8463}/*WDI_ProcessStartScanReq*/
8464
8465
8466/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008469
8470 @param pWDICtx: pointer to the WLAN DAL context
8471 pEventData: pointer to the event information structure
8472
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 @see
8474 @return Result of the function call
8475*/
8476WDI_Status
8477WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008478(
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 WDI_ControlBlockType* pWDICtx,
8480 WDI_EventInfoType* pEventData
8481)
8482{
8483 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8484 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 wpt_uint16 usDataOffset = 0;
8487 wpt_uint16 usSendSize = 0;
8488
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8491
8492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008494 -------------------------------------------------------------------------*/
8495 if (( NULL == pEventData ) ||
8496 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8497 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8498 {
8499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 }
8504
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8506 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 * forwarded to HAL and result in hang*/
8508#if 0
8509 wpalMutexAcquire(&pWDICtx->wptMutex);
8510 /*-----------------------------------------------------------------------
8511 Check to see if SCAN is already in progress - end scan is only
8512 allowed when a scan is ongoing and the state of the scan procedure
8513 is started
8514 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8517 {
8518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8519 "End start not allowed in this state %d %d",
8520 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008521
Jeff Johnson295189b2012-06-20 16:38:30 -07008522 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008524 }
8525
Jeff Johnsone7245742012-09-05 17:12:55 -07008526 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008527
8528 wpalMutexRelease(&pWDICtx->wptMutex);
8529#endif
8530
8531 /*-----------------------------------------------------------------------
8532 Get message buffer
8533 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 sizeof(halEndScanReqMsg.endScanParams),
8536 &pSendBuffer, &usDataOffset, &usSendSize))||
8537 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8538 {
8539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008540 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 }
8545
8546 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8547
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 wpalMemoryCopy( pSendBuffer+usDataOffset,
8549 &halEndScanReqMsg.endScanParams,
8550 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008551
8552 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008554
8555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8560}/*WDI_ProcessEndScanReq*/
8561
8562
8563/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008566
8567 @param pWDICtx: pointer to the WLAN DAL context
8568 pEventData: pointer to the event information structure
8569
Jeff Johnson295189b2012-06-20 16:38:30 -07008570 @see
8571 @return Result of the function call
8572*/
8573WDI_Status
8574WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008575(
Jeff Johnson295189b2012-06-20 16:38:30 -07008576 WDI_ControlBlockType* pWDICtx,
8577 WDI_EventInfoType* pEventData
8578)
8579{
8580 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8581 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 wpt_uint16 usDataOffset = 0;
8584 wpt_uint16 usSendSize = 0;
8585 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008586 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8589
8590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008592 -------------------------------------------------------------------------*/
8593 if (( NULL == pEventData ) ||
8594 ( NULL == pEventData->pEventData) ||
8595 ( NULL == pEventData->pCBfnc))
8596 {
8597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008601 }
8602
8603 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8604 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8606 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008607 * forwarded to HAL and result in hang*/
8608#if 0
8609 wpalMutexAcquire(&pWDICtx->wptMutex);
8610 /*-----------------------------------------------------------------------
8611 Check to see if SCAN is already in progress
8612 Finish scan gets invoked any scan states. ie. abort scan
8613 It should be allowed in any states.
8614 -----------------------------------------------------------------------*/
8615 if ( !pWDICtx->bScanInProgress )
8616 {
8617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8618 "Finish start not allowed in this state %d",
8619 pWDICtx->bScanInProgress );
8620
8621 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008622 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 }
8624
8625 /*-----------------------------------------------------------------------
8626 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8630 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 wpalMutexRelease(&pWDICtx->wptMutex);
8632#endif
8633
8634 if ( pWDICtx->bInBmps )
8635 {
8636 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008637 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8638 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8639 {
8640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008641 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008642 WDI_ASSERT(0);
8643 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008644 }
8645
8646 /*-----------------------------------------------------------------------
8647 Get message buffer
8648 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 sizeof(halFinishScanReqMsg.finishScanParams),
8651 &pSendBuffer, &usDataOffset, &usSendSize))||
8652 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8653 {
8654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008655 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 }
8660
Jeff Johnsone7245742012-09-05 17:12:55 -07008661 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8663
Jeff Johnsone7245742012-09-05 17:12:55 -07008664 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008665 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8666
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8669
8670 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8671 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8672
Jeff Johnsone7245742012-09-05 17:12:55 -07008673 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8679
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8682
8683 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8684 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8687 }
8688
8689 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8690 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8691
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 wpalMemoryCopy( pSendBuffer+usDataOffset,
8693 &halFinishScanReqMsg.finishScanParams,
8694 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008695
8696 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008698
8699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008700 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008701 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8704}/*WDI_ProcessFinishScanReq*/
8705
8706
8707/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008708 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008709==========================================================================*/
8710/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 @brief Process BSS Join for a given Session
8712
8713 @param pWDICtx: pointer to the WLAN DAL context
8714 pEventData: pointer to the event information structure
8715
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 @see
8717 @return Result of the function call
8718*/
8719WDI_Status
8720WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008721(
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 WDI_ControlBlockType* pWDICtx,
8723 WDI_JoinReqParamsType* pwdiJoinParams,
8724 WDI_JoinRspCb wdiJoinRspCb,
8725 void* pUserData
8726)
8727{
8728 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 wpt_uint16 usDataOffset = 0;
8731 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008733
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8736
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008737 wpalMutexAcquire(&pWDICtx->wptMutex);
8738
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 /*------------------------------------------------------------------------
8740 Check to see if we have any session with this BSSID already stored, we
8741 should not
8742 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8744 pwdiJoinParams->wdiReqInfo.macBSSID,
8745 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008746
8747 if ( NULL != pBSSSes )
8748 {
8749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008750 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8751 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008752
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008753 /*reset the bAssociationInProgress otherwise the next
8754 *join request will be queued*/
8755 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8756 wpalMutexRelease(&pWDICtx->wptMutex);
8757 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 }
8759
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 if ( NULL == pBSSSes )
8765 {
8766
8767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8768 "DAL has no free sessions - cannot run another join");
8769
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008770 /*reset the bAssociationInProgress otherwise the next
8771 *join request will be queued*/
8772 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008773 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 }
8776
8777 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8779 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 WDI_MAC_ADDR_LEN);
8781
8782 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008785
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 wpalMutexRelease(&pWDICtx->wptMutex);
8787
8788 /*-----------------------------------------------------------------------
8789 Get message buffer
8790 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 sizeof(halJoinReqMsg.joinReqParams),
8793 &pSendBuffer, &usDataOffset, &usSendSize))||
8794 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8795 {
8796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008797 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 pUserData, pwdiJoinParams, wdiJoinRspCb);
8799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 }
8802
8803 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008804 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008805
8806 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 pwdiJoinParams->wdiReqInfo.macSTASelf,
8808 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008809
Jeff Johnsone7245742012-09-05 17:12:55 -07008810 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008811 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8812
8813 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8814
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008815#ifdef WLAN_FEATURE_VOWIFI
8816 halJoinReqMsg.joinReqParams.maxTxPower =
8817 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8818#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8821#endif
8822
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8825 wdiSecondaryChannelOffset);
8826
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 wpalMemoryCopy( pSendBuffer+usDataOffset,
8828 &halJoinReqMsg.joinReqParams,
8829 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008830
8831 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008833
8834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008836 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8838 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008839
8840}/*WDI_ProcessBSSSessionJoinReq*/
8841
8842/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008845
8846 @param pWDICtx: pointer to the WLAN DAL context
8847 pEventData: pointer to the event information structure
8848
Jeff Johnson295189b2012-06-20 16:38:30 -07008849 @see
8850 @return Result of the function call
8851*/
8852WDI_Status
8853WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008854(
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 WDI_ControlBlockType* pWDICtx,
8856 WDI_EventInfoType* pEventData
8857)
8858{
8859 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8860 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8861 WDI_JoinRspCb wdiJoinRspCb = NULL;
8862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8863
8864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 -------------------------------------------------------------------------*/
8867 if (( NULL == pEventData ) ||
8868 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8869 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8870 {
8871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008876
Jeff Johnson295189b2012-06-20 16:38:30 -07008877 /*-------------------------------------------------------------------------
8878 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 -------------------------------------------------------------------------*/
8881 wpalMutexAcquire(&pWDICtx->wptMutex);
8882
8883 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8884 {
8885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8886 "Association is currently in progress, queueing new join req");
8887
8888 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 pwdiJoinParams->wdiReqInfo.macBSSID);
8891
8892 wpalMutexRelease(&pWDICtx->wptMutex);
8893
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 }
8896
8897 /*Starting a new association */
8898 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8899 wpalMutexRelease(&pWDICtx->wptMutex);
8900
8901 /*Process the Join Request*/
8902 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8903 wdiJoinRspCb,pEventData->pUserData);
8904
8905}/*WDI_ProcessJoinReq*/
8906
8907
8908/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008911
8912 @param pWDICtx: pointer to the WLAN DAL context
8913 pEventData: pointer to the event information structure
8914
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 @see
8916 @return Result of the function call
8917*/
8918WDI_Status
8919WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008920(
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 WDI_ControlBlockType* pWDICtx,
8922 WDI_EventInfoType* pEventData
8923)
8924{
8925 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8926 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 wpt_uint16 uMsgSize = 0;
8930 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 wpt_uint16 usDataOffset = 0;
8932 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008934
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8937
8938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 -------------------------------------------------------------------------*/
8941 if (( NULL == pEventData ) ||
8942 ( NULL == pEventData->pEventData ) ||
8943 ( NULL == pEventData->pCBfnc ))
8944 {
8945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 }
8950
Abhishek Singh6927fa02014-06-27 17:19:55 +05308951 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008952 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8953 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8954 /*-------------------------------------------------------------------------
8955 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 -------------------------------------------------------------------------*/
8958 wpalMutexAcquire(&pWDICtx->wptMutex);
8959
8960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008962 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8964 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8965 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008966
Jeff Johnsone7245742012-09-05 17:12:55 -07008967 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 {
8969#ifdef WLAN_FEATURE_VOWIFI_11R
8970 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 if ( NULL == pBSSSes )
8975 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008976
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8978 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008979
Jeff Johnson295189b2012-06-20 16:38:30 -07008980 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008983
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008985 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8986 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008988
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8992#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 * Request in case of IBSS*/
8995 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8996 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8997 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8998 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8999 {
9000 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 if ( NULL == pBSSSes )
9005 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009006
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9008 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009009
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009011 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009012 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009013
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9016 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009018
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9022 }
9023 else
9024 {
9025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
9027 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9028 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
9029
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 /* for IBSS testing */
9031 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 }
9034#endif
9035 }
9036
9037 /*------------------------------------------------------------------------
9038 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 ------------------------------------------------------------------------*/
9041 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9042 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9044 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
9045 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9046 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009047
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009049
9050 wpalMutexRelease(&pWDICtx->wptMutex);
9051
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 }
9054
9055 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
9057 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 sizeof(pWDICtx->wdiCachedConfigBssReq));
9059
9060 wpalMutexRelease(&pWDICtx->wptMutex);
9061
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
9063#ifdef WLAN_FEATURE_11AC
9064 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009065 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 else
9067#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009068 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07009069
9070 /*-----------------------------------------------------------------------
9071 Get message buffer
9072 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
9075 ( usSendSize < (usDataOffset + uMsgSize )))
9076 {
9077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009078 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
9080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 }
9083
9084 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07009085#ifdef WLAN_FEATURE_11AC
9086 if (WDI_getFwWlanFeatCaps(DOT11AC))
9087 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
9088 &pwdiConfigBSSParams->wdiReqInfo);
9089 else
9090#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 &pwdiConfigBSSParams->wdiReqInfo);
9093
9094 /* Need to fill in the STA Index to invalid, since at this point we have not
9095 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07009097
9098 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
9100
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009101#ifdef WLAN_FEATURE_11AC
9102 if (WDI_getFwWlanFeatCaps(DOT11AC)){
9103 wpalMemoryCopy( pSendBuffer+usDataOffset,
9104 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
9105 uMsgSize);
9106 }else
9107#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009108 {
9109 if ( uMsgSize <= sizeof(tConfigBssParams) )
9110 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07009111 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009112 &halConfigBssReqMsg.uBssParams.configBssParams,
9113 uMsgSize);
9114 }
9115 else
9116 {
9117 return WDI_STATUS_E_FAILURE;
9118 }
9119 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009120
9121 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309123 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9128 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 WDI_CONFIG_BSS_RESP);
9130
9131}/*WDI_ProcessConfigBSSReq*/
9132
9133
9134/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009137
9138 @param pWDICtx: pointer to the WLAN DAL context
9139 pEventData: pointer to the event information structure
9140
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 @see
9142 @return Result of the function call
9143*/
9144WDI_Status
9145WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009146(
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 WDI_ControlBlockType* pWDICtx,
9148 WDI_EventInfoType* pEventData
9149)
9150{
9151 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
9152 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 wpt_uint16 usDataOffset = 0;
9157 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009159
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9162
9163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 -------------------------------------------------------------------------*/
9166 if (( NULL == pEventData ) ||
9167 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
9168 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
9169 {
9170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 }
9175
9176 /*-------------------------------------------------------------------------
9177 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 -------------------------------------------------------------------------*/
9180 wpalMutexAcquire(&pWDICtx->wptMutex);
9181
9182 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009183 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9186 pwdiDelBSSParams->ucBssIdx,
9187 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009188
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 {
9191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 "%s: BSS does not yet exist. ucBssIdx %d",
9193 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009194
9195 wpalMutexRelease(&pWDICtx->wptMutex);
9196
9197 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009199
9200 /*------------------------------------------------------------------------
9201 Check if this BSS is being currently processed or queued,
9202 if queued - queue the new request as well
9203 ------------------------------------------------------------------------*/
9204 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9207 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9208 __func__, pwdiDelBSSParams->ucBssIdx);
9209
9210 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9211
9212 wpalMutexRelease(&pWDICtx->wptMutex);
9213
9214 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009215 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009216
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 /*-----------------------------------------------------------------------
9218 If we receive a Del BSS request for an association that is already in
9219 progress, it indicates that the assoc has failed => we no longer have
9220 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07009222 -----------------------------------------------------------------------*/
9223 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9224 {
9225 /*We can switch to false here because even if a subsequent Join comes in
9226 it will only be processed when DAL transitions out of BUSY state which
9227 happens when the Del BSS request comes */
9228 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9229
9230 /*Former association is complete - prepare next pending assoc for
9231 processing */
9232 WDI_DequeueAssocRequest(pWDICtx);
9233 }
9234
9235 wpalMutexRelease(&pWDICtx->wptMutex);
9236 /*-----------------------------------------------------------------------
9237 Get message buffer
9238 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 sizeof(halBssReqMsg.deleteBssParams),
9241 &pSendBuffer, &usDataOffset, &usSendSize))||
9242 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9243 {
9244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009245 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 }
9250
9251 /*Fill in the message request structure*/
9252
9253 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009254 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009255
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 wpalMemoryCopy( pSendBuffer+usDataOffset,
9257 &halBssReqMsg.deleteBssParams,
9258 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009259
9260 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009261 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009262
Jeff Johnsone7245742012-09-05 17:12:55 -07009263
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9269
Jeff Johnsone7245742012-09-05 17:12:55 -07009270
Jeff Johnson295189b2012-06-20 16:38:30 -07009271}/*WDI_ProcessDelBSSReq*/
9272
9273/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009276
9277 @param pWDICtx: pointer to the WLAN DAL context
9278 pEventData: pointer to the event information structure
9279
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 @see
9281 @return Result of the function call
9282*/
9283WDI_Status
9284WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009285(
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 WDI_ControlBlockType* pWDICtx,
9287 WDI_EventInfoType* pEventData
9288)
9289{
9290 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9291 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 wpt_uint16 usDataOffset = 0;
9296 wpt_uint16 usSendSize = 0;
9297 wpt_uint16 uMsgSize = 0;
9298 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009300
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9303
9304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 -------------------------------------------------------------------------*/
9307 if (( NULL == pEventData ) ||
9308 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9309 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9310 {
9311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 }
9316
9317 /*-------------------------------------------------------------------------
9318 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 -------------------------------------------------------------------------*/
9321 wpalMutexAcquire(&pWDICtx->wptMutex);
9322
9323 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9327 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9328 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009329
9330 if ( NULL == pBSSSes )
9331 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9333 "%s: Association sequence for this BSS does not yet exist - "
9334 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9335 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009336
9337 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 }
9340
9341 /*------------------------------------------------------------------------
9342 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 ------------------------------------------------------------------------*/
9345 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9346 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9348 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9349 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009350
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009352
9353 wpalMutexRelease(&pWDICtx->wptMutex);
9354
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 }
9357
9358 /*-----------------------------------------------------------------------
9359 If Post Assoc was not yet received - the current association must
9360 be in progress
9361 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009362 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9364 {
9365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9366 "Association sequence for this BSS association no longer in "
9367 "progress - not allowed");
9368
9369 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 }
9372
9373 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 -----------------------------------------------------------------------*/
9376 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9377 {
9378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9379 "Post Assoc not allowed before JOIN - failing request");
9380
9381 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 }
9384
9385 wpalMutexRelease(&pWDICtx->wptMutex);
9386
9387 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9388 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9389 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9394 ( usSendSize < (usDataOffset + uMsgSize )))
9395 {
9396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009397 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009401 }
9402
9403 /*Copy the STA parameters */
9404 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9405 &pwdiPostAssocParams->wdiSTAParams );
9406
9407 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009408 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 WDI_STATableFindStaidByAddr(pWDICtx,
9410 pwdiPostAssocParams->wdiSTAParams.macSTA,
9411 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9412 {
9413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009414 MAC_ADDRESS_STR
9415 ": This station does not exist in the WDI Station Table",
9416 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009418 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 }
9421
9422 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 pBSSSes->ucBSSIdx;
9425
9426 /*Copy the BSS parameters */
9427 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9428 &pwdiPostAssocParams->wdiBSSParams);
9429
9430 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 WDI_STATableFindStaidByAddr(pWDICtx,
9433 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 {
9436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009437 MAC_ADDRESS_STR
9438 ": This station does not exist in the WDI Station Table",
9439 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009441 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 }
9444
9445 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 pBSSSes->ucBSSIdx;
9448
Jeff Johnsone7245742012-09-05 17:12:55 -07009449
9450 wpalMemoryCopy( pSendBuffer+usDataOffset,
9451 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9452 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009453
9454 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9455
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9457 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9458 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009459
Jeff Johnsone7245742012-09-05 17:12:55 -07009460
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009463
Jeff Johnsone7245742012-09-05 17:12:55 -07009464
9465 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009468
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309469 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9475
Jeff Johnsone7245742012-09-05 17:12:55 -07009476
Jeff Johnson295189b2012-06-20 16:38:30 -07009477}/*WDI_ProcessPostAssocReq*/
9478
9479/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009482
9483 @param pWDICtx: pointer to the WLAN DAL context
9484 pEventData: pointer to the event information structure
9485
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 @see
9487 @return Result of the function call
9488*/
9489WDI_Status
9490WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009491(
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 WDI_ControlBlockType* pWDICtx,
9493 WDI_EventInfoType* pEventData
9494)
9495{
9496 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9497 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 wpt_uint16 usDataOffset = 0;
9502 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9505
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9508
9509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 -------------------------------------------------------------------------*/
9512 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9513 ( NULL == pEventData->pCBfnc ))
9514 {
9515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 }
9520
9521 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9522 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9523 /*-------------------------------------------------------------------------
9524 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 -------------------------------------------------------------------------*/
9527 wpalMutexAcquire(&pWDICtx->wptMutex);
9528
9529 /*------------------------------------------------------------------------
9530 Find the BSS for which the request is made and identify WDI session
9531 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9533 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009534 &macBSSID))
9535 {
9536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009537 "This station does not exist in the WDI Station Table %d",
9538 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 }
9542
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9544 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009545 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9547 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9548 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009549
9550 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 }
9553
9554 /*------------------------------------------------------------------------
9555 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 ------------------------------------------------------------------------*/
9558 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9559 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9561 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9562 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009563
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 }
9568
9569 wpalMutexRelease(&pWDICtx->wptMutex);
9570 /*-----------------------------------------------------------------------
9571 Get message buffer
9572 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 sizeof(halDelStaReqMsg.delStaParams),
9575 &pSendBuffer, &usDataOffset, &usSendSize))||
9576 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9577 {
9578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009579 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 }
9584
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9586 wpalMemoryCopy( pSendBuffer+usDataOffset,
9587 &halDelStaReqMsg.delStaParams,
9588 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009589
9590 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009592
9593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9598
9599}/*WDI_ProcessDelSTAReq*/
9600
9601
9602/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009604==========================================================================*/
9605/**
9606 @brief Process Set BSS Key Request function (called when Main FSM
9607 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009608
9609 @param pWDICtx: pointer to the WLAN DAL context
9610 pEventData: pointer to the event information structure
9611
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 @see
9613 @return Result of the function call
9614*/
9615WDI_Status
9616WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009617(
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 WDI_ControlBlockType* pWDICtx,
9619 WDI_EventInfoType* pEventData
9620)
9621{
9622 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9623 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 wpt_uint16 usDataOffset = 0;
9628 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9631 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309632 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009633
9634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9635
9636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 -------------------------------------------------------------------------*/
9639 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9640 ( NULL == pEventData->pCBfnc ))
9641 {
9642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 }
9647
9648 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9649 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9650 /*-------------------------------------------------------------------------
9651 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 -------------------------------------------------------------------------*/
9654 wpalMutexAcquire(&pWDICtx->wptMutex);
9655
9656 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9660 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9661 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009662
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 {
9665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9667 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009668
9669 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 }
9672
9673 /*------------------------------------------------------------------------
9674 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 ------------------------------------------------------------------------*/
9677 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9678 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9680 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9681 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009682
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 }
9687
9688
9689 wpalMutexRelease(&pWDICtx->wptMutex);
9690 /*-----------------------------------------------------------------------
9691 Get message buffer
9692 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9695 &pSendBuffer, &usDataOffset, &usSendSize))||
9696 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9697 {
9698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009699 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009703 }
9704
9705 /*-----------------------------------------------------------------------
9706 Copy the Key parameters into the HAL message
9707 -----------------------------------------------------------------------*/
9708
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009710
Jeff Johnsone7245742012-09-05 17:12:55 -07009711 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009712 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9713
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9716
9717 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9718 keyIndex++)
9719 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9722 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9723 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9724 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9725 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309726
9727 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9728 {
9729 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9730 {
9731 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9732 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9733 }
9734
9735 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9736 {
9737 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9738 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9739 }
9740
9741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9742 "%s: Negated Keys", __func__);
9743 }
9744 else
9745 {
9746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9747 "%s: No change in Keys", __func__);
9748 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309751 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9752 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9753 WDI_MAX_KEY_LENGTH);
9754 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309759 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009760
9761 wpalMemoryCopy( pSendBuffer+usDataOffset,
9762 &halSetBssKeyReqMsg.setBssKeyParams,
9763 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009764
9765 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009766 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009767
9768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9772 wdiSetBSSKeyRspCb, pEventData->pUserData,
9773 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009774
9775}/*WDI_ProcessSetBssKeyReq*/
9776
9777/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009780
9781 @param pWDICtx: pointer to the WLAN DAL context
9782 pEventData: pointer to the event information structure
9783
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 @see
9785 @return Result of the function call
9786*/
9787WDI_Status
9788WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009789(
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 WDI_ControlBlockType* pWDICtx,
9791 WDI_EventInfoType* pEventData
9792)
9793{
9794 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9795 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009796 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009797 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 wpt_uint16 usDataOffset = 0;
9800 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9804
9805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 -------------------------------------------------------------------------*/
9808 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9809 ( NULL == pEventData->pCBfnc ))
9810 {
9811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 }
9816
9817 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9818 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9819 /*-------------------------------------------------------------------------
9820 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 -------------------------------------------------------------------------*/
9823 wpalMutexAcquire(&pWDICtx->wptMutex);
9824
9825 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9829 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9830 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009831
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 {
9834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9836 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009837
9838 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 }
9841
9842 /*------------------------------------------------------------------------
9843 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009845 ------------------------------------------------------------------------*/
9846 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9847 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9849 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9850 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009851
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 }
9856
9857
9858 wpalMutexRelease(&pWDICtx->wptMutex);
9859
9860 /*-----------------------------------------------------------------------
9861 Get message buffer
9862 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009864 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9865 &pSendBuffer, &usDataOffset, &usSendSize))||
9866 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9867 {
9868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009869 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009873 }
9874 /*-----------------------------------------------------------------------
9875 Copy the Key parameters into the HAL message
9876 -----------------------------------------------------------------------*/
9877 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9878
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9881
9882 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9883
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9886
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 wpalMemoryCopy( pSendBuffer+usDataOffset,
9888 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9889 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009890
9891 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009893
9894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009900}/*WDI_ProcessRemoveBssKeyReq*/
9901
9902/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009905
9906 @param pWDICtx: pointer to the WLAN DAL context
9907 pEventData: pointer to the event information structure
9908
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 @see
9910 @return Result of the function call
9911*/
9912WDI_Status
9913WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009914(
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 WDI_ControlBlockType* pWDICtx,
9916 WDI_EventInfoType* pEventData
9917)
9918{
9919 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9920 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9921 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 wpt_uint16 usDataOffset = 0;
9924 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9929 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309930 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009931
9932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9933
9934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 -------------------------------------------------------------------------*/
9937 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9938 ( NULL == pEventData->pCBfnc ))
9939 {
9940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 }
9945
9946 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9947 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9948 /*-------------------------------------------------------------------------
9949 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 -------------------------------------------------------------------------*/
9952 wpalMutexAcquire(&pWDICtx->wptMutex);
9953
9954 /*------------------------------------------------------------------------
9955 Find the BSS for which the request is made and identify WDI session
9956 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9958 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 &macBSSID))
9960 {
9961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009962 "This station does not exist in the WDI Station Table %d",
9963 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 }
9967
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9969 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009970 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9972 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9973 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009974
9975 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009978
Jeff Johnson295189b2012-06-20 16:38:30 -07009979 /*------------------------------------------------------------------------
9980 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 ------------------------------------------------------------------------*/
9983 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9984 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9986 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9987 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009988
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 }
9993
9994
9995 wpalMutexRelease(&pWDICtx->wptMutex);
9996 /*-----------------------------------------------------------------------
9997 Get message buffer
9998 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10001 &pSendBuffer, &usDataOffset, &usSendSize))||
10002 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10003 {
10004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010005 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 }
10010 /*-----------------------------------------------------------------------
10011 Copy the STA Key parameters into the HAL message
10012 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10015
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010017 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10018
10019 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10020
10021 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10022
10023 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10024
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10026 keyIndex++)
10027 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10030 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10031 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10032 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10033 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010034
10035 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10036 {
10037 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10038 {
10039 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10040 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10041 }
10042
10043 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10044 {
10045 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10046 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10047 }
10048
10049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10050 "%s: Negated Keys", __func__);
10051 }
10052 else
10053 {
10054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10055 "%s: No change in Keys", __func__);
10056 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010058 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010059 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10060 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10061 WDI_MAX_KEY_LENGTH);
10062 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010065 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010066 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010067 }
Jeff Johnson295189b2012-06-20 16:38:30 -070010068
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 wpalMemoryCopy( pSendBuffer+usDataOffset,
10070 &halSetStaKeyReqMsg.setStaKeyParams,
10071 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010072
10073 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010075 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010079 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10080 wdiSetSTAKeyRspCb, pEventData->pUserData,
10081 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010082
10083}/*WDI_ProcessSetSTAKeyReq*/
10084
10085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010087 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010088
10089 @param pWDICtx: pointer to the WLAN DAL context
10090 pEventData: pointer to the event information structure
10091
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 @see
10093 @return Result of the function call
10094*/
10095WDI_Status
10096WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010097(
Jeff Johnson295189b2012-06-20 16:38:30 -070010098 WDI_ControlBlockType* pWDICtx,
10099 WDI_EventInfoType* pEventData
10100)
10101{
10102 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
10103 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10104 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 wpt_uint16 usDataOffset = 0;
10107 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010109 wpt_macAddr macBSSID;
10110 wpt_uint8 ucCurrentBSSSesIdx;
10111 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
10112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10113
10114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 -------------------------------------------------------------------------*/
10117 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10118 ( NULL == pEventData->pCBfnc ))
10119 {
10120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 }
10125
10126 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10127 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10128 /*-------------------------------------------------------------------------
10129 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010130 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010131 -------------------------------------------------------------------------*/
10132 wpalMutexAcquire(&pWDICtx->wptMutex);
10133
10134 /*------------------------------------------------------------------------
10135 Find the BSS for which the request is made and identify WDI session
10136 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10138 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010139 &macBSSID))
10140 {
10141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010142 "This station does not exist in the WDI Station Table %d",
10143 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 }
10147
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10149 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010150 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10152 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10153 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010154
10155 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010156 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010158
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 /*------------------------------------------------------------------------
10160 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 ------------------------------------------------------------------------*/
10163 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10164 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10166 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10167 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010168
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 }
10173
10174
10175
10176 wpalMutexRelease(&pWDICtx->wptMutex);
10177 /*-----------------------------------------------------------------------
10178 Get message buffer
10179 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010181 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
10182 &pSendBuffer, &usDataOffset, &usSendSize))||
10183 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
10184 {
10185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010186 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
10188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 }
10191
10192 /*-----------------------------------------------------------------------
10193 Copy the Key parameters into the HAL message
10194 -----------------------------------------------------------------------*/
10195
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10198
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
10201
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
10204
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
10207
Jeff Johnsone7245742012-09-05 17:12:55 -070010208 wpalMemoryCopy( pSendBuffer+usDataOffset,
10209 &halRemoveStaKeyReqMsg.removeStaKeyParams,
10210 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010211
10212 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010213 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010214
10215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010221
10222}/*WDI_ProcessRemoveSTAKeyReq*/
10223
10224/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010225 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010226 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010227
10228 @param pWDICtx: pointer to the WLAN DAL context
10229 pEventData: pointer to the event information structure
10230
Jeff Johnson295189b2012-06-20 16:38:30 -070010231 @see
10232 @return Result of the function call
10233*/
10234WDI_Status
10235WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010236(
Jeff Johnson295189b2012-06-20 16:38:30 -070010237 WDI_ControlBlockType* pWDICtx,
10238 WDI_EventInfoType* pEventData
10239)
10240{
10241 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10242 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10243 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 wpt_uint16 usDataOffset = 0;
10246 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010247 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010250 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10251 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010252 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010253
10254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10255
10256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 -------------------------------------------------------------------------*/
10259 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10260 ( NULL == pEventData->pCBfnc ))
10261 {
10262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 }
10267
10268 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10269 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10270 /*-------------------------------------------------------------------------
10271 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 -------------------------------------------------------------------------*/
10274 wpalMutexAcquire(&pWDICtx->wptMutex);
10275
10276 /*------------------------------------------------------------------------
10277 Find the BSS for which the request is made and identify WDI session
10278 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10280 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010281 &macBSSID))
10282 {
10283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010284 "This station does not exist in the WDI Station Table %d",
10285 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 }
10289
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10291 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 {
10293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010294 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010296
10297 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010298 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010300
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 /*------------------------------------------------------------------------
10302 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 ------------------------------------------------------------------------*/
10305 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10306 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10308 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10309 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010310
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010313 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010314 }
10315
10316
10317 wpalMutexRelease(&pWDICtx->wptMutex);
10318 /*-----------------------------------------------------------------------
10319 Get message buffer
10320 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010322 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10323 &pSendBuffer, &usDataOffset, &usSendSize))||
10324 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10325 {
10326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010327 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 }
10332 /*-----------------------------------------------------------------------
10333 Copy the STA Key parameters into the HAL message
10334 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10337
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010339 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10340
10341 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10342
10343 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10344
10345 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10346
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10348 keyIndex++)
10349 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10352 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10353 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10354 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10355 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010356
10357 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10358 {
10359 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10360 {
10361 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10362 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10363 }
10364
10365 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10366 {
10367 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10368 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10369 }
10370
10371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10372 "%s: Negated Keys", __func__);
10373 }
10374 else
10375 {
10376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10377 "%s: No change in Keys", __func__);
10378 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010381 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10382 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10383 WDI_MAX_KEY_LENGTH);
10384 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010389 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 wpalMemoryCopy( pSendBuffer+usDataOffset,
10391 &halSetStaKeyReqMsg.setStaKeyParams,
10392 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010393
10394 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010396
10397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010398 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10401 wdiSetSTAKeyRspCb, pEventData->pUserData,
10402 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010403
10404}/*WDI_ProcessSetSTABcastKeyReq*/
10405
10406/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010409
10410 @param pWDICtx: pointer to the WLAN DAL context
10411 pEventData: pointer to the event information structure
10412
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 @see
10414 @return Result of the function call
10415*/
10416WDI_Status
10417WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010418(
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 WDI_ControlBlockType* pWDICtx,
10420 WDI_EventInfoType* pEventData
10421)
10422{
10423 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10424 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10425 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010426 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 wpt_uint16 usDataOffset = 0;
10428 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 wpt_macAddr macBSSID;
10431 wpt_uint8 ucCurrentBSSSesIdx;
10432 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10434
10435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010437 -------------------------------------------------------------------------*/
10438 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10439 ( NULL == pEventData->pCBfnc ))
10440 {
10441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 }
10446
10447 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10448 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10449 /*-------------------------------------------------------------------------
10450 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010452 -------------------------------------------------------------------------*/
10453 wpalMutexAcquire(&pWDICtx->wptMutex);
10454
10455 /*------------------------------------------------------------------------
10456 Find the BSS for which the request is made and identify WDI session
10457 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10459 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 &macBSSID))
10461 {
10462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010463 "This station does not exist in the WDI Station Table %d",
10464 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 }
10468
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10470 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10473 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10474 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010475
10476 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010479
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 /*------------------------------------------------------------------------
10481 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010482 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010483 ------------------------------------------------------------------------*/
10484 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10485 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10487 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10488 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010489
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 }
10494
10495
10496
10497 wpalMutexRelease(&pWDICtx->wptMutex);
10498 /*-----------------------------------------------------------------------
10499 Get message buffer
10500 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10503 &pSendBuffer, &usDataOffset, &usSendSize))||
10504 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10505 {
10506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010507 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 }
10512
10513 /*-----------------------------------------------------------------------
10514 Copy the Key parameters into the HAL message
10515 -----------------------------------------------------------------------*/
10516
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10519
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10522
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10525
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10528
Jeff Johnsone7245742012-09-05 17:12:55 -070010529 wpalMemoryCopy( pSendBuffer+usDataOffset,
10530 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10531 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010532
10533 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010534 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010535
10536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010539 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010540 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010541 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010542
10543}/*WDI_ProcessRemoveSTABcastKeyReq*/
10544
10545/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010547==========================================================================*/
10548/**
10549 @brief Process Add TSpec Request function (called when Main FSM
10550 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010551
10552 @param pWDICtx: pointer to the WLAN DAL context
10553 pEventData: pointer to the event information structure
10554
Jeff Johnson295189b2012-06-20 16:38:30 -070010555 @see
10556 @return Result of the function call
10557*/
10558WDI_Status
10559WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010560(
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 WDI_ControlBlockType* pWDICtx,
10562 WDI_EventInfoType* pEventData
10563)
10564{
10565 WDI_AddTSReqParamsType* pwdiAddTSParams;
10566 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010567 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 wpt_uint16 usDataOffset = 0;
10571 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010572 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 wpt_macAddr macBSSID;
10574 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010575
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10577
10578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010580 -------------------------------------------------------------------------*/
10581 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10582 ( NULL == pEventData->pCBfnc ))
10583 {
10584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010588 }
10589
10590 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10591 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10592 /*-------------------------------------------------------------------------
10593 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 -------------------------------------------------------------------------*/
10596 wpalMutexAcquire(&pWDICtx->wptMutex);
10597
10598 /*------------------------------------------------------------------------
10599 Find the BSS for which the request is made and identify WDI session
10600 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10602 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 &macBSSID))
10604 {
10605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010606 "This station does not exist in the WDI Station Table %d",
10607 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010608 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 }
10611
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10613 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10616 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10617 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010618
10619 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010621 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010622
Jeff Johnson295189b2012-06-20 16:38:30 -070010623 /*------------------------------------------------------------------------
10624 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010625 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010626 ------------------------------------------------------------------------*/
10627 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10628 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10630 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10631 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010632
Jeff Johnsone7245742012-09-05 17:12:55 -070010633 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010634 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 }
10637
10638 wpalMutexRelease(&pWDICtx->wptMutex);
10639 /*-----------------------------------------------------------------------
10640 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010641 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010642 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10644 sizeof(halAddTsParams),
10645 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 &usSendSize))||
10647 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10648 {
10649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010650 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010651 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 }
10655
10656 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10657 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10658
10659 //TSPEC IE
10660 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10661 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010667 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010668 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010669 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010672 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010674 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010675 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010679 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010687 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010691 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10692
10693 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010694 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010695 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010696 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010697 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010698 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010699 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010700 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010701 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010706 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010707 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10708
10709 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10714
Jeff Johnsone7245742012-09-05 17:12:55 -070010715 wpalMemoryCopy( pSendBuffer+usDataOffset,
10716 &halAddTsParams,
10717 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010718
10719 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010721
10722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010725 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010728}/*WDI_ProcessAddTSpecReq*/
10729
10730
10731/**
10732 @brief Process Del TSpec Request function (called when Main FSM
10733 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010734
10735 @param pWDICtx: pointer to the WLAN DAL context
10736 pEventData: pointer to the event information structure
10737
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 @see
10739 @return Result of the function call
10740*/
10741WDI_Status
10742WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010743(
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 WDI_ControlBlockType* pWDICtx,
10745 WDI_EventInfoType* pEventData
10746)
10747{
10748 WDI_DelTSReqParamsType* pwdiDelTSParams;
10749 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010750 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010751 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 wpt_uint16 usDataOffset = 0;
10754 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10757
10758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010760 -------------------------------------------------------------------------*/
10761 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10762 ( NULL == pEventData->pCBfnc ))
10763 {
10764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 }
10769
10770 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10771 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10772
10773 /*-------------------------------------------------------------------------
10774 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010776 -------------------------------------------------------------------------*/
10777 wpalMutexAcquire(&pWDICtx->wptMutex);
10778
10779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10783 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10784 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010785
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10789 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10790 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10791
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010793 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010794 }
10795
10796 /*------------------------------------------------------------------------
10797 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 ------------------------------------------------------------------------*/
10800 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10801 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10803 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10804 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010805
Jeff Johnsone7245742012-09-05 17:12:55 -070010806 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010807 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 }
10810
10811
10812 wpalMutexRelease(&pWDICtx->wptMutex);
10813 /*-----------------------------------------------------------------------
10814 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10819 &pSendBuffer, &usDataOffset, &usSendSize))||
10820 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10821 {
10822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010823 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010824 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010827 }
10828
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 wpalMemoryCopy( pSendBuffer+usDataOffset,
10830 &pwdiDelTSParams->wdiDelTSInfo,
10831 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010832
10833 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010835
10836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10840 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010841}/*WDI_ProcessDelTSpecReq*/
10842
10843/**
10844 @brief Process Update EDCA Params Request function (called when
10845 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010846
10847 @param pWDICtx: pointer to the WLAN DAL context
10848 pEventData: pointer to the event information structure
10849
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 @see
10851 @return Result of the function call
10852*/
10853WDI_Status
10854WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010855(
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 WDI_ControlBlockType* pWDICtx,
10857 WDI_EventInfoType* pEventData
10858)
10859{
10860 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10861 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010863 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010865 wpt_uint16 usDataOffset = 0;
10866 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010867 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10869
10870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 -------------------------------------------------------------------------*/
10873 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10874 ( NULL == pEventData->pCBfnc ))
10875 {
10876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010880 }
10881
10882 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10883 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10884 /*-------------------------------------------------------------------------
10885 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010886 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 -------------------------------------------------------------------------*/
10888 wpalMutexAcquire(&pWDICtx->wptMutex);
10889
10890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010892 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10894 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10895 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010896
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 {
10899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010900 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10901 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010902
10903 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 }
10906
10907 /*------------------------------------------------------------------------
10908 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010909 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010910 ------------------------------------------------------------------------*/
10911 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10912 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10914 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10915 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010916
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010919 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010920 }
10921
10922
10923 wpalMutexRelease(&pWDICtx->wptMutex);
10924 /*-----------------------------------------------------------------------
10925 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010927 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10930 &pSendBuffer, &usDataOffset, &usSendSize))||
10931 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10932 {
10933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010934 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010935 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 }
10939
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 wpalMemoryCopy( pSendBuffer+usDataOffset,
10941 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10942 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010943
10944 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010945 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010946
10947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010948 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10951 wdiUpdateEDCARspCb, pEventData->pUserData,
10952 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010953}/*WDI_ProcessUpdateEDCAParamsReq*/
10954
10955/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010956 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010957 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010958
10959 @param pWDICtx: pointer to the WLAN DAL context
10960 pEventData: pointer to the event information structure
10961
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 @see
10963 @return Result of the function call
10964*/
10965WDI_Status
10966WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010967(
Jeff Johnson295189b2012-06-20 16:38:30 -070010968 WDI_ControlBlockType* pWDICtx,
10969 WDI_EventInfoType* pEventData
10970)
10971{
10972 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10973 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010974 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010976 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010977 wpt_uint16 usDataOffset = 0;
10978 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010979 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 wpt_macAddr macBSSID;
10981
10982 tAddBASessionReqMsg halAddBASessionReq;
10983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10984
10985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 -------------------------------------------------------------------------*/
10988 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10989 ( NULL == pEventData->pCBfnc ))
10990 {
10991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 }
10996
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010998 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010999 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011000 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
11001 /*-------------------------------------------------------------------------
11002 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011003 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011004 -------------------------------------------------------------------------*/
11005 wpalMutexAcquire(&pWDICtx->wptMutex);
11006
11007 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011010 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11011 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011012 &macBSSID))
11013 {
11014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011015 "This station does not exist in the WDI Station Table %d",
11016 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011017 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 }
11020
11021
Jeff Johnsone7245742012-09-05 17:12:55 -070011022 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011023
Jeff Johnsone7245742012-09-05 17:12:55 -070011024 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011025 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11027 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11028 __func__, MAC_ADDR_ARRAY(macBSSID));
11029
Jeff Johnson295189b2012-06-20 16:38:30 -070011030 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 }
11033
11034 /*------------------------------------------------------------------------
11035 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011036 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011037 ------------------------------------------------------------------------*/
11038 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11039 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11041 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11042 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011043
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011047 }
11048
11049
11050 wpalMutexRelease(&pWDICtx->wptMutex);
11051 /*-----------------------------------------------------------------------
11052 Get message buffer
11053 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11055 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011056 sizeof(halAddBASessionReq.addBASessionParams),
11057 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011058 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011059 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
11060 {
11061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011062 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
11064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011066 }
11067
11068 halAddBASessionReq.addBASessionParams.staIdx =
11069 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
11070 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
11071 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
11072 WDI_MAC_ADDR_LEN);
11073 halAddBASessionReq.addBASessionParams.baTID =
11074 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
11075 halAddBASessionReq.addBASessionParams.baPolicy =
11076 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
11077 halAddBASessionReq.addBASessionParams.baBufferSize =
11078 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
11079 halAddBASessionReq.addBASessionParams.baTimeout =
11080 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
11081 halAddBASessionReq.addBASessionParams.baSSN =
11082 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
11083 halAddBASessionReq.addBASessionParams.baDirection =
11084 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
11085
Jeff Johnsone7245742012-09-05 17:12:55 -070011086 wpalMemoryCopy( pSendBuffer+usDataOffset,
11087 &halAddBASessionReq.addBASessionParams,
11088 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011089
11090 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011091 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011092
11093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011094 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011095 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11097 wdiAddBASessionRspCb, pEventData->pUserData,
11098 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011099}/*WDI_ProcessAddBASessionReq*/
11100
11101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011102 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011103 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011104
11105 @param pWDICtx: pointer to the WLAN DAL context
11106 pEventData: pointer to the event information structure
11107
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 @see
11109 @return Result of the function call
11110*/
11111WDI_Status
11112WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011113(
Jeff Johnson295189b2012-06-20 16:38:30 -070011114 WDI_ControlBlockType* pWDICtx,
11115 WDI_EventInfoType* pEventData
11116)
11117{
11118 WDI_DelBAReqParamsType* pwdiDelBAParams;
11119 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011122 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011123 wpt_uint16 usDataOffset = 0;
11124 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011125 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011126 wpt_macAddr macBSSID;
11127 tDelBAParams halDelBAparam;
11128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11129
11130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011132 -------------------------------------------------------------------------*/
11133 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11134 ( NULL == pEventData->pCBfnc ))
11135 {
11136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011140 }
11141
11142 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
11143 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
11144 /*-------------------------------------------------------------------------
11145 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 -------------------------------------------------------------------------*/
11148 wpalMutexAcquire(&pWDICtx->wptMutex);
11149
11150 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11154 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011155 &macBSSID))
11156 {
11157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011158 "This station does not exist in the WDI Station Table %d",
11159 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011160 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 }
11163
Jeff Johnsone7245742012-09-05 17:12:55 -070011164 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011165
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11169 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11170 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011171
11172 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011173 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011174 }
11175
11176 /*------------------------------------------------------------------------
11177 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011178 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011179 ------------------------------------------------------------------------*/
11180 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11181 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11183 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11184 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011185
Jeff Johnsone7245742012-09-05 17:12:55 -070011186 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011187 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011189 }
11190
11191 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011192 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011193 sizeof(halDelBAparam),
11194 &pSendBuffer, &usDataOffset, &usSendSize))||
11195 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
11196 {
11197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011198 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011199 pEventData, pwdiDelBAParams, wdiDelBARspCb);
11200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011202 }
11203
11204 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
11205 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
11206 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
11207
Jeff Johnsone7245742012-09-05 17:12:55 -070011208 wpalMemoryCopy( pSendBuffer+usDataOffset,
11209 &halDelBAparam,
11210 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011211
11212 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011213 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011214
11215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011216 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011217 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011218 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11219 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011220}/*WDI_ProcessDelBAReq*/
11221
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011222#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070011223
11224WDI_Status
11225WDI_ProcessTSMStatsReq
11226(
11227 WDI_ControlBlockType* pWDICtx,
11228 WDI_EventInfoType* pEventData
11229)
11230{
11231 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11232 WDI_TsmRspCb wdiTSMRspCb;
11233 wpt_uint8 ucCurrentBSSSesIdx = 0;
11234 WDI_BSSSessionType* pBSSSes = NULL;
11235 wpt_uint8* pSendBuffer = NULL;
11236 wpt_uint16 usDataOffset = 0;
11237 wpt_uint16 usSendSize = 0;
11238 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11239 tTsmStatsParams halTsmStatsReqParams = {0};
11240
11241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11242
11243 /*-------------------------------------------------------------------------
11244 Sanity check
11245 -------------------------------------------------------------------------*/
11246 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11247 ( NULL == pEventData->pCBfnc ))
11248 {
11249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011251 WDI_ASSERT(0);
11252 return WDI_STATUS_E_FAILURE;
11253 }
11254
11255 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11256 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11257 /*-------------------------------------------------------------------------
11258 Check to see if we are in the middle of an association, if so queue, if
11259 not it means it is free to process request
11260 -------------------------------------------------------------------------*/
11261 wpalMutexAcquire(&pWDICtx->wptMutex);
11262
11263 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11264 if ( NULL == pBSSSes )
11265 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11267 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11268 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011269
11270 wpalMutexRelease(&pWDICtx->wptMutex);
11271 return WDI_STATUS_E_NOT_ALLOWED;
11272 }
11273
11274 /*------------------------------------------------------------------------
11275 Check if this BSS is being currently processed or queued,
11276 if queued - queue the new request as well
11277 ------------------------------------------------------------------------*/
11278 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11279 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011281 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011282 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011283
11284 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11285 wpalMutexRelease(&pWDICtx->wptMutex);
11286 return wdiStatus;
11287 }
11288
11289 wpalMutexRelease(&pWDICtx->wptMutex);
11290 /*-----------------------------------------------------------------------
11291 Get message buffer
11292 ! TO DO : proper conversion into the HAL Message Request Format
11293 -----------------------------------------------------------------------*/
11294 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11295 sizeof(halTsmStatsReqParams),
11296 &pSendBuffer, &usDataOffset, &usSendSize))||
11297 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11298 {
11299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011300 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011301 pEventData, pwdiTSMParams, wdiTSMRspCb);
11302 WDI_ASSERT(0);
11303 return WDI_STATUS_E_FAILURE;
11304 }
11305
11306 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11307 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11308 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11309 WDI_MAC_ADDR_LEN);
11310 wpalMemoryCopy( pSendBuffer+usDataOffset,
11311 &halTsmStatsReqParams,
11312 sizeof(halTsmStatsReqParams));
11313
11314 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11315 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11316
11317 /*-------------------------------------------------------------------------
11318 Send TSM Stats Request to HAL
11319 -------------------------------------------------------------------------*/
11320 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11321 wdiTSMRspCb, pEventData->pUserData,
11322 WDI_TSM_STATS_RESP);
11323}/*WDI_ProcessTSMStatsReq*/
11324
11325#endif
11326
11327
11328/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011329 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011330 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011331
11332 @param pWDICtx: pointer to the WLAN DAL context
11333 pEventData: pointer to the event information structure
11334
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 @see
11336 @return Result of the function call
11337*/
11338WDI_Status
11339WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011340(
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 WDI_ControlBlockType* pWDICtx,
11342 WDI_EventInfoType* pEventData
11343)
11344{
11345 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11346 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011347 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011348 wpt_uint16 usDataOffset = 0;
11349 wpt_uint16 usSendSize = 0;
11350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11351
11352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 -------------------------------------------------------------------------*/
11355 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11356 ( NULL == pEventData->pCBfnc ))
11357 {
11358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011362 }
11363
11364 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11365 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11366 /*-----------------------------------------------------------------------
11367 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011368 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011370 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11372 &pSendBuffer, &usDataOffset, &usSendSize))||
11373 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11374 {
11375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011376 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011377 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 }
11381
Jeff Johnsone7245742012-09-05 17:12:55 -070011382 wpalMemoryCopy( pSendBuffer+usDataOffset,
11383 &pwdiFlushAcParams->wdiFlushAcInfo,
11384 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011385
11386 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011387 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011388
11389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011390 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11393 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011394}/*WDI_ProcessFlushAcReq*/
11395
11396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011399
11400 @param pWDICtx: pointer to the WLAN DAL context
11401 pEventData: pointer to the event information structure
11402
Jeff Johnson295189b2012-06-20 16:38:30 -070011403 @see
11404 @return Result of the function call
11405*/
11406WDI_Status
11407WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011408(
Jeff Johnson295189b2012-06-20 16:38:30 -070011409 WDI_ControlBlockType* pWDICtx,
11410 WDI_EventInfoType* pEventData
11411)
11412{
11413 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11414 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011416 wpt_uint16 usDataOffset = 0;
11417 wpt_uint16 usSendSize = 0;
11418
11419 tBtAmpEventMsg haltBtAmpEventMsg;
11420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11421
11422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 -------------------------------------------------------------------------*/
11425 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11426 ( NULL == pEventData->pCBfnc ))
11427 {
11428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011432 }
11433
11434 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11435 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11436 /*-----------------------------------------------------------------------
11437 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011438 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011439 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011440 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011441 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11442 &pSendBuffer, &usDataOffset, &usSendSize))||
11443 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11444 {
11445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011446 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 }
11451
Jeff Johnsone7245742012-09-05 17:12:55 -070011452 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011454 wpalMemoryCopy( pSendBuffer+usDataOffset,
11455 &haltBtAmpEventMsg.btAmpEventParams,
11456 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011457
11458 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011459 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011460
11461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011462 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011463 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11465 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011466}/*WDI_ProcessBtAmpEventReq*/
11467
11468/**
11469 @brief Process Add STA self Request function (called when Main FSM
11470 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011471
11472 @param pWDICtx: pointer to the WLAN DAL context
11473 pEventData: pointer to the event information structure
11474
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 @see
11476 @return Result of the function call
11477*/
11478WDI_Status
11479WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011480(
Jeff Johnson295189b2012-06-20 16:38:30 -070011481 WDI_ControlBlockType* pWDICtx,
11482 WDI_EventInfoType* pEventData
11483)
11484{
11485 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11486 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 wpt_uint16 usDataOffset = 0;
11489 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011490 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11492
11493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011495 -------------------------------------------------------------------------*/
11496 if (( NULL == pEventData ) ||
11497 ( NULL == pEventData->pEventData) ||
11498 ( NULL == pEventData->pCBfnc))
11499 {
11500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 }
11505
Jeff Johnsone7245742012-09-05 17:12:55 -070011506 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11510 /*-----------------------------------------------------------------------
11511 Get message buffer
11512 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11514 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011515 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011517 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011518 {
11519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011520 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 }
11525
11526 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011527 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11529
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011531 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11532 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11533 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11534 {
11535 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11536 }
11537 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11538 VOS_P2P_CLIENT_MODE) ||
11539 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11540 VOS_P2P_DEVICE))
11541 {
11542 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11543 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011544 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011545 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011546
11547 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011549
11550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011553 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11554 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11555 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011556}/*WDI_ProcessAddSTASelfReq*/
11557
11558
11559
11560/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011563
11564 @param pWDICtx: pointer to the WLAN DAL context
11565 pEventData: pointer to the event information structure
11566
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 @see
11568 @return Result of the function call
11569*/
11570WDI_Status
11571WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011572(
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 WDI_ControlBlockType* pWDICtx,
11574 WDI_EventInfoType* pEventData
11575)
11576{
11577 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11578 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 wpt_uint16 usDataOffset = 0;
11581 wpt_uint16 usSendSize = 0;
11582 tDelStaSelfParams halSetDelSelfSTAParams;
11583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11584
11585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 -------------------------------------------------------------------------*/
11588 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11589 ( NULL == pEventData->pCBfnc ))
11590 {
11591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 }
11596
Jeff Johnsone7245742012-09-05 17:12:55 -070011597 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011598 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11599 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11600
11601 /*-----------------------------------------------------------------------
11602 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011603 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011604 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11607 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011609 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11610 {
11611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011612 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 }
11617
Jeff Johnsone7245742012-09-05 17:12:55 -070011618 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11620
Jeff Johnsone7245742012-09-05 17:12:55 -070011621 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11622 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011623
11624 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011626
11627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011628 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011629 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11631 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011632 WDI_DEL_STA_SELF_RESP);
11633
11634}
11635
Jeff Johnsone7245742012-09-05 17:12:55 -070011636#ifdef FEATURE_OEM_DATA_SUPPORT
11637/**
11638 @brief Process Start Oem Data Request function (called when Main
11639 FSM allows it)
11640
11641 @param pWDICtx: pointer to the WLAN DAL context
11642 pEventData: pointer to the event information structure
11643
11644 @see
11645 @return Result of the function call
11646*/
11647WDI_Status
11648WDI_ProcessStartOemDataReq
11649(
11650 WDI_ControlBlockType* pWDICtx,
11651 WDI_EventInfoType* pEventData
11652)
11653{
11654 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11655 WDI_oemDataRspCb wdiOemDataRspCb;
11656 wpt_uint8* pSendBuffer = NULL;
11657 wpt_uint16 usDataOffset = 0;
11658 wpt_uint16 usSendSize = 0;
11659 wpt_uint16 reqLen;
11660 tStartOemDataReqParams* halStartOemDataReqParams;
11661
11662 /*-------------------------------------------------------------------------
11663 Sanity check
11664 -------------------------------------------------------------------------*/
11665 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11666 ( NULL == pEventData->pCBfnc ))
11667 {
11668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011669 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011670 WDI_ASSERT(0);
11671 return WDI_STATUS_E_FAILURE;
11672 }
11673
11674 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11675 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11676
11677 /*-----------------------------------------------------------------------
11678 Get message buffer
11679 -----------------------------------------------------------------------*/
11680
11681 reqLen = sizeof(tStartOemDataReqParams);
11682
11683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11684 WDI_START_OEM_DATA_REQ, reqLen,
11685 &pSendBuffer, &usDataOffset, &usSendSize))||
11686 (usSendSize < (usDataOffset + reqLen)))
11687 {
11688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011689 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011690 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11691 WDI_ASSERT(0);
11692 return WDI_STATUS_E_FAILURE;
11693 }
11694
11695 //copying WDI OEM DATA REQ PARAMS to shared memory
11696 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11697
11698 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11699 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11700
11701 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11702 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11703
11704 /*-------------------------------------------------------------------------
11705 Send Start Request to HAL
11706 -------------------------------------------------------------------------*/
11707 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11708 wdiOemDataRspCb, pEventData->pUserData,
11709 WDI_START_OEM_DATA_RESP);
11710}/*WDI_ProcessStartOemDataReq*/
11711#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011712
11713/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011714 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011715 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011716
11717 @param pWDICtx: pointer to the WLAN DAL context
11718 pEventData: pointer to the event information structure
11719
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 @see
11721 @return Result of the function call
11722*/
11723WDI_Status
11724WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011725(
Jeff Johnson295189b2012-06-20 16:38:30 -070011726 WDI_ControlBlockType* pWDICtx,
11727 WDI_EventInfoType* pEventData
11728)
11729{
11730 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11731 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011732 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 wpt_uint16 usDataOffset = 0;
11734 wpt_uint16 usSendSize = 0;
11735 tHalWlanHostResumeReqParam halResumeReqParams;
11736
11737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11738
11739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011741 -------------------------------------------------------------------------*/
11742 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11743 ( NULL == pEventData->pCBfnc ))
11744 {
11745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011746 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 }
11750
11751 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11752 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11753
11754 /*-----------------------------------------------------------------------
11755 Get message buffer
11756 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11759 &pSendBuffer, &usDataOffset, &usSendSize))||
11760 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11761 {
11762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011763 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011764 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011767 }
11768
Jeff Johnsone7245742012-09-05 17:12:55 -070011769 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011770 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011771
11772 wpalMemoryCopy( pSendBuffer+usDataOffset,
11773 &halResumeReqParams,
11774 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011775
11776 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011777 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011778
11779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011780 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011782 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11783 wdiHostResumeRspCb, pEventData->pUserData,
11784 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011785}/*WDI_ProcessHostResumeReq*/
11786
11787/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011788 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011789 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011790
11791 @param pWDICtx: pointer to the WLAN DAL context
11792 pEventData: pointer to the event information structure
11793
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 @see
11795 @return Result of the function call
11796*/
11797WDI_Status
11798WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011799(
Jeff Johnson295189b2012-06-20 16:38:30 -070011800 WDI_ControlBlockType* pWDICtx,
11801 WDI_EventInfoType* pEventData
11802)
11803{
11804 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11805 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 wpt_uint16 usDataOffset = 0;
11808 wpt_uint16 usSendSize = 0;
11809 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11811
11812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 -------------------------------------------------------------------------*/
11815 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11816 ( NULL == pEventData->pCBfnc ))
11817 {
11818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011819 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 }
11823
11824 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11825 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011826
Jeff Johnson295189b2012-06-20 16:38:30 -070011827 /*-----------------------------------------------------------------------
11828 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011829 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011830 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011831 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011832 sizeof(halTxPerTrackingReqParam),
11833 &pSendBuffer, &usDataOffset, &usSendSize))||
11834 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11835 {
11836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011837 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011838 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011841 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011842
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11844 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11845 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11846 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011847
11848 wpalMemoryCopy( pSendBuffer+usDataOffset,
11849 &halTxPerTrackingReqParam,
11850 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011851
11852 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011853 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011854
11855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011856 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011857 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11859 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011860}/*WDI_ProcessSetTxPerTrackingReq*/
11861
11862/*=========================================================================
11863 Indications
11864=========================================================================*/
11865
11866/**
11867 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011868
11869 @param pWDICtx: pointer to the WLAN DAL context
11870 pEventData: pointer to the event information structure
11871
Jeff Johnson295189b2012-06-20 16:38:30 -070011872 @see
11873 @return Result of the function call
11874*/
11875WDI_Status
11876WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011877(
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 WDI_ControlBlockType* pWDICtx,
11879 WDI_EventInfoType* pEventData
11880)
11881{
11882 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011883 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 wpt_uint16 usDataOffset = 0;
11885 wpt_uint16 usSendSize = 0;
11886 WDI_Status wdiStatus;
11887 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11889
11890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 -------------------------------------------------------------------------*/
11893 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11894 {
11895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011896 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011899 }
11900
11901 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11902
11903 /*-----------------------------------------------------------------------
11904 Get message buffer
11905 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011906 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11907 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011908 sizeof(halWlanSuspendIndparams),
11909 &pSendBuffer, &usDataOffset, &usSendSize))||
11910 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11911 {
11912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11913 "Unable to get send buffer in Suspend Ind ");
11914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011916 }
11917
11918 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11919 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11920
Jeff Johnsone7245742012-09-05 17:12:55 -070011921 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011922 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011923
Jeff Johnsone7245742012-09-05 17:12:55 -070011924 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11925 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011926
11927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 -------------------------------------------------------------------------*/
11930 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011931 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011932
Jeff Johnsone7245742012-09-05 17:12:55 -070011933 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011934 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11935}/*WDI_ProcessHostSuspendInd*/
11936
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011937
11938
11939/**
11940 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11941
11942 @param pWDICtx: pointer to the WLAN DAL context
11943 pEventData: pointer to the event information structure
11944
11945 @see
11946 @return Result of the function call
11947*/
11948WDI_Status
11949WDI_ProcessTrafficStatsInd
11950(
11951 WDI_ControlBlockType* pWDICtx,
11952 WDI_EventInfoType* pEventData
11953)
11954{
11955 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11956 wpt_uint8* pSendBuffer = NULL;
11957 wpt_uint16 usDataOffset = 0;
11958 wpt_uint16 usSendSize = 0;
11959 WDI_Status wdiStatus;
11960 tStatsClassBIndParams* pStatsClassBIndParams;
11961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11962
11963 /*-------------------------------------------------------------------------
11964 Sanity check
11965 -------------------------------------------------------------------------*/
11966 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11967 {
11968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11969 "%s: Invalid parameters in Traffic Stats ind",__func__);
11970 WDI_ASSERT(0);
11971 return WDI_STATUS_E_FAILURE;
11972 }
11973
11974 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11975
11976 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11977 {
11978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11979 "%s: Invalid parameters in Traffic Stats ind",__func__);
11980 WDI_ASSERT(0);
11981 return WDI_STATUS_E_FAILURE;
11982 }
11983
11984 /*-----------------------------------------------------------------------
11985 Get message buffer
11986 -----------------------------------------------------------------------*/
11987 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11988 WDI_TRAFFIC_STATS_IND,
11989 sizeof(tStatsClassBIndParams),
11990 &pSendBuffer, &usDataOffset, &usSendSize))||
11991 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11992 {
11993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11994 "Unable to get send buffer in Traffic Stats Ind ");
11995 WDI_ASSERT(0);
11996 return WDI_STATUS_E_FAILURE;
11997 }
11998
11999 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
12000
12001 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
12002
12003 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
12004 pTrafficStatsIndParams->pTrafficStats,
12005 pTrafficStatsIndParams->length);
12006
12007 /*-------------------------------------------------------------------------
12008 Send Suspend Request to HAL
12009 -------------------------------------------------------------------------*/
12010 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
12011 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
12012
12013 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12014 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12015}/*WDI_ProcessTrafficStatsInd*/
12016
Chet Lanctot186b5732013-03-18 10:26:30 -070012017#ifdef WLAN_FEATURE_11W
12018/**
12019 @brief Process Exclude Unencrypted Indications function (called
12020 when Main FSM allows it)
12021
12022 @param pWDICtx: pointer to the WLAN DAL context
12023 pEventData: pointer to the event information structure
12024
12025 @see
12026 @return Result of the function call
12027*/
12028WDI_Status
12029WDI_ProcessExcludeUnencryptInd
12030(
12031 WDI_ControlBlockType* pWDICtx,
12032 WDI_EventInfoType* pEventData
12033)
12034{
12035 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
12036 wpt_uint8* pSendBuffer = NULL;
12037 wpt_uint16 usDataOffset = 0;
12038 wpt_uint16 usSendSize = 0;
12039 WDI_Status wdiStatus;
12040 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
12041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12042
12043 /*-------------------------------------------------------------------------
12044 Sanity check
12045 -------------------------------------------------------------------------*/
12046 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12047 {
12048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12049 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
12050 WDI_ASSERT(0);
12051 return WDI_STATUS_E_FAILURE;
12052 }
12053
12054 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
12055
12056 /*-----------------------------------------------------------------------
12057 Get message buffer
12058 -----------------------------------------------------------------------*/
12059 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12060 WDI_EXCLUDE_UNENCRYPTED_IND,
12061 sizeof(tHalWlanExcludeUnEncryptedIndParam),
12062 &pSendBuffer, &usDataOffset, &usSendSize))||
12063 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
12064 {
12065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12066 "Unable to get send buffer in Exclude Unencrypted Ind ");
12067 WDI_ASSERT(0);
12068 return WDI_STATUS_E_FAILURE;
12069 }
12070
12071 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
12072
12073 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
12074
12075 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
12076 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
12077
12078 /*-------------------------------------------------------------------------
12079 Send Suspend Request to HAL
12080 -------------------------------------------------------------------------*/
12081 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
12082 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
12083
12084 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12085 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12086}/*WDI_ProcessExcludeUnencryptInd*/
12087#endif
12088
Yue Mab9c86f42013-08-14 15:59:08 -070012089/**
12090 @brief Process Add Periodic Tx Pattern Indication function (called when
12091 Main FSM allows it)
12092
12093 @param pWDICtx: pointer to the WLAN DAL context
12094 pEventData: pointer to the event information structure
12095
12096 @see
12097 @return Result of the function call
12098*/
12099WDI_Status
12100WDI_ProcessAddPeriodicTxPtrnInd
12101(
12102 WDI_ControlBlockType* pWDICtx,
12103 WDI_EventInfoType* pEventData
12104)
12105{
12106 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
12107 wpt_uint8* pSendBuffer = NULL;
12108 wpt_uint16 usDataOffset = 0;
12109 wpt_uint16 usSendSize = 0;
12110 WDI_Status wdiStatus;
12111 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
12112 wpt_uint8 selfStaIdx = 0;
12113
12114 /*-------------------------------------------------------------------------
12115 Sanity check
12116 -------------------------------------------------------------------------*/
12117 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12118 {
12119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12120 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12121 WDI_ASSERT(0);
12122 return WDI_STATUS_E_FAILURE;
12123 }
12124
12125 pAddPeriodicTxPtrnParams =
12126 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12127
12128 /*------------------------------------------------------------------------
12129 Get message buffer
12130 ------------------------------------------------------------------------*/
12131 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12132 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12133 &pSendBuffer, &usDataOffset, &usSendSize))||
12134 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12135 {
12136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12137 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12138 __func__);
12139 WDI_ASSERT(0);
12140 return WDI_STATUS_E_FAILURE;
12141 }
12142
12143 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12144
12145 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12146 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12147 &selfStaIdx))
12148 {
12149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12150 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012151 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012152
12153 return WDI_STATUS_E_FAILURE;
12154 }
12155
12156 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12157 halAddPeriodicTxPtrn->ucPtrnId =
12158 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12159 halAddPeriodicTxPtrn->usPtrnSize =
12160 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12161 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12162 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12163
12164 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12165 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12166 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12167
12168 /*-------------------------------------------------------------------------
12169 Send Indication to HAL
12170 -------------------------------------------------------------------------*/
12171 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12172 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12173
12174 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12175
12176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12177 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12178
12179 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12180} /* WDI_ProcessAddPeriodicTxPtrnInd */
12181
12182/**
12183 @brief Process Delete Periodic Tx Pattern Indication function (called when
12184 Main FSM allows it)
12185
12186 @param pWDICtx: pointer to the WLAN DAL context
12187 pEventData: pointer to the event information structure
12188
12189 @see
12190 @return Result of the function call
12191*/
12192WDI_Status
12193WDI_ProcessDelPeriodicTxPtrnInd
12194(
12195 WDI_ControlBlockType* pWDICtx,
12196 WDI_EventInfoType* pEventData
12197)
12198{
12199 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12200 wpt_uint8* pSendBuffer = NULL;
12201 wpt_uint16 usDataOffset = 0;
12202 wpt_uint16 usSendSize = 0;
12203 WDI_Status wdiStatus;
12204 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12205 wpt_uint8 selfStaIdx = 0;
12206
12207 /*-------------------------------------------------------------------------
12208 Sanity check
12209 -------------------------------------------------------------------------*/
12210 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12211 {
12212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12213 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12214 WDI_ASSERT(0);
12215 return WDI_STATUS_E_FAILURE;
12216 }
12217
12218 pDelPeriodicTxPtrnParams =
12219 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12220
12221 /*------------------------------------------------------------------------
12222 Get message buffer
12223 ------------------------------------------------------------------------*/
12224 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12225 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12226 &pSendBuffer, &usDataOffset, &usSendSize))||
12227 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12228 {
12229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12230 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12231 __func__);
12232 WDI_ASSERT(0);
12233 return WDI_STATUS_E_FAILURE;
12234 }
12235
12236 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12237
12238 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12239 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12240 &selfStaIdx))
12241 {
12242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12243 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012244 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012245
12246 return WDI_STATUS_E_FAILURE;
12247 }
12248
12249 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12250 halDelPeriodicTxPtrn->uPatternIdBitmap =
12251 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12252
12253 /*-------------------------------------------------------------------------
12254 Send Indication to HAL
12255 -------------------------------------------------------------------------*/
12256 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12257 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12258
12259 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12260
12261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12262 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12263
12264 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12265} /* WDI_ProcessDelPeriodicTxPtrnInd */
12266
Jeff Johnson295189b2012-06-20 16:38:30 -070012267/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012268 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012269==========================================================================*/
12270/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012271 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012272 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012273
12274 @param pWDICtx: pointer to the WLAN DAL context
12275 pEventData: pointer to the event information structure
12276
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 @see
12278 @return Result of the function call
12279*/
12280WDI_Status
12281WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012282(
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 WDI_ControlBlockType* pWDICtx,
12284 WDI_EventInfoType* pEventData
12285)
12286{
12287 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12288 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012289 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 wpt_uint16 usDataOffset = 0;
12291 wpt_uint16 usSendSize = 0;
12292 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12294
12295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 -------------------------------------------------------------------------*/
12298 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12299 ( NULL == pEventData->pCBfnc ))
12300 {
12301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012302 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012305 }
12306
12307 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12308 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12309 /*-----------------------------------------------------------------------
12310 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 sizeof(halSwitchChannelReq.switchChannelParams),
12315 &pSendBuffer, &usDataOffset, &usSendSize))||
12316 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12317 {
12318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012319 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 }
12324
Jeff Johnsone7245742012-09-05 17:12:55 -070012325 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012327#ifndef WLAN_FEATURE_VOWIFI
12328 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12330#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12333
12334#ifdef WLAN_FEATURE_VOWIFI
12335 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12338 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12339 WDI_MAC_ADDR_LEN);
12340 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12341 pwdiSwitchChParams->wdiChInfo.macBSSId,
12342 WDI_MAC_ADDR_LEN);
12343#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012344 wpalMemoryCopy( pSendBuffer+usDataOffset,
12345 &halSwitchChannelReq.switchChannelParams,
12346 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012347
12348 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012350
12351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012352 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012353 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12355 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012356}/*WDI_ProcessChannelSwitchReq*/
12357
12358/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012359 @brief Process Channel Switch Request function (called when
12360 Main FSM allows it)
12361
12362 @param pWDICtx: pointer to the WLAN DAL context
12363 pEventData: pointer to the event information structure
12364
12365 @see
12366 @return Result of the function call
12367*/
12368WDI_Status WDI_ProcessChannelSwitchReq_V1
12369(
12370 WDI_ControlBlockType* pWDICtx,
12371 WDI_EventInfoType* pEventData
12372)
12373{
12374 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12375 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12376 wpt_uint8* pSendBuffer = NULL;
12377 wpt_uint16 usDataOffset = 0;
12378 wpt_uint16 usSendSize = 0;
12379 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12381
12382 /*-------------------------------------------------------------------------
12383 Sanity check
12384 -------------------------------------------------------------------------*/
12385 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12386 ( NULL == pEventData->pCBfnc ))
12387 {
12388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12389 "%s: Invalid parameters", __func__);
12390 WDI_ASSERT(0);
12391 return WDI_STATUS_E_FAILURE;
12392 }
12393
12394 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12395 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12396 /*-----------------------------------------------------------------------
12397 Get message buffer
12398 ! TO DO : proper conversion into the HAL Message Request Format
12399 -----------------------------------------------------------------------*/
12400 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12401 WDI_CH_SWITCH_REQ_V1,
12402 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12403 &pSendBuffer, &usDataOffset, &usSendSize))||
12404 ( usSendSize < (usDataOffset +
12405 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12406 {
12407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12408 "Unable to get send buffer in channel switch req %p %p %p",
12409 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12410 WDI_ASSERT(0);
12411 return WDI_STATUS_E_FAILURE;
12412 }
12413
12414 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12415 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12416
12417 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12418 pwdiSwitchChParams->wdiChInfo.ucChannel;
12419#ifndef WLAN_FEATURE_VOWIFI
12420 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12421 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12422#endif
12423 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12424 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12425
12426#ifdef WLAN_FEATURE_VOWIFI
12427 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12428 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12429 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12430 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12431 WDI_MAC_ADDR_LEN);
12432 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12433 pwdiSwitchChParams->wdiChInfo.macBSSId,
12434 WDI_MAC_ADDR_LEN);
12435#endif
12436 wpalMemoryCopy( pSendBuffer+usDataOffset,
12437 &halSwitchChannelReq.switchChannelParams_V1,
12438 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12439
12440 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12441 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12442
12443 /*-------------------------------------------------------------------------
12444 Send Switch Channel Request to HAL
12445 -------------------------------------------------------------------------*/
12446 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12447 wdiSwitchChRspCb, pEventData->pUserData,
12448 WDI_CH_SWITCH_RESP_V1);
12449}/*WDI_ProcessChannelSwitchReq_V1*/
12450
12451/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012452 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012454
12455 @param pWDICtx: pointer to the WLAN DAL context
12456 pEventData: pointer to the event information structure
12457
Jeff Johnson295189b2012-06-20 16:38:30 -070012458 @see
12459 @return Result of the function call
12460*/
12461WDI_Status
12462WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012463(
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 WDI_ControlBlockType* pWDICtx,
12465 WDI_EventInfoType* pEventData
12466)
12467{
12468 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12469 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012470 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012472 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 wpt_uint16 usDataOffset = 0;
12474 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012475 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012476
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 tConfigStaReqMsg halConfigStaReqMsg;
12478 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12480
12481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 -------------------------------------------------------------------------*/
12484 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12485 ( NULL == pEventData->pCBfnc ))
12486 {
12487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 }
12492
Abhishek Singh6927fa02014-06-27 17:19:55 +053012493 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12495 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12496 /*-------------------------------------------------------------------------
12497 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012499 -------------------------------------------------------------------------*/
12500 wpalMutexAcquire(&pWDICtx->wptMutex);
12501
12502 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12506 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12507 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012508
Jeff Johnsone7245742012-09-05 17:12:55 -070012509 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12512 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12513 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012514
12515 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 }
12518
12519 /*------------------------------------------------------------------------
12520 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012521 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 ------------------------------------------------------------------------*/
12523 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12524 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12526 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12527 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012528
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012531 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 }
12533
12534 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012535
12536 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12537#ifdef WLAN_FEATURE_11AC
12538 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012539 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 else
12541#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012542 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012543
Jeff Johnson295189b2012-06-20 16:38:30 -070012544 /*-----------------------------------------------------------------------
12545 Get message buffer
12546 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12548 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 {
12552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012553 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012554 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 }
12558
12559 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 &pwdiConfigSTAParams->wdiReqInfo);
12562
12563 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12564 {
12565 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 WDI_STATableFindStaidByAddr(pWDICtx,
12568 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012569 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 {
12571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012572 MAC_ADDRESS_STR
12573 ": This station does not exist in the WDI Station Table",
12574 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012576 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012577 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 }
12579 }
12580 else
12581 {
12582 /* Need to fill in the STA Index to invalid, since at this point we have not
12583 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012584 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 }
12586
12587 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012588 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012589
Jeff Johnsone7245742012-09-05 17:12:55 -070012590 wpalMemoryCopy( pSendBuffer+usDataOffset,
12591 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012592 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012593
12594 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012596
Jeff Johnsone7245742012-09-05 17:12:55 -070012597 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12598 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 sizeof(pWDICtx->wdiCachedConfigStaReq));
12600
12601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12605 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012606}/*WDI_ProcessConfigStaReq*/
12607
12608
12609/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012612
12613 @param pWDICtx: pointer to the WLAN DAL context
12614 pEventData: pointer to the event information structure
12615
Jeff Johnson295189b2012-06-20 16:38:30 -070012616 @see
12617 @return Result of the function call
12618*/
12619WDI_Status
12620WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012621(
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 WDI_ControlBlockType* pWDICtx,
12623 WDI_EventInfoType* pEventData
12624)
12625{
12626 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12627 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 wpt_uint16 usDataOffset = 0;
12632 wpt_uint16 usSendSize = 0;
12633 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012634 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12636
12637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012639 -------------------------------------------------------------------------*/
12640 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12641 ( NULL == pEventData->pCBfnc ))
12642 {
12643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 }
12648
12649 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12650 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12651 /*-------------------------------------------------------------------------
12652 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 -------------------------------------------------------------------------*/
12655 wpalMutexAcquire(&pWDICtx->wptMutex);
12656
12657 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012658 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012660 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12661 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12662 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012663
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12668 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012669 }
12670 else
12671 {
12672 /*------------------------------------------------------------------------
12673 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012674 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012675 ------------------------------------------------------------------------*/
12676 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12677 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12679 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12680 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12681
12682 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 }
12686 }
12687 /* If the link is set to enter IDLE - the Session allocated for this BSS
12688 will be deleted on the Set Link State response coming from HAL
12689 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12692
12693 wpalMutexRelease(&pWDICtx->wptMutex);
12694 /*-----------------------------------------------------------------------
12695 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012696 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012698
12699 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012700 sizeof(halLinkStateReqMsg),
12701 &pSendBuffer, &usDataOffset, &usSendSize))||
12702 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12703 {
12704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012705 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012709 }
12710
12711 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12712 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12713
12714 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12715 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12716
Jeff Johnsone7245742012-09-05 17:12:55 -070012717 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12719
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 wpalMemoryCopy( pSendBuffer+usDataOffset,
12721 &halLinkStateReqMsg,
12722 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012723
12724 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012725 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012726
12727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012730 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12731 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012732}/*WDI_ProcessSetLinkStateReq*/
12733
12734
12735/**
12736 @brief Process Get Stats Request function (called when Main FSM
12737 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012738
12739 @param pWDICtx: pointer to the WLAN DAL context
12740 pEventData: pointer to the event information structure
12741
Jeff Johnson295189b2012-06-20 16:38:30 -070012742 @see
12743 @return Result of the function call
12744*/
12745WDI_Status
12746WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012747(
Jeff Johnson295189b2012-06-20 16:38:30 -070012748 WDI_ControlBlockType* pWDICtx,
12749 WDI_EventInfoType* pEventData
12750)
12751{
12752 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12753 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012754 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 wpt_uint16 usDataOffset = 0;
12756 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 WDI_BSSSessionType* pBSSSes = NULL;
12759 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 tHalStatsReqMsg halStatsReqMsg;
12762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12763
12764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012765 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012766 -------------------------------------------------------------------------*/
12767 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12768 ( NULL == pEventData->pCBfnc ) )
12769 {
12770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012771 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012774 }
12775
12776 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12777 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12778
12779 /*-------------------------------------------------------------------------
12780 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 -------------------------------------------------------------------------*/
12783 wpalMutexAcquire(&pWDICtx->wptMutex);
12784
12785 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012786 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12789 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012790 &macBSSID))
12791 {
12792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012793 "This station does not exist in the WDI Station Table %d",
12794 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012797 }
12798
Jeff Johnsone7245742012-09-05 17:12:55 -070012799 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12800 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12803 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12804 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012805
12806 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012807 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012808 }
12809
12810 /*------------------------------------------------------------------------
12811 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 ------------------------------------------------------------------------*/
12814 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12815 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12817 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12818 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012819
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 }
12824
12825
12826 wpalMutexRelease(&pWDICtx->wptMutex);
12827
12828 /*-----------------------------------------------------------------------
12829 Get message buffer
12830 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 sizeof(halStatsReqMsg.statsReqParams),
12833 &pSendBuffer, &usDataOffset, &usSendSize))||
12834 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12835 {
12836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012837 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012841 }
12842
Jeff Johnsone7245742012-09-05 17:12:55 -070012843 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012844 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012845 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012847 wpalMemoryCopy( pSendBuffer+usDataOffset,
12848 &halStatsReqMsg.statsReqParams,
12849 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012850
12851 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012852 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012853
12854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012855 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12858 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012859}/*WDI_ProcessGetStatsReq*/
12860
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012861#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012862/**
12863 @brief Process Get Roam Rssi Request function (called when Main FSM
12864 allows it)
12865
12866 @param pWDICtx: pointer to the WLAN DAL context
12867 pEventData: pointer to the event information structure
12868
12869 @see
12870 @return Result of the function call
12871*/
12872WDI_Status
12873WDI_ProcessGetRoamRssiReq
12874(
12875 WDI_ControlBlockType* pWDICtx,
12876 WDI_EventInfoType* pEventData
12877)
12878{
12879 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12880 WDI_GetStatsRspCb wdiGetStatsRspCb;
12881 wpt_uint8* pSendBuffer = NULL;
12882 wpt_uint16 usDataOffset = 0;
12883 wpt_uint16 usSendSize = 0;
12884 wpt_uint8 ucCurrentBSSSesIdx = 0;
12885 WDI_BSSSessionType* pBSSSes = NULL;
12886 wpt_macAddr macBSSID;
12887 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12888 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12890 /*-------------------------------------------------------------------------
12891 Sanity check
12892 -------------------------------------------------------------------------*/
12893 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12894 ( NULL == pEventData->pCBfnc ) )
12895 {
12896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12897 "%s: Invalid parameters", __func__);
12898 WDI_ASSERT(0);
12899 return WDI_STATUS_E_FAILURE;
12900 }
12901
12902 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12903 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12904
12905 /*-------------------------------------------------------------------------
12906 Check to see if we are in the middle of an association, if so queue, if
12907 not it means it is free to process request
12908 -------------------------------------------------------------------------*/
12909 wpalMutexAcquire(&pWDICtx->wptMutex);
12910
12911 /*------------------------------------------------------------------------
12912 Find the BSS for which the request is made
12913 ------------------------------------------------------------------------*/
12914 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12915 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12916 &macBSSID))
12917 {
12918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012919 "This station does not exist in the WDI Station Table %d",
12920 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012921 wpalMutexRelease(&pWDICtx->wptMutex);
12922 return WDI_STATUS_E_FAILURE;
12923 }
12924
12925 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12926 if ( NULL == pBSSSes )
12927 {
12928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12929 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12930 __func__, MAC_ADDR_ARRAY(macBSSID));
12931
12932 wpalMutexRelease(&pWDICtx->wptMutex);
12933 return WDI_STATUS_E_NOT_ALLOWED;
12934 }
12935
12936 /*------------------------------------------------------------------------
12937 Check if this BSS is being currently processed or queued,
12938 if queued - queue the new request as well
12939 ------------------------------------------------------------------------*/
12940 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12941 {
12942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12943 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12944 __func__, MAC_ADDR_ARRAY(macBSSID));
12945
12946 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12947 wpalMutexRelease(&pWDICtx->wptMutex);
12948 return wdiStatus;
12949 }
12950
12951 wpalMutexRelease(&pWDICtx->wptMutex);
12952
12953 /*-----------------------------------------------------------------------
12954 Get message buffer
12955 -----------------------------------------------------------------------*/
12956 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12957 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12958 &pSendBuffer, &usDataOffset, &usSendSize))||
12959 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12960 {
12961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012962 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012963 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12964 WDI_ASSERT(0);
12965 return WDI_STATUS_E_FAILURE;
12966 }
12967
12968 halRssiRoamReqMsg.roamRssiReqParams.staId =
12969 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12970 wpalMemoryCopy( pSendBuffer+usDataOffset,
12971 &halRssiRoamReqMsg.roamRssiReqParams,
12972 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12973
12974 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12975 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12976
12977 /*-------------------------------------------------------------------------
12978 Send Get STA Request to HAL
12979 -------------------------------------------------------------------------*/
12980 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12981 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12982}/*WDI_ProcessGetRoamRssiReq*/
12983#endif
12984
Jeff Johnson295189b2012-06-20 16:38:30 -070012985/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012986 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012987 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012988
12989 @param pWDICtx: pointer to the WLAN DAL context
12990 pEventData: pointer to the event information structure
12991
Jeff Johnson295189b2012-06-20 16:38:30 -070012992 @see
12993 @return Result of the function call
12994*/
12995WDI_Status
12996WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012997(
Jeff Johnson295189b2012-06-20 16:38:30 -070012998 WDI_ControlBlockType* pWDICtx,
12999 WDI_EventInfoType* pEventData
13000)
13001{
13002 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13003 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13004
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 wpt_uint16 usDataOffset = 0;
13007 wpt_uint16 usSendSize = 0;
13008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13009
13010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013012 -------------------------------------------------------------------------*/
13013 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13014 ( NULL == pEventData->pCBfnc))
13015 {
13016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013020 }
13021
13022 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13023 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13024
13025 /*-----------------------------------------------------------------------
13026 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013028 -----------------------------------------------------------------------*/
13029
Jeff Johnsone7245742012-09-05 17:12:55 -070013030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013031 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13032 &pSendBuffer, &usDataOffset, &usSendSize))||
13033 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13034 {
13035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013036 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013037 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 }
13041
Jeff Johnsone7245742012-09-05 17:12:55 -070013042 wpalMemoryCopy( pSendBuffer+usDataOffset,
13043 &pwdiUpdateCfgParams->uConfigBufferLen,
13044 sizeof(wpt_uint32));
13045 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13046 pwdiUpdateCfgParams->pConfigBuffer,
13047 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013048
13049 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013051
13052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013053 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013054 -------------------------------------------------------------------------*/
13055
Jeff Johnsone7245742012-09-05 17:12:55 -070013056 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13057 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013058
13059}/*WDI_ProcessUpdateCfgReq*/
13060
13061
13062/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013065
13066 @param pWDICtx: pointer to the WLAN DAL context
13067 pEventData: pointer to the event information structure
13068
Jeff Johnson295189b2012-06-20 16:38:30 -070013069 @see
13070 @return Result of the function call
13071*/
13072WDI_Status
13073WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013074(
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 WDI_ControlBlockType* pWDICtx,
13076 WDI_EventInfoType* pEventData
13077)
13078{
13079 WDI_AddBAReqParamsType* pwdiAddBAParams;
13080 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013081 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013083 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 wpt_uint16 usDataOffset = 0;
13085 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 wpt_macAddr macBSSID;
13088
13089 tAddBAReqMsg halAddBAReq;
13090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13091
13092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013094 -------------------------------------------------------------------------*/
13095 if (( NULL == pEventData ) ||
13096 ( NULL == pEventData->pEventData) ||
13097 ( NULL == pEventData->pCBfnc ))
13098 {
13099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 }
13104
13105 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13106 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13107
13108 /*-------------------------------------------------------------------------
13109 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013110 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013111 -------------------------------------------------------------------------*/
13112 wpalMutexAcquire(&pWDICtx->wptMutex);
13113
13114 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013117 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13118 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 &macBSSID))
13120 {
13121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013122 "This station does not exist in the WDI Station Table %d",
13123 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013126 }
13127
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13129 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13132 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13133 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013134
13135 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013136 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013137 }
13138
13139 /*------------------------------------------------------------------------
13140 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013141 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 ------------------------------------------------------------------------*/
13143 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13144 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13146 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13147 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013148
Jeff Johnsone7245742012-09-05 17:12:55 -070013149 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013150 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013151 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 }
13153
13154
13155 wpalMutexRelease(&pWDICtx->wptMutex);
13156 /*-----------------------------------------------------------------------
13157 Get message buffer
13158 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 sizeof(halAddBAReq.addBAParams),
13161 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013163 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13164 {
13165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013166 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013170 }
13171
Jeff Johnsone7245742012-09-05 17:12:55 -070013172 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13174 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13175#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013176 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013177 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13178#endif
13179
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 wpalMemoryCopy( pSendBuffer+usDataOffset,
13181 &halAddBAReq.addBAParams,
13182 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013183
13184 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013186
13187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013188 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013189 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013190 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13191 wdiAddBARspCb, pEventData->pUserData,
13192 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013193}/*WDI_ProcessAddBAReq*/
13194
13195
13196
13197/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013200
13201 @param pWDICtx: pointer to the WLAN DAL context
13202 pEventData: pointer to the event information structure
13203
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 @see
13205 @return Result of the function call
13206*/
13207WDI_Status
13208WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013209(
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 WDI_ControlBlockType* pWDICtx,
13211 WDI_EventInfoType* pEventData
13212)
13213{
13214 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13215 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013219 wpt_uint16 usDataOffset = 0;
13220 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013221 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 wpt_uint16 index;
13223 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013224
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 tTriggerBAReqMsg halTriggerBAReq;
13226 tTriggerBaReqCandidate* halTriggerBACandidate;
13227 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13229
13230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 -------------------------------------------------------------------------*/
13233 if (( NULL == pEventData ) ||
13234 ( NULL == pEventData->pEventData ) ||
13235 ( NULL == pEventData->pCBfnc ))
13236 {
13237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013238 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013241 }
13242
13243 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13244 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13245 /*-------------------------------------------------------------------------
13246 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 -------------------------------------------------------------------------*/
13249 wpalMutexAcquire(&pWDICtx->wptMutex);
13250
13251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013254 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13255 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 &macBSSID))
13257 {
13258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013259 "This station does not exist in the WDI Station Table %d",
13260 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 }
13264
Jeff Johnsone7245742012-09-05 17:12:55 -070013265 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13266 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13269 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13270 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013271
13272 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013273 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 }
13275
13276 /*------------------------------------------------------------------------
13277 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 ------------------------------------------------------------------------*/
13280 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13281 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13283 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13284 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013285
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 }
13290
13291
13292 wpalMutexRelease(&pWDICtx->wptMutex);
13293 /*-----------------------------------------------------------------------
13294 Get message buffer
13295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13297 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013298 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013299 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013300 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13301 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013304 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13306 {
13307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013308 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013309 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013312 }
13313
Jeff Johnsone7245742012-09-05 17:12:55 -070013314 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13318
Jeff Johnsone7245742012-09-05 17:12:55 -070013319 wpalMemoryCopy( pSendBuffer+usDataOffset,
13320 &halTriggerBAReq.triggerBAParams,
13321 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013322
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13325 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13326 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013327
13328 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013329 index++)
13330 {
13331 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13332 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13333 halTriggerBACandidate++;
13334 wdiTriggerBACandidate++;
13335 }
13336
13337 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013339
13340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013343 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13344 wdiTriggerBARspCb, pEventData->pUserData,
13345 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013346}/*WDI_ProcessTriggerBAReq*/
13347
13348
13349
13350/**
13351 @brief Process Update Beacon Params Request function (called when Main FSM
13352 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013353
13354 @param pWDICtx: pointer to the WLAN DAL context
13355 pEventData: pointer to the event information structure
13356
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 @see
13358 @return Result of the function call
13359*/
13360WDI_Status
13361WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013362(
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 WDI_ControlBlockType* pWDICtx,
13364 WDI_EventInfoType* pEventData
13365)
13366{
13367 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13368 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 wpt_uint16 usDataOffset = 0;
13371 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013372 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13374
13375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 -------------------------------------------------------------------------*/
13378 if (( NULL == pEventData ) ||
13379 ( NULL == pEventData->pEventData) ||
13380 ( NULL == pEventData->pCBfnc))
13381 {
13382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 }
13387
13388 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13389 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13390 /*-----------------------------------------------------------------------
13391 Get message buffer
13392 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 sizeof(halUpdateBeaconParams),
13395 &pSendBuffer, &usDataOffset, &usSendSize))||
13396 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13397 {
13398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013399 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 }
13404
13405 /*BSS Index of the BSS*/
13406 halUpdateBeaconParams.bssIdx =
13407 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13408 /*shortPreamble mode. HAL should update all the STA rates when it
13409 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013410 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013411 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13412 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013413 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013414 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13415 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13418
13419 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013420 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013422 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013424 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013425 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013426 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013427 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013428 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013429 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13432 halUpdateBeaconParams.fRIFSMode =
13433 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13436
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13438 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013439
13440 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013442
13443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13447 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013448}/*WDI_ProcessUpdateBeaconParamsReq*/
13449
13450
13451
13452/**
13453 @brief Process Send Beacon template Request function (called when Main FSM
13454 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013455
13456 @param pWDICtx: pointer to the WLAN DAL context
13457 pEventData: pointer to the event information structure
13458
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 @see
13460 @return Result of the function call
13461*/
13462WDI_Status
13463WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013464(
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 WDI_ControlBlockType* pWDICtx,
13466 WDI_EventInfoType* pEventData
13467)
13468{
13469 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13470 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 wpt_uint16 usDataOffset = 0;
13473 wpt_uint16 usSendSize = 0;
13474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13475
13476 tSendBeaconReqMsg halSendBeaconReq;
13477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 -------------------------------------------------------------------------*/
13480 if (( NULL == pEventData ) ||
13481 ( NULL == pEventData->pEventData ) ||
13482 ( NULL == pEventData->pCBfnc ))
13483 {
13484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013485 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 }
13489
13490 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13491 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13492 /*-----------------------------------------------------------------------
13493 Get message buffer
13494 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013496 sizeof(halSendBeaconReq.sendBeaconParam),
13497 &pSendBuffer, &usDataOffset, &usSendSize))||
13498 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13499 {
13500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013501 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013505 }
13506
13507 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13508 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13509 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013510 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13512 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13513 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13514 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013517 /* usP2PIeOffset should be atleast greater than timIeOffset */
13518 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13519 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13520 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13521 {
13522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13523 "Invalid usP2PIeOffset %hu",
13524 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13525 WDI_ASSERT(0);
13526 return WDI_STATUS_E_FAILURE;
13527 }
13528
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013531
Jeff Johnsone7245742012-09-05 17:12:55 -070013532 wpalMemoryCopy( pSendBuffer+usDataOffset,
13533 &halSendBeaconReq.sendBeaconParam,
13534 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013535
13536 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013538
13539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13543 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013544}/*WDI_ProcessSendBeaconParamsReq*/
13545
13546/**
13547 @brief Process Update Beacon Params Request function (called when Main FSM
13548 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013549
13550 @param pWDICtx: pointer to the WLAN DAL context
13551 pEventData: pointer to the event information structure
13552
Jeff Johnson295189b2012-06-20 16:38:30 -070013553 @see
13554 @return Result of the function call
13555*/
13556WDI_Status
13557WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013558(
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 WDI_ControlBlockType* pWDICtx,
13560 WDI_EventInfoType* pEventData
13561)
13562{
13563 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13564 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 wpt_uint16 usDataOffset = 0;
13567 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013568 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13570
13571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 -------------------------------------------------------------------------*/
13574 if (( NULL == pEventData ) ||
13575 ( NULL == pEventData->pEventData) ||
13576 ( NULL == pEventData->pCBfnc))
13577 {
13578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 }
13583
Jeff Johnsone7245742012-09-05 17:12:55 -070013584 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013585 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013586 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013587 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13588 /*-----------------------------------------------------------------------
13589 Get message buffer
13590 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013591 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 sizeof(halUpdateProbeRspTmplParams),
13593 &pSendBuffer, &usDataOffset, &usSendSize))||
13594 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13595 {
13596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013597 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013598 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013601 }
13602
13603 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013604 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 WDI_MAC_ADDR_LEN);
13606
Jeff Johnsone7245742012-09-05 17:12:55 -070013607 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13609
13610 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13611 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013613
13614
13615 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13616 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13617 WDI_PROBE_REQ_BITMAP_IE_LEN);
13618
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 wpalMemoryCopy( pSendBuffer+usDataOffset,
13620 &halUpdateProbeRspTmplParams,
13621 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013622
13623 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013624 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013625
13626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013629 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13630 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13631 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013632}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13633
13634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013635 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013637
13638 @param pWDICtx: pointer to the WLAN DAL context
13639 pEventData: pointer to the event information structure
13640
Jeff Johnson295189b2012-06-20 16:38:30 -070013641 @see
13642 @return Result of the function call
13643*/
13644WDI_Status
13645WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013646(
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 WDI_ControlBlockType* pWDICtx,
13648 WDI_EventInfoType* pEventData
13649)
13650{
13651
13652 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13653 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13654
13655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 -------------------------------------------------------------------------*/
13658 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013659 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013660 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013661 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013662 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13663 {
13664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013668 }
13669
13670 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13673
13674 /*cache the wdi nv request message here if the the first fragment
13675 * To issue the request to HAL for the next fragment */
13676 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13677 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013678 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13679 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013680 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13681
13682 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13683 pWDICtx->pRspCBUserData = pEventData->pUserData;
13684 }
13685
13686 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13687}
13688
13689/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013690 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013691 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013692
13693 @param pWDICtx: pointer to the WLAN DAL context
13694 pEventData: pointer to the event information structure
13695
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 @see
13697 @return Result of the function call
13698*/
13699WDI_Status WDI_ProcessSetMaxTxPowerReq
13700(
13701 WDI_ControlBlockType* pWDICtx,
13702 WDI_EventInfoType* pEventData
13703)
13704{
13705 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13706 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013707 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 wpt_uint16 usDataOffset = 0;
13709 wpt_uint16 usSendSize = 0;
13710 tSetMaxTxPwrReq halSetMaxTxPower;
13711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13712
13713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 -------------------------------------------------------------------------*/
13716 if (( NULL == pEventData ) ||
13717 ( NULL == pEventData->pEventData ) ||
13718 ( NULL == pEventData->pCBfnc ))
13719 {
13720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013724 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013727 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013728 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13729
13730 /*-----------------------------------------------------------------------
13731 Get message buffer
13732 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013733if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013734 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13735 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013736 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013737)))
13738 {
13739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013740 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 }
13745
13746 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13747 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13748 WDI_MAC_ADDR_LEN);
13749
13750 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13751 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13752 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013753 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013755
13756 wpalMemoryCopy( pSendBuffer+usDataOffset,
13757 &halSetMaxTxPower.setMaxTxPwrParams,
13758 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013759
13760 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013762
13763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013764 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13767 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13768 WDI_SET_MAX_TX_POWER_RESP);
13769
Jeff Johnson295189b2012-06-20 16:38:30 -070013770}
13771
Arif Hussaina5ebce02013-08-09 15:09:58 -070013772/*
13773 @brief Process Set Max Tx Power Per Band Request function (called when Main
13774 FSM allows it)
13775
13776 @param pWDICtx: pointer to the WLAN DAL context
13777 pEventData: pointer to the event information structure
13778
13779 @see
13780 @return Result of the function call
13781*/
13782WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13783(
13784 WDI_ControlBlockType* pWDICtx,
13785 WDI_EventInfoType* pEventData
13786)
13787{
13788 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13789 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13790 wpt_uint8* pSendBuffer = NULL;
13791 wpt_uint16 usDataOffset = 0;
13792 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013793 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013794 WDI_Status rValue = WDI_STATUS_SUCCESS;
13795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13796
13797 /*-------------------------------------------------------------------------
13798 Sanity check
13799 -------------------------------------------------------------------------*/
13800 if (( NULL == pEventData ) ||
13801 ( NULL == pEventData->pEventData ) ||
13802 ( NULL == pEventData->pCBfnc ))
13803 {
13804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13805 "%s: Invalid parameters", __func__);
13806 WDI_ASSERT(0);
13807 return WDI_STATUS_E_FAILURE;
13808 }
13809 pwdiSetMaxTxPowerPerBandParams = \
13810 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13811
13812 wdiSetMaxTxPowerPerBandRspCb = \
13813 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13814
13815 /*-----------------------------------------------------------------------
13816 Get message buffer
13817 -----------------------------------------------------------------------*/
13818
13819 rValue = WDI_GetMessageBuffer(pWDICtx,
13820 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13821 sizeof(tSetMaxTxPwrPerBandParams),
13822 &pSendBuffer, &usDataOffset, &usSendSize);
13823
13824 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13825 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13826 {
13827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13828 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13829 pEventData, pwdiSetMaxTxPowerPerBandParams,
13830 wdiSetMaxTxPowerPerBandRspCb);
13831 WDI_ASSERT(0);
13832 return WDI_STATUS_E_FAILURE;
13833 }
13834
13835
Arif Hussainf8f080c2014-04-03 09:48:36 -070013836 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13837 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013838 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13839
Arif Hussainf8f080c2014-04-03 09:48:36 -070013840 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013841 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13842
13843 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13844 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13845
13846 /*-------------------------------------------------------------------------
13847 Send Set Max Tx Power Per Band Request to HAL
13848 -------------------------------------------------------------------------*/
13849 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13850 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13851 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13852}
13853
schang86c22c42013-03-13 18:41:24 -070013854/**
13855 @brief Process Set Tx Power Request function (called when Main
13856 FSM allows it)
13857
13858 @param pWDICtx: pointer to the WLAN DAL context
13859 pEventData: pointer to the event information structure
13860
13861 @see
13862 @return Result of the function call
13863*/
13864WDI_Status WDI_ProcessSetTxPowerReq
13865(
13866 WDI_ControlBlockType* pWDICtx,
13867 WDI_EventInfoType* pEventData
13868)
13869{
13870 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13871 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13872 wpt_uint8* pSendBuffer = NULL;
13873 wpt_uint16 usDataOffset = 0;
13874 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013875 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13877
13878 /*-------------------------------------------------------------------------
13879 Sanity check
13880 -------------------------------------------------------------------------*/
13881 if (( NULL == pEventData ) ||
13882 ( NULL == pEventData->pEventData ) ||
13883 ( NULL == pEventData->pCBfnc ))
13884 {
13885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13886 "%s: Invalid parameters", __func__);
13887 WDI_ASSERT(0);
13888 return WDI_STATUS_E_FAILURE;
13889 }
13890
13891 pwdiSetTxPowerParams =
13892 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13893 wdiSetTxPowerRspCb =
13894 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13895
13896 /*-----------------------------------------------------------------------
13897 Get message buffer
13898 -----------------------------------------------------------------------*/
13899 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13900 sizeof(tSetTxPwrReqParams),
13901 &pSendBuffer, &usDataOffset, &usSendSize))||
13902 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13903 )))
13904 {
13905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013906 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013907 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13908 WDI_ASSERT(0);
13909 return WDI_STATUS_E_FAILURE;
13910 }
13911
Leo Chang9a43db92013-03-25 17:39:58 -070013912 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13913 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13914 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013915
13916 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13917 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13918
13919 /*-------------------------------------------------------------------------
13920 Send Set Tx Power Request to HAL
13921 -------------------------------------------------------------------------*/
13922 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13923 wdiSetTxPowerRspCb, pEventData->pUserData,
13924 WDI_SET_TX_POWER_RESP);
13925}
Jeff Johnson295189b2012-06-20 16:38:30 -070013926
13927/**
13928 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13929 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013930
13931 @param pWDICtx: pointer to the WLAN DAL context
13932 pEventData: pointer to the event information structure
13933
Jeff Johnson295189b2012-06-20 16:38:30 -070013934 @see
13935 @return Result of the function call
13936*/
13937WDI_Status
13938WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013939(
Jeff Johnson295189b2012-06-20 16:38:30 -070013940 WDI_ControlBlockType* pWDICtx,
13941 WDI_EventInfoType* pEventData
13942)
13943{
13944 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13945 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 wpt_uint16 usDataOffset = 0;
13948 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013949 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13951
13952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 -------------------------------------------------------------------------*/
13955 if (( NULL == pEventData ) ||
13956 ( NULL == pEventData->pEventData) ||
13957 ( NULL == pEventData->pCBfnc))
13958 {
13959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 }
13964
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13969 /*-----------------------------------------------------------------------
13970 Get message buffer
13971 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13973 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 sizeof(halSetP2PGONOAParams),
13975 &pSendBuffer, &usDataOffset, &usSendSize))||
13976 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13977 {
13978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013979 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 }
13984
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13989 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013997 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13998
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 wpalMemoryCopy( pSendBuffer+usDataOffset,
14000 &halSetP2PGONOAParams,
14001 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014002
14003 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014005
14006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014009 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14010 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14011 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014012}/*WDI_ProcessP2PGONOAReq*/
14013
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014014#ifdef FEATURE_WLAN_TDLS
14015
14016/**
14017 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14018 allows it)
14019
14020 @param pWDICtx: pointer to the WLAN DAL context
14021 pEventData: pointer to the event information structure
14022
14023 @see
14024 @return Result of the function call
14025*/
14026WDI_Status
14027WDI_ProcessTdlsLinkEstablishReq
14028(
14029 WDI_ControlBlockType* pWDICtx,
14030 WDI_EventInfoType* pEventData
14031)
14032{
14033 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14034 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14035 wpt_uint8* pSendBuffer = NULL;
14036 wpt_uint16 usDataOffset = 0;
14037 wpt_uint16 usSendSize = 0;
14038
14039 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14041
14042 /*-------------------------------------------------------------------------
14043 Sanity check
14044 -------------------------------------------------------------------------*/
14045 if (( NULL == pEventData ) ||
14046 ( NULL == pEventData->pEventData) ||
14047 ( NULL == pEventData->pCBfnc))
14048 {
14049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14050 "%s: Invalid parameters", __func__);
14051 WDI_ASSERT(0);
14052 return WDI_STATUS_E_FAILURE;
14053 }
14054 pwdiTDLSLinkEstablishReqParams =
14055 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14056 wdiTDLSLinkEstablishReqRspCb =
14057 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14058
14059
14060 /*-----------------------------------------------------------------------
14061 Get message buffer
14062 -----------------------------------------------------------------------*/
14063 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14064 WDI_TDLS_LINK_ESTABLISH_REQ,
14065 sizeof(halSetTDLSLinkEstablishParams),
14066 &pSendBuffer, &usDataOffset, &usSendSize))||
14067 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14068 {
14069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014070 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014071 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14072 WDI_ASSERT(0);
14073 return WDI_STATUS_E_FAILURE;
14074 }
14075
14076 halSetTDLSLinkEstablishParams.staIdx =
14077 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14078 halSetTDLSLinkEstablishParams.bIsResponder =
14079 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14080 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14081 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14082 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14083 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14084 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14085 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14086 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14087 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14088 halSetTDLSLinkEstablishParams.aAck = 0;
14089 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14090 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14091 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014092 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14093 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14094
14095 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14096 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14097 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14098 halSetTDLSLinkEstablishParams.validChannelsLen =
14099 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14100
14101 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14102 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14103 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14104 halSetTDLSLinkEstablishParams.validOperClassesLen =
14105 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014106
14107 wpalMemoryCopy( pSendBuffer+usDataOffset,
14108 &halSetTDLSLinkEstablishParams,
14109 sizeof(halSetTDLSLinkEstablishParams));
14110
14111 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14112 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14113
14114 /*-------------------------------------------------------------------------
14115 Send Update Probe Resp Template Request to HAL
14116 -------------------------------------------------------------------------*/
14117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14118 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14119 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14120 return 0;
14121}/*WDI_ProcessTdlsLinkEstablishReq*/
14122
14123
Atul Mittalc0f739f2014-07-31 13:47:47 +053014124/**
14125 @brief sends the channel switch command to f/w (called when Main FSM
14126 allows it)
14127
14128 @param pWDICtx: pointer to the WLAN DAL context
14129 pEventData: pointer to the event information structure
14130
14131 @see
14132 @return Result of the function call
14133*/
14134WDI_Status
14135WDI_ProcessTdlsChanSwitchReq
14136(
14137 WDI_ControlBlockType* pWDICtx,
14138 WDI_EventInfoType* pEventData
14139)
14140{
14141 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14142 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14143 wpt_uint8* pSendBuffer = NULL;
14144 wpt_uint16 usDataOffset = 0;
14145 wpt_uint16 usSendSize = 0;
14146 //WDI_Status wdiStatus;
14147 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14149
14150 /*-------------------------------------------------------------------------
14151 Sanity check
14152 -------------------------------------------------------------------------*/
14153 if (( NULL == pEventData ) ||
14154 ( NULL == pEventData->pEventData))
14155 {
14156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14157 "%s: Invalid parameters", __func__);
14158 WDI_ASSERT(0);
14159 return WDI_STATUS_E_FAILURE;
14160 }
14161 pwdiTDLSChanSwitchReqParams =
14162 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14163 wdiTDLSChanSwitchReqRspCb =
14164 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14165
14166 /*-----------------------------------------------------------------------
14167 Get message buffer
14168 -----------------------------------------------------------------------*/
14169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14170 WDI_TDLS_CHAN_SWITCH_REQ,
14171 sizeof(halSetTDLSChanSwitchParams),
14172 &pSendBuffer, &usDataOffset, &usSendSize))||
14173 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14174 {
14175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14176 "Unable to get send buffer in Channel Switch REQ %p %p %p",
14177 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14178 WDI_ASSERT(0);
14179 return WDI_STATUS_E_FAILURE;
14180 }
14181
14182 halSetTDLSChanSwitchParams.staIdx =
14183 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14184 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14185 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14186 halSetTDLSChanSwitchParams.targetOperClass =
14187 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14188 halSetTDLSChanSwitchParams.targetChannel =
14189 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14190 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14191 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14192 wpalMemoryCopy( pSendBuffer+usDataOffset,
14193 &halSetTDLSChanSwitchParams,
14194 sizeof(halSetTDLSChanSwitchParams));
14195
14196 pWDICtx->wdiReqStatusCB = NULL;
14197 pWDICtx->pReqStatusUserData = NULL;
14198
14199 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14200 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14201 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14202}/*WDI_ProcessTdlsChanSwitchReq*/
14203
14204#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014205
Jeff Johnson295189b2012-06-20 16:38:30 -070014206
14207
14208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014210 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014211 @param None
14212
14213 @see
14214 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014215*/
14216void
14217WDI_SetPowerStateCb
14218(
14219 wpt_status status,
14220 unsigned int dxePhyAddr,
14221 void *pContext
14222)
14223{
14224 wpt_status wptStatus;
14225 WDI_ControlBlockType *pCB = NULL;
14226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014227 /*
14228 * Trigger the event to bring the Enter BMPS req function to come
14229 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014230*/
14231 if( NULL != pContext )
14232 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014233 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014234 }
14235 else
14236 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014237 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 pCB = &gWDICb;
14239 }
Mihir Shetea4306052014-03-25 00:02:54 +053014240
14241 if(eWLAN_PAL_STATUS_SUCCESS == status )
14242 {
14243 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14244 }
14245 else
14246 {
14247 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14248 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 pCB->dxePhyAddr = dxePhyAddr;
14250 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14251 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14252 {
14253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14254 "Failed to set an event");
14255
Jeff Johnsone7245742012-09-05 17:12:55 -070014256 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 }
14258 return;
14259}
14260
14261
14262/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014263 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014265
14266 @param pWDICtx: pointer to the WLAN DAL context
14267 pEventData: pointer to the event information structure
14268
Jeff Johnson295189b2012-06-20 16:38:30 -070014269 @see
14270 @return Result of the function call
14271*/
14272WDI_Status
14273WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014274(
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 WDI_ControlBlockType* pWDICtx,
14276 WDI_EventInfoType* pEventData
14277)
14278{
Jeff Johnson43971f52012-07-17 12:26:56 -070014279 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014281 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 wpt_uint16 usDataOffset = 0;
14283 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014284 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14286
14287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014290 if ((NULL == pEventData ) ||
14291 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14292 (NULL == (pwdiEnterImpsReqParams =
14293 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 {
14295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014297 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014298 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 }
14300
14301 /*-----------------------------------------------------------------------
14302 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 0,
14307 &pSendBuffer, &usDataOffset, &usSendSize))||
14308 ( usSendSize < (usDataOffset )))
14309 {
14310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014311 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 pEventData, wdiEnterImpsRspCb);
14313 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014314 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 }
14316
14317 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014318 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14319 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 {
14321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14322 "WDI Init failed to reset an event");
14323
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014325 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 }
14327
14328 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014329 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14330 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014332 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014333 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014334 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014335 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014336
14337 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014338 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014339 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014340 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14341 WDI_SET_POWER_STATE_TIMEOUT);
14342 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 {
14344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14345 "WDI Init failed to wait on an event");
14346
Karthick S1fa70262015-08-20 13:28:14 +053014347 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014348 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014349 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 }
14351
Mihir Shetea4306052014-03-25 00:02:54 +053014352 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14353 {
14354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14355 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14356
14357 goto fail;
14358 }
14359
14360 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14361 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014365 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14366 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014367
14368fail:
14369 // Release the message buffer so we don't leak
14370 wpalMemoryFree(pSendBuffer);
14371
14372failRequest:
14373 //WDA should have failure check to avoid the memory leak
14374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014375}/*WDI_ProcessEnterImpsReq*/
14376
14377/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014380
14381 @param pWDICtx: pointer to the WLAN DAL context
14382 pEventData: pointer to the event information structure
14383
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 @see
14385 @return Result of the function call
14386*/
14387WDI_Status
14388WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014389(
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 WDI_ControlBlockType* pWDICtx,
14391 WDI_EventInfoType* pEventData
14392)
14393{
14394 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 wpt_uint16 usDataOffset = 0;
14397 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014398 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14400
14401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 -------------------------------------------------------------------------*/
14404 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014405 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14406 (NULL == (pwdiExitImpsReqParams =
14407 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 {
14409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014410 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014413 }
14414
14415 /*-----------------------------------------------------------------------
14416 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 0,
14421 &pSendBuffer, &usDataOffset, &usSendSize))||
14422 ( usSendSize < (usDataOffset )))
14423 {
14424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014425 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 pEventData, wdiExitImpsRspCb);
14427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014430 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14431 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014433 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14436 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014437}/*WDI_ProcessExitImpsReq*/
14438
14439/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014440 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014442
14443 @param pWDICtx: pointer to the WLAN DAL context
14444 pEventData: pointer to the event information structure
14445
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 @see
14447 @return Result of the function call
14448*/
14449WDI_Status
14450WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014451(
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 WDI_ControlBlockType* pWDICtx,
14453 WDI_EventInfoType* pEventData
14454)
14455{
14456 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14457 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 wpt_uint16 usDataOffset = 0;
14460 wpt_uint16 usSendSize = 0;
14461 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014462 wpt_status wptStatus;
14463
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14465
14466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 -------------------------------------------------------------------------*/
14469 if (( NULL == pEventData ) ||
14470 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14471 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14472 {
14473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014476 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 }
14478
14479 /*-----------------------------------------------------------------------
14480 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 sizeof(enterBmpsReq),
14485 &pSendBuffer, &usDataOffset, &usSendSize))||
14486 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14487 {
14488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014489 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14491 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014492 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014493 }
14494
14495 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014496 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14497 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 {
14499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14500 "WDI Init failed to reset an event");
14501
Jeff Johnsone7245742012-09-05 17:12:55 -070014502 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014503 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 }
14505
14506 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014507 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14508 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14509 {
14510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014511 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014512 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014513 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014514 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014515
14516/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014517 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014518 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014519 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14520 WDI_SET_POWER_STATE_TIMEOUT);
14521 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 {
14523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14524 "WDI Init failed to wait on an event");
14525
Karthick S1fa70262015-08-20 13:28:14 +053014526 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014527 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014528 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 }
14530
14531 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14532
14533 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14534 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14535 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14536 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14537
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014538 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014539 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14540 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14541 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14542
14543 wpalMemoryCopy( pSendBuffer+usDataOffset,
14544 &enterBmpsReq,
14545 sizeof(enterBmpsReq));
14546
14547 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014548 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014549
14550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014551 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014552 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014553 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14554 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014555
14556fail:
14557 // Release the message buffer so we don't leak
14558 wpalMemoryFree(pSendBuffer);
14559
14560failRequest:
14561 //WDA should have failure check to avoid the memory leak
14562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014563}/*WDI_ProcessEnterBmpsReq*/
14564
14565/**
14566 @brief Process Exit BMPS Request function (called when Main FSM
14567 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014568
14569 @param pWDICtx: pointer to the WLAN DAL context
14570 pEventData: pointer to the event information structure
14571
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 @see
14573 @return Result of the function call
14574*/
14575WDI_Status
14576WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014577(
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 WDI_ControlBlockType* pWDICtx,
14579 WDI_EventInfoType* pEventData
14580)
14581{
14582 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14583 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 wpt_uint16 usDataOffset = 0;
14586 wpt_uint16 usSendSize = 0;
14587 tHalExitBmpsReqParams exitBmpsReq;
14588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14589
14590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 -------------------------------------------------------------------------*/
14593 if (( NULL == pEventData ) ||
14594 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14595 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14596 {
14597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014601 }
14602
14603 /*-----------------------------------------------------------------------
14604 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014605 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 sizeof(exitBmpsReq),
14609 &pSendBuffer, &usDataOffset, &usSendSize))||
14610 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14611 {
14612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014613 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014617 }
14618 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14619
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14621
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 wpalMemoryCopy( pSendBuffer+usDataOffset,
14623 &exitBmpsReq,
14624 sizeof(exitBmpsReq));
14625
14626 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014628
14629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14633 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014634}/*WDI_ProcessExitBmpsReq*/
14635
14636/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014639
14640 @param pWDICtx: pointer to the WLAN DAL context
14641 pEventData: pointer to the event information structure
14642
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 @see
14644 @return Result of the function call
14645*/
14646WDI_Status
14647WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014648(
Jeff Johnson295189b2012-06-20 16:38:30 -070014649 WDI_ControlBlockType* pWDICtx,
14650 WDI_EventInfoType* pEventData
14651)
14652{
14653 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14654 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 wpt_uint16 usDataOffset = 0;
14657 wpt_uint16 usSendSize = 0;
14658 tUapsdReqParams enterUapsdReq;
14659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14660
14661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 -------------------------------------------------------------------------*/
14664 if (( NULL == pEventData ) ||
14665 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14666 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14667 {
14668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 }
14673
14674 /*-----------------------------------------------------------------------
14675 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014678 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 sizeof(enterUapsdReq),
14680 &pSendBuffer, &usDataOffset, &usSendSize))||
14681 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14682 {
14683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014684 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 }
14689
14690 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14691 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14692 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14693 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14694 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14695 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14696 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14697 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014699
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 wpalMemoryCopy( pSendBuffer+usDataOffset,
14701 &enterUapsdReq,
14702 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014703
14704 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014705 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014706
14707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014708 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014710 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14711 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014712}/*WDI_ProcessEnterUapsdReq*/
14713
14714/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014717
14718 @param pWDICtx: pointer to the WLAN DAL context
14719 pEventData: pointer to the event information structure
14720
Jeff Johnson295189b2012-06-20 16:38:30 -070014721 @see
14722 @return Result of the function call
14723*/
14724WDI_Status
14725WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014726(
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 WDI_ControlBlockType* pWDICtx,
14728 WDI_EventInfoType* pEventData
14729)
14730{
14731 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 wpt_uint16 usDataOffset = 0;
14734 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014735 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14736 wpt_uint8 bssIdx = 0;
14737
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14739
14740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 -------------------------------------------------------------------------*/
14743 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014744 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14746 {
14747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 }
14752
14753 /*-----------------------------------------------------------------------
14754 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014758 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014760 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 {
14762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014763 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 pEventData, wdiExitUapsdRspCb);
14765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014767 }
14768
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014769 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14770
14771 wpalMemoryCopy( pSendBuffer+usDataOffset,
14772 &bssIdx,
14773 sizeof(wpt_uint8));
14774
14775 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14776 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14777
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014779 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014780 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014781 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14782 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014783}/*WDI_ProcessExitUapsdReq*/
14784
14785/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014788
14789 @param pWDICtx: pointer to the WLAN DAL context
14790 pEventData: pointer to the event information structure
14791
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 @see
14793 @return Result of the function call
14794*/
14795WDI_Status
14796WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014797(
Jeff Johnson295189b2012-06-20 16:38:30 -070014798 WDI_ControlBlockType* pWDICtx,
14799 WDI_EventInfoType* pEventData
14800)
14801{
14802 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14803 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014804 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 wpt_uint16 usDataOffset = 0;
14806 wpt_uint16 usSendSize = 0;
14807 tUapsdInfo uapsdAcParamsReq;
14808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14809
14810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 -------------------------------------------------------------------------*/
14813 if (( NULL == pEventData ) ||
14814 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14815 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14816 {
14817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 }
14822
14823 /*-----------------------------------------------------------------------
14824 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014826 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 sizeof(uapsdAcParamsReq),
14829 &pSendBuffer, &usDataOffset, &usSendSize))||
14830 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14831 {
14832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014833 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 }
14838
14839 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14840 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14841 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14842 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14843 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14844 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14845
Jeff Johnsone7245742012-09-05 17:12:55 -070014846 wpalMemoryCopy( pSendBuffer+usDataOffset,
14847 &uapsdAcParamsReq,
14848 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014849
14850 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014852
14853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014854 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014856 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14857 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014858}/*WDI_ProcessSetUapsdAcParamsReq*/
14859
14860/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014861 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014862 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014863
14864 @param pWDICtx: pointer to the WLAN DAL context
14865 pEventData: pointer to the event information structure
14866
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 @see
14868 @return Result of the function call
14869*/
14870WDI_Status
14871WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014872(
Jeff Johnson295189b2012-06-20 16:38:30 -070014873 WDI_ControlBlockType* pWDICtx,
14874 WDI_EventInfoType* pEventData
14875)
14876{
14877 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14878 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 wpt_uint16 usDataOffset = 0;
14881 wpt_uint16 usSendSize = 0;
14882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14883
14884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 -------------------------------------------------------------------------*/
14887 if (( NULL == pEventData ) ||
14888 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14889 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14890 {
14891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 }
14896
14897 /*-----------------------------------------------------------------------
14898 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14903 &pSendBuffer, &usDataOffset, &usSendSize))||
14904 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14905 {
14906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014907 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014911 }
14912
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 wpalMemoryCopy( pSendBuffer+usDataOffset,
14914 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14915 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014916
14917 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014918 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014919
14920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014921 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14924 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014925}/*WDI_ProcessUpdateUapsdParamsReq*/
14926
14927/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014930
14931 @param pWDICtx: pointer to the WLAN DAL context
14932 pEventData: pointer to the event information structure
14933
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 @see
14935 @return Result of the function call
14936*/
14937WDI_Status
14938WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014939(
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 WDI_ControlBlockType* pWDICtx,
14941 WDI_EventInfoType* pEventData
14942)
14943{
14944 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14945 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 wpt_uint16 usDataOffset = 0;
14948 wpt_uint16 usSendSize = 0;
14949 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14950
14951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14952
14953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014955 -------------------------------------------------------------------------*/
14956 if (( NULL == pEventData ) ||
14957 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14958 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14959 {
14960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014961 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 }
14965
14966 /*-----------------------------------------------------------------------
14967 Get message buffer
14968 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 sizeof(halRxpFilterParams),
14971 &pSendBuffer, &usDataOffset, &usSendSize))||
14972 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14973 {
14974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014975 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 }
14980
Jeff Johnsone7245742012-09-05 17:12:55 -070014981 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014983 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014984 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14985
Jeff Johnsone7245742012-09-05 17:12:55 -070014986 wpalMemoryCopy( pSendBuffer+usDataOffset,
14987 &halRxpFilterParams,
14988 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014989
14990 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014992
14993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014994 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014996 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14997 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014998}/*WDI_ProcessConfigureRxpFilterReq*/
14999
15000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015003
15004 @param pWDICtx: pointer to the WLAN DAL context
15005 pEventData: pointer to the event information structure
15006
Jeff Johnson295189b2012-06-20 16:38:30 -070015007 @see
15008 @return Result of the function call
15009*/
15010WDI_Status
15011WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015012(
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 WDI_ControlBlockType* pWDICtx,
15014 WDI_EventInfoType* pEventData
15015)
15016{
15017 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15018 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015019 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 wpt_uint16 usDataOffset = 0;
15021 wpt_uint16 usSendSize = 0;
15022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15023
15024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015025 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015026 -------------------------------------------------------------------------*/
15027 if (( NULL == pEventData ) ||
15028 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15029 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15030 {
15031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 }
15036
15037 /*-----------------------------------------------------------------------
15038 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15043 &pSendBuffer, &usDataOffset, &usSendSize))||
15044 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15045 {
15046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015047 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015048 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 }
15052
Jeff Johnsone7245742012-09-05 17:12:55 -070015053 wpalMemoryCopy( pSendBuffer+usDataOffset,
15054 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15055 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15056 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15057 &pwdiBeaconFilterParams->aFilters[0],
15058 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015059
15060 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015061 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015062
15063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015064 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015066 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15067 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015068}/*WDI_ProcessSetBeaconFilterReq*/
15069
15070/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015071 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015073
15074 @param pWDICtx: pointer to the WLAN DAL context
15075 pEventData: pointer to the event information structure
15076
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 @see
15078 @return Result of the function call
15079*/
15080WDI_Status
15081WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015082(
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 WDI_ControlBlockType* pWDICtx,
15084 WDI_EventInfoType* pEventData
15085)
15086{
15087 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15088 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015089 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 wpt_uint16 usDataOffset = 0;
15091 wpt_uint16 usSendSize = 0;
15092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15093
15094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015096 -------------------------------------------------------------------------*/
15097 if (( NULL == pEventData ) ||
15098 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15099 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15100 {
15101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015102 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015105 }
15106
15107 /*-----------------------------------------------------------------------
15108 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015112 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15113 &pSendBuffer, &usDataOffset, &usSendSize))||
15114 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15115 {
15116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015117 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015118 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015121 }
15122
Jeff Johnsone7245742012-09-05 17:12:55 -070015123 wpalMemoryCopy( pSendBuffer+usDataOffset,
15124 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15125 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015126
15127 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015128 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015129
15130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015131 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15134 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015135}
15136
15137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015138 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015140
15141 @param pWDICtx: pointer to the WLAN DAL context
15142 pEventData: pointer to the event information structure
15143
Jeff Johnson295189b2012-06-20 16:38:30 -070015144 @see
15145 @return Result of the function call
15146*/
15147WDI_Status
15148WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015149(
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 WDI_ControlBlockType* pWDICtx,
15151 WDI_EventInfoType* pEventData
15152)
15153{
15154 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15155 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015156 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015157 wpt_uint16 usDataOffset = 0;
15158 wpt_uint16 usSendSize = 0;
15159 tHalRSSIThresholds rssiThresholdsReq;
15160 WDI_Status ret_status = 0;
15161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15162
15163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 -------------------------------------------------------------------------*/
15166 if (( NULL == pEventData ) ||
15167 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15168 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15169 {
15170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 }
15175
15176 /*-----------------------------------------------------------------------
15177 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 sizeof(rssiThresholdsReq),
15182 &pSendBuffer, &usDataOffset, &usSendSize))||
15183 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15184 {
15185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015186 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 }
15191
Jeff Johnsone7245742012-09-05 17:12:55 -070015192 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015197 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015198 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015200 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015202 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015203 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015204 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015206 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015207 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015210 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15212
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 wpalMemoryCopy( pSendBuffer+usDataOffset,
15214 &rssiThresholdsReq,
15215 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015216
15217 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015219
15220 /*-------------------------------------------------------------------------
15221 Send Set threshold req to HAL
15222 -------------------------------------------------------------------------*/
15223 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15224 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15225 {
15226 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15227 // req. Then as a result of processing the threshold cross ind, we trigger
15228 // a Set threshold req, then we need to indicate to WDI that it needs to
15229 // go to busy state as a result of the indication as we sent a req in the
15230 // same WDI context.
15231 // Hence expected state transition is to busy.
15232 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15233 }
15234
15235 return ret_status;
15236}
15237
15238/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015239 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015240 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015241
15242 @param pWDICtx: pointer to the WLAN DAL context
15243 pEventData: pointer to the event information structure
15244
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 @see
15246 @return Result of the function call
15247*/
15248WDI_Status
15249WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015250(
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 WDI_ControlBlockType* pWDICtx,
15252 WDI_EventInfoType* pEventData
15253)
15254{
15255 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15256 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015257 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 wpt_uint16 usDataOffset = 0;
15259 wpt_uint16 usSendSize = 0;
15260 tHalHostOffloadReq hostOffloadParams;
15261 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015262 wpt_uint8 ucCurrentBSSSesIdx = 0;
15263 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015264
15265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15266
15267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 -------------------------------------------------------------------------*/
15270 if (( NULL == pEventData ) ||
15271 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15272 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15273 {
15274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015277 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 }
15279
15280 /*-----------------------------------------------------------------------
15281 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015283 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015285 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15286 &pSendBuffer, &usDataOffset, &usSendSize))||
15287 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15288 {
15289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015290 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15292 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015293 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 }
15295
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015296 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15297 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15298 &pBSSSes);
15299 if ( NULL == pBSSSes )
15300 {
c_hpothu86feba52014-10-28 15:51:18 +053015301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015302 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15303 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015304 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015305 }
15306
Jeff Johnson295189b2012-06-20 16:38:30 -070015307 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15308 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015309
Jeff Johnson295189b2012-06-20 16:38:30 -070015310 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15311 {
15312 // ARP Offload
15313 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15314 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15315 4);
15316 }
15317 else
15318 {
15319 // NS Offload
15320 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15321 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15322 16);
15323
15324#ifdef WLAN_NS_OFFLOAD
15325 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15326 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15327 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15328 16);
15329 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15330 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15331 16);
15332 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15333 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15334 16);
15335 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15336 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15337 16);
15338 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15339 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15340 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015341 nsOffloadParams.srcIPv6AddrValid =
15342 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15343
15344 nsOffloadParams.targetIPv6Addr1Valid =
15345 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15346
15347 nsOffloadParams.targetIPv6Addr2Valid =
15348 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15349
15350 nsOffloadParams.slotIndex =
15351 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015352
Jeff Johnson295189b2012-06-20 16:38:30 -070015353#endif // WLAN_NS_OFFLOAD
15354 }
15355
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015356 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15357
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 // copy hostOffloadParams into pSendBuffer
15359 wpalMemoryCopy( pSendBuffer+usDataOffset,
15360 &hostOffloadParams,
15361 sizeof(hostOffloadParams));
15362
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015363 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015365 // copy nsOffloadParams into pSendBuffer
15366 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 &nsOffloadParams,
15368 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015369 }
15370 else
15371 {
15372#ifdef WLAN_NS_OFFLOAD
15373 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15374 {
15375 // copy nsOffloadParams into pSendBuffer
15376 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15377 &nsOffloadParams,
15378 sizeof(nsOffloadParams));
15379 }
15380#endif
15381 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015382
15383 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015384 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015385
15386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015387 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15390 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015391
15392fail:
15393 // Release the message buffer so we don't leak
15394 wpalMemoryFree(pSendBuffer);
15395
15396failRequest:
15397 //WDA should have failure check to avoid the memory leak
15398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015399}/*WDI_ProcessHostOffloadReq*/
15400
15401/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015402 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015403 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015404
15405 @param pWDICtx: pointer to the WLAN DAL context
15406 pEventData: pointer to the event information structure
15407
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 @see
15409 @return Result of the function call
15410*/
15411WDI_Status
15412WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015413(
Jeff Johnson295189b2012-06-20 16:38:30 -070015414 WDI_ControlBlockType* pWDICtx,
15415 WDI_EventInfoType* pEventData
15416)
15417{
15418 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15419 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015420 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 wpt_uint16 usDataOffset = 0;
15422 wpt_uint16 usSendSize = 0;
15423 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015424 wpt_uint8 ucCurrentBSSSesIdx = 0;
15425 WDI_BSSSessionType* pBSSSes = NULL;
15426
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15428
15429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 -------------------------------------------------------------------------*/
15432 if (( NULL == pEventData ) ||
15433 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15434 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15435 {
15436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15437 "Invalid parameters in Keep Alive req");
15438 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015439 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 }
15441
15442 /*-----------------------------------------------------------------------
15443 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015444 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 sizeof(keepAliveReq),
15448 &pSendBuffer, &usDataOffset, &usSendSize))||
15449 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15450 {
15451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015452 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015453 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15454 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015455 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 }
15457
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015458 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15459 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15460 &pBSSSes);
15461 if ( NULL == pBSSSes )
15462 {
15463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015464 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015465 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015466 }
15467
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15469 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15470
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015471 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015472
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15474 {
15475 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15476 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15477 HAL_IPV4_ADDR_LEN);
15478 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15479 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015480 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 wpalMemoryCopy(keepAliveReq.destMacAddr,
15482 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15483 HAL_MAC_ADDR_LEN);
15484 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015485
15486 wpalMemoryCopy( pSendBuffer+usDataOffset,
15487 &keepAliveReq,
15488 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015489
15490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015491 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015492
15493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015494 "Process keep alive req time period %d",
15495 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015496
15497 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015498 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015499
15500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15501 "Sending keep alive req to HAL");
15502
15503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15507 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015508
15509fail:
15510 // Release the message buffer so we don't leak
15511 wpalMemoryFree(pSendBuffer);
15512
15513failRequest:
15514 //WDA should have failure check to avoid the memory leak
15515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015516}/*WDI_ProcessKeepAliveReq*/
15517
15518
15519/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015520 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015521 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015522
15523 @param pWDICtx: pointer to the WLAN DAL context
15524 pEventData: pointer to the event information structure
15525
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 @see
15527 @return Result of the function call
15528*/
15529WDI_Status
15530WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015531(
Jeff Johnson295189b2012-06-20 16:38:30 -070015532 WDI_ControlBlockType* pWDICtx,
15533 WDI_EventInfoType* pEventData
15534)
15535{
15536 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15537 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015539 wpt_uint16 usDataOffset = 0;
15540 wpt_uint16 usSendSize = 0;
15541 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015542 wpt_uint8 ucCurrentBSSSesIdx = 0;
15543 WDI_BSSSessionType* pBSSSes = NULL;
15544
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15546
15547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 -------------------------------------------------------------------------*/
15550 if (( NULL == pEventData ) ||
15551 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15552 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15553 {
15554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015557 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 }
15559
15560 /*-----------------------------------------------------------------------
15561 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015562 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 sizeof(wowlAddBcPtrnReq),
15566 &pSendBuffer, &usDataOffset, &usSendSize))||
15567 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15568 {
15569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015570 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15572 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015573 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 }
15575
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015576 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15577 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15578 &pBSSSes);
15579 if ( NULL == pBSSSes )
15580 {
15581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015582 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015583 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015584 }
15585
Jeff Johnsone7245742012-09-05 17:12:55 -070015586 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015588 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015589 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015590 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015592 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015593 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15594
15595 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15596 {
15597 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15598 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15599 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15600 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15601 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15602 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15603 }
15604 else
15605 {
15606 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15607 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15608 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15609 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15610 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15611 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15612
15613 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15614 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15615 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15616 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15617 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15618 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15619 }
15620
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015621 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15622
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 wpalMemoryCopy( pSendBuffer+usDataOffset,
15624 &wowlAddBcPtrnReq,
15625 sizeof(wowlAddBcPtrnReq));
15626
15627 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015629
15630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015631 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15634 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015635fail:
15636 // Release the message buffer so we don't leak
15637 wpalMemoryFree(pSendBuffer);
15638
15639failRequest:
15640 //WDA should have failure check to avoid the memory leak
15641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015642}/*WDI_ProcessWowlAddBcPtrnReq*/
15643
15644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015647
15648 @param pWDICtx: pointer to the WLAN DAL context
15649 pEventData: pointer to the event information structure
15650
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 @see
15652 @return Result of the function call
15653*/
15654WDI_Status
15655WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015656(
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 WDI_ControlBlockType* pWDICtx,
15658 WDI_EventInfoType* pEventData
15659)
15660{
15661 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15662 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 wpt_uint16 usDataOffset = 0;
15665 wpt_uint16 usSendSize = 0;
15666 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015667 wpt_uint8 ucCurrentBSSSesIdx = 0;
15668 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15670
15671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 -------------------------------------------------------------------------*/
15674 if (( NULL == pEventData ) ||
15675 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15676 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15677 {
15678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015679 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015681 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 }
15683
15684 /*-----------------------------------------------------------------------
15685 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 sizeof(wowlDelBcPtrnReq),
15690 &pSendBuffer, &usDataOffset, &usSendSize))||
15691 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15692 {
15693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015694 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15696 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015697 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015698 }
15699
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015700 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15701 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15702 &pBSSSes);
15703 if ( NULL == pBSSSes )
15704 {
15705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015706 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015707 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015708 }
15709
Jeff Johnsone7245742012-09-05 17:12:55 -070015710 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015712
15713 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15714
Jeff Johnsone7245742012-09-05 17:12:55 -070015715 wpalMemoryCopy( pSendBuffer+usDataOffset,
15716 &wowlDelBcPtrnReq,
15717 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015718
15719 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015720 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015721
15722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015725 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15726 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015727
15728fail:
15729 // Release the message buffer so we don't leak
15730 wpalMemoryFree(pSendBuffer);
15731
15732failRequest:
15733 //WDA should have failure check to avoid the memory leak
15734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015735}/*WDI_ProcessWowlDelBcPtrnReq*/
15736
15737/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015739 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015740
15741 @param pWDICtx: pointer to the WLAN DAL context
15742 pEventData: pointer to the event information structure
15743
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 @see
15745 @return Result of the function call
15746*/
15747WDI_Status
15748WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015749(
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 WDI_ControlBlockType* pWDICtx,
15751 WDI_EventInfoType* pEventData
15752)
15753{
15754 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15755 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015756 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015757 wpt_uint16 usDataOffset = 0;
15758 wpt_uint16 usSendSize = 0;
15759 tHalWowlEnterParams wowlEnterReq;
15760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15761
15762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015763 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 -------------------------------------------------------------------------*/
15765 if (( NULL == pEventData ) ||
15766 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15767 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15768 {
15769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015770 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015773 }
15774
15775 /*-----------------------------------------------------------------------
15776 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 sizeof(wowlEnterReq),
15781 &pSendBuffer, &usDataOffset, &usSendSize))||
15782 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15783 {
15784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015785 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 }
15790
Kumar Anandaca924e2013-07-22 14:35:34 -070015791 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15792
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015803 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015805 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15809
15810#ifdef WLAN_WAKEUP_EVENTS
15811 wowlEnterReq.ucWoWEAPIDRequestEnable =
15812 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15813
15814 wowlEnterReq.ucWoWEAPOL4WayEnable =
15815 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15816
15817 wowlEnterReq.ucWowNetScanOffloadMatch =
15818 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15819
15820 wowlEnterReq.ucWowGTKRekeyError =
15821 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15822
15823 wowlEnterReq.ucWoWBSSConnLoss =
15824 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15825#endif // WLAN_WAKEUP_EVENTS
15826
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015827 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15828
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15830 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15831 sizeof(tSirMacAddr));
15832
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 wpalMemoryCopy( pSendBuffer+usDataOffset,
15834 &wowlEnterReq,
15835 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015836
15837 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015838 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015839
15840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15844 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015845}/*WDI_ProcessWowlEnterReq*/
15846
15847/**
15848 @brief Process Wowl exit Request function (called when Main FSM
15849 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015850
15851 @param pWDICtx: pointer to the WLAN DAL context
15852 pEventData: pointer to the event information structure
15853
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 @see
15855 @return Result of the function call
15856*/
15857WDI_Status
15858WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015859(
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 WDI_ControlBlockType* pWDICtx,
15861 WDI_EventInfoType* pEventData
15862)
15863{
15864 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015865 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 wpt_uint16 usDataOffset = 0;
15868 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015869 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15871
15872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 -------------------------------------------------------------------------*/
15875 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015876 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015877 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15878 {
15879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 }
15884
15885 /*-----------------------------------------------------------------------
15886 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015890 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015892 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 {
15894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015895 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 pEventData, wdiWowlExitCb);
15897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 }
15900
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015901 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15902
15903 wpalMemoryCopy( pSendBuffer+usDataOffset,
15904 &wowlExitparams,
15905 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015907 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015908 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015909 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15910 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015911}/*WDI_ProcessWowlExitReq*/
15912
15913/**
15914 @brief Process Configure Apps Cpu Wakeup State Request function
15915 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015916
15917 @param pWDICtx: pointer to the WLAN DAL context
15918 pEventData: pointer to the event information structure
15919
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 @see
15921 @return Result of the function call
15922*/
15923WDI_Status
15924WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015925(
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 WDI_ControlBlockType* pWDICtx,
15927 WDI_EventInfoType* pEventData
15928)
15929{
15930 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15931 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015932 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015933 wpt_uint16 usDataOffset = 0;
15934 wpt_uint16 usSendSize = 0;
15935 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15937
15938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 -------------------------------------------------------------------------*/
15941 if (( NULL == pEventData ) ||
15942 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15943 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15944 {
15945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 }
15950
15951 /*-----------------------------------------------------------------------
15952 Get message buffer
15953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015954 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015955 sizeof(halCfgAppsCpuWakeupStateReqParams),
15956 &pSendBuffer, &usDataOffset, &usSendSize))||
15957 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15958 {
15959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015960 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015961 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015964 }
15965
Jeff Johnsone7245742012-09-05 17:12:55 -070015966 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015967 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15968
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 wpalMemoryCopy( pSendBuffer+usDataOffset,
15970 &halCfgAppsCpuWakeupStateReqParams,
15971 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015972
15973 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015974 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015975
15976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015979 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15980 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15981 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015982}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15983
15984#ifdef WLAN_FEATURE_VOWIFI_11R
15985/**
15986 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15987 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015988
15989 @param pWDICtx: pointer to the WLAN DAL context
15990 pEventData: pointer to the event information structure
15991
Jeff Johnson295189b2012-06-20 16:38:30 -070015992 @see
15993 @return Result of the function call
15994*/
15995WDI_Status
15996WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015997(
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 WDI_ControlBlockType* pWDICtx,
15999 WDI_EventInfoType* pEventData
16000)
16001{
16002 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16003 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016004 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016006 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 wpt_uint16 usDataOffset = 0;
16008 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 wpt_macAddr macBSSID;
16011 tAggrAddTsReq halAggrAddTsReq;
16012 int i;
16013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16014
16015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016016 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 -------------------------------------------------------------------------*/
16018 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16019 ( NULL == pEventData->pCBfnc ))
16020 {
16021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016022 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016025 }
16026 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16027 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16028 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16029 /*-------------------------------------------------------------------------
16030 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016031 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016032 -------------------------------------------------------------------------*/
16033 wpalMutexAcquire(&pWDICtx->wptMutex);
16034
16035 /*------------------------------------------------------------------------
16036 Find the BSS for which the request is made and identify WDI session
16037 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016038 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16039 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 &macBSSID))
16041 {
16042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016043 "This station does not exist in the WDI Station Table %d",
16044 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016047 }
16048
Jeff Johnsone7245742012-09-05 17:12:55 -070016049 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16050 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16053 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16054 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016055
16056 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016057 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016058 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016059
Jeff Johnson295189b2012-06-20 16:38:30 -070016060 /*------------------------------------------------------------------------
16061 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016062 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016063 ------------------------------------------------------------------------*/
16064 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16065 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16067 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16068 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016069
Jeff Johnsone7245742012-09-05 17:12:55 -070016070 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016071 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016072 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 }
16074
16075 wpalMutexRelease(&pWDICtx->wptMutex);
16076 /*-----------------------------------------------------------------------
16077 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016078 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016079 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016080 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016081 sizeof(tAggrAddTsParams),
16082 &pSendBuffer, &usDataOffset, &usSendSize))||
16083 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16084 {
16085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016086 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16088 WDI_ASSERT(0);
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 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016093 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016095 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16096
16097 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16098 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016103 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016104 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16105 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016106 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16108 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016109 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016110 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16111 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016112 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016113 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16114 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16117 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016118 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016119 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16120 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16123 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016124 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16126 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016127 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016129 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016131
16132
16133 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016137 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016138 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016141 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016144 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016145 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016146 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016153 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016154 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016157 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16163 }
16164
Jeff Johnsone7245742012-09-05 17:12:55 -070016165 wpalMemoryCopy( pSendBuffer+usDataOffset,
16166 &halAggrAddTsReq,
16167 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016168
16169 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016171
16172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016173 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016177 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016178}/*WDI_ProcessAggrAddTSpecReq*/
16179#endif /* WLAN_FEATURE_VOWIFI_11R */
16180
16181/**
16182 @brief Process Shutdown Request function (called when Main FSM
16183 allows it)
16184
16185 @param pWDICtx: pointer to the WLAN DAL context
16186 pEventData: pointer to the event information structure
16187
16188 @see
16189 @return Result of the function call
16190*/
16191WDI_Status
16192WDI_ProcessShutdownReq
16193(
16194 WDI_ControlBlockType* pWDICtx,
16195 WDI_EventInfoType* pEventData
16196 )
16197{
16198 wpt_status wptStatus;
16199
16200
16201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16202
16203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 -------------------------------------------------------------------------*/
16206 if ( NULL == pEventData )
16207 {
16208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 WDI_ASSERT(0);
16211 return WDI_STATUS_E_FAILURE;
16212 }
16213
16214 wpalMutexAcquire(&pWDICtx->wptMutex);
16215
16216
16217 gWDIInitialized = eWLAN_PAL_FALSE;
16218 /*! TO DO: stop the data services */
16219 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16220 {
16221 /*Stop the STA Table !UT- check this logic again
16222 It is safer to do it here than on the response - because a stop is imminent*/
16223 WDI_STATableStop(pWDICtx);
16224
16225 /* Stop Transport Driver, DXE */
16226 WDTS_Stop(pWDICtx);
16227 }
16228
16229 /*Clear all pending request*/
16230 WDI_ClearPendingRequests(pWDICtx);
16231 /* Close Data transport*/
16232 /* FTM mode does not open Data Path */
16233 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16234 {
16235 WDTS_Close(pWDICtx);
16236 }
16237 /*Close the STA Table !UT- check this logic again*/
16238 WDI_STATableClose(pWDICtx);
16239 /*close the PAL */
16240 wptStatus = wpalClose(pWDICtx->pPALContext);
16241 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16242 {
16243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16244 "Failed to wpal Close %d", wptStatus);
16245 WDI_ASSERT(0);
16246 }
16247
16248 /*Transition back to init state*/
16249 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16250
16251 wpalMutexRelease(&pWDICtx->wptMutex);
16252
16253 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016254 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016255
16256
Jeff Johnsone7245742012-09-05 17:12:55 -070016257 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016258}/*WDI_ProcessShutdownReq*/
16259
16260/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016261 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016262========================================================================*/
16263
16264/**
16265 @brief Process Start Response function (called when a response
16266 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016267
16268 @param pWDICtx: pointer to the WLAN DAL context
16269 pEventData: pointer to the event information structure
16270
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 @see
16272 @return Result of the function call
16273*/
16274WDI_Status
16275WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016276(
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 WDI_ControlBlockType* pWDICtx,
16278 WDI_EventInfoType* pEventData
16279)
16280{
16281 WDI_StartRspParamsType wdiRspParams;
16282 WDI_StartRspCb wdiStartRspCb = NULL;
16283
16284 tHalMacStartRspParams* startRspParams;
16285
16286#ifndef HAL_SELF_STA_PER_BSS
16287 WDI_AddStaParams wdiAddSTAParam = {0};
16288#endif
16289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16290
Jeff Johnsone7245742012-09-05 17:12:55 -070016291 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 -------------------------------------------------------------------------*/
16295 if (( NULL == pEventData ) ||
16296 ( NULL == pEventData->pEventData) ||
16297 ( NULL == wdiStartRspCb ))
16298 {
16299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016303 }
16304
16305 /*-------------------------------------------------------------------------
16306 Extract response and send it to UMAC
16307 -------------------------------------------------------------------------*/
16308 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16309 {
16310 // not enough data was received
16311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016312 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 }
16317
16318 /*-------------------------------------------------------------------------
16319 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 -------------------------------------------------------------------------*/
16322 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16323
16324 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16325 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16326 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16327 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16328 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16329 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16330 wdiRspParams.wlanReportedVersion.major =
16331 startRspParams->wcnssWlanVersion.major;
16332 wdiRspParams.wlanReportedVersion.minor =
16333 startRspParams->wcnssWlanVersion.minor;
16334 wdiRspParams.wlanReportedVersion.version =
16335 startRspParams->wcnssWlanVersion.version;
16336 wdiRspParams.wlanReportedVersion.revision =
16337 startRspParams->wcnssWlanVersion.revision;
16338 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16339 startRspParams->wcnssCrmVersionString,
16340 sizeof(wdiRspParams.wcnssSoftwareVersion));
16341 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16342 startRspParams->wcnssWlanVersionString,
16343 sizeof(wdiRspParams.wcnssHardwareVersion));
16344 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16345
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016346 /*Save the HAL Version*/
16347 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16348
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 wpalMutexAcquire(&pWDICtx->wptMutex);
16350 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16351 {
16352 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16353
16354 /*Cache the start response for further use*/
16355 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016356 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016357 sizeof(pWDICtx->wdiCachedStartRspParams));
16358
16359 }
16360 else
16361 {
16362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16363 "Failed to start device with status %s(%d)",
16364 WDI_getHALStatusMsgString(startRspParams->status),
16365 startRspParams->status);
16366
16367 /*Set the expected state transition to stopped - because the start has
16368 failed*/
16369 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16370
16371 wpalMutexRelease(&pWDICtx->wptMutex);
16372
16373 /*Notify UMAC*/
16374 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016375
Jeff Johnson295189b2012-06-20 16:38:30 -070016376 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016377 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016378
16379 /*Although the response is an error - it was processed by our function
16380 so as far as the caller is concerned this is a succesful reponse processing*/
16381 return WDI_STATUS_SUCCESS;
16382 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016383
Jeff Johnson295189b2012-06-20 16:38:30 -070016384 wpalMutexRelease(&pWDICtx->wptMutex);
16385
16386 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16387 {
16388 /* FTM mode does not need to execute below */
16389 /* Notify UMAC */
16390 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16391 return WDI_STATUS_SUCCESS;
16392 }
16393
16394 /* START the Data transport */
16395 WDTS_startTransport(pWDICtx);
16396
16397 /*Start the STA Table !- check this logic again*/
16398 WDI_STATableStart(pWDICtx);
16399
16400#ifndef HAL_SELF_STA_PER_BSS
16401 /* Store the Self STA Index */
16402 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16403
16404 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16405 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16406 WDI_MAC_ADDR_LEN);
16407
16408 /* At this point add the self-STA */
16409
16410 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16411 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16412 /*! TO DO: wdiAddSTAParam.dpuSig */
16413 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16414 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16415 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16416
16417 //all DPU indices are the same for self STA
16418 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16419 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016420 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16422 WDI_MAC_ADDR_LEN);
16423 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16424 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16425
16426 /* Note: Since we don't get an explicit config STA request for self STA, we
16427 add the self STA upon receiving the Start response message. But the
16428 self STA entry in the table is deleted when WDI gets an explicit delete STA
16429 request */
16430 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16431#endif
16432
16433 /*Notify UMAC*/
16434 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16435
Jeff Johnsone7245742012-09-05 17:12:55 -070016436 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016437}/*WDI_ProcessStartRsp*/
16438
16439
16440/**
16441 @brief Process Stop Response function (called when a response
16442 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016443
16444 @param pWDICtx: pointer to the WLAN DAL context
16445 pEventData: pointer to the event information structure
16446
Jeff Johnson295189b2012-06-20 16:38:30 -070016447 @see
16448 @return Result of the function call
16449*/
16450WDI_Status
16451WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016452(
Jeff Johnson295189b2012-06-20 16:38:30 -070016453 WDI_ControlBlockType* pWDICtx,
16454 WDI_EventInfoType* pEventData
16455)
16456{
16457 WDI_Status wdiStatus;
16458 WDI_StopRspCb wdiStopRspCb = NULL;
16459
Jeff Johnsone7245742012-09-05 17:12:55 -070016460 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16462
Jeff Johnsone7245742012-09-05 17:12:55 -070016463 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016466 -------------------------------------------------------------------------*/
16467 if (( NULL == pEventData ) ||
16468 ( NULL == pEventData->pEventData) ||
16469 ( NULL == wdiStopRspCb ))
16470 {
16471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016475 }
16476
16477 /*-------------------------------------------------------------------------
16478 Extract response and send it to UMAC
16479 -------------------------------------------------------------------------*/
16480 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16481 {
16482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016483 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 pEventData->uEventDataSize);
16485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 }
16488
16489 /*-------------------------------------------------------------------------
16490 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016491 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016493 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16494 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016495 sizeof(halMacStopRspMsg.stopRspParams));
16496
Jeff Johnsone7245742012-09-05 17:12:55 -070016497 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016498
16499 wpalMutexAcquire(&pWDICtx->wptMutex);
16500
16501 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016502 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016503 --------------------------------------------------------------------------*/
16504 if ( WDI_STATUS_SUCCESS != wdiStatus )
16505 {
16506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16507 "Failed to stop the device with status %s (%d)",
16508 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16509 halMacStopRspMsg.stopRspParams.status);
16510
Jeff Johnsone7245742012-09-05 17:12:55 -070016511 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016512 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016513
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016517
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16519
16520 /*Transition now as WDI may get preempted imediately after it sends
16521 up the Stop Response and it will not get to process the state transition
16522 from Main Rsp function*/
16523 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16524 wpalMutexRelease(&pWDICtx->wptMutex);
16525
16526 /*! TO DO: - STOP the Data transport */
16527
16528 /*Notify UMAC*/
16529 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16530
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016532}/*WDI_ProcessStopRsp*/
16533
16534/**
16535 @brief Process Close Rsp function (called when a response
16536 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016537
16538 @param pWDICtx: pointer to the WLAN DAL context
16539 pEventData: pointer to the event information structure
16540
Jeff Johnson295189b2012-06-20 16:38:30 -070016541 @see
16542 @return Result of the function call
16543*/
16544WDI_Status
16545WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016546(
Jeff Johnson295189b2012-06-20 16:38:30 -070016547 WDI_ControlBlockType* pWDICtx,
16548 WDI_EventInfoType* pEventData
16549)
16550{
16551 /*There is no close response comming from HAL - function just kept for
16552 simmetry */
16553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016554 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016555}/*WDI_ProcessCloseRsp*/
16556
16557
16558/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016559 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016560============================================================================*/
16561
16562/**
16563 @brief Process Init Scan Rsp function (called when a response
16564 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016565
16566 @param pWDICtx: pointer to the WLAN DAL context
16567 pEventData: pointer to the event information structure
16568
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 @see
16570 @return Result of the function call
16571*/
16572WDI_Status
16573WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016574(
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 WDI_ControlBlockType* pWDICtx,
16576 WDI_EventInfoType* pEventData
16577)
16578{
16579 WDI_Status wdiStatus;
16580 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016582 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16584
16585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016587 -------------------------------------------------------------------------*/
16588 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16589 ( NULL == pEventData->pEventData))
16590 {
16591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016595 }
16596
16597 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16598 if( NULL == wdiInitScanRspCb)
16599 {
16600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016601 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016604 }
16605
16606 /*-------------------------------------------------------------------------
16607 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016608 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16611 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016612 sizeof(halInitScanRspMsg.initScanRspParams));
16613
Jeff Johnsone7245742012-09-05 17:12:55 -070016614 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016615
16616 if ( pWDICtx->bInBmps )
16617 {
16618 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016619 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16620 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016622 "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 -080016623 WDI_ASSERT(0);
16624 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016625 }
16626
16627 /*Notify UMAC*/
16628 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16629
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016631}/*WDI_ProcessInitScanRsp*/
16632
16633
16634/**
16635 @brief Process Start Scan Rsp function (called when a response
16636 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016637
16638 @param pWDICtx: pointer to the WLAN DAL context
16639 pEventData: pointer to the event information structure
16640
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 @see
16642 @return Result of the function call
16643*/
16644WDI_Status
16645WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016646(
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 WDI_ControlBlockType* pWDICtx,
16648 WDI_EventInfoType* pEventData
16649)
16650{
16651 WDI_StartScanRspParamsType wdiStartScanParams;
16652 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016653
16654 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16656
16657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 -------------------------------------------------------------------------*/
16660 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16661 ( NULL == pEventData->pEventData))
16662 {
16663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016664 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 }
16668
16669 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16670 if( NULL == wdiStartScanRspCb)
16671 {
16672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016673 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 }
16677
16678 /*-------------------------------------------------------------------------
16679 Extract response and send it to UMAC
16680 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016681 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16682 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 sizeof(halStartScanRspMsg.startScanRspParams));
16684
16685 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16686 halStartScanRspMsg.startScanRspParams.status);
16687#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016690 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016691 halStartScanRspMsg.startScanRspParams.startTSF,
16692 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016693#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016694
16695 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16696 {
16697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16698 "Start scan failed with status %s (%d)",
16699 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16700 halStartScanRspMsg.startScanRspParams.status);
16701 /* send the status to UMAC, don't return from here*/
16702 }
16703
16704 /*Notify UMAC*/
16705 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16706
Jeff Johnsone7245742012-09-05 17:12:55 -070016707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016708
16709}/*WDI_ProcessStartScanRsp*/
16710
16711
16712/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016713 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016714 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016715
16716 @param pWDICtx: pointer to the WLAN DAL context
16717 pEventData: pointer to the event information structure
16718
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 @see
16720 @return Result of the function call
16721*/
16722WDI_Status
16723WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016724(
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 WDI_ControlBlockType* pWDICtx,
16726 WDI_EventInfoType* pEventData
16727)
16728{
16729 WDI_Status wdiStatus;
16730 tHalEndScanRspMsg halEndScanRspMsg;
16731 WDI_EndScanRspCb wdiEndScanRspCb;
16732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16733
16734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 -------------------------------------------------------------------------*/
16737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16738 ( NULL == pEventData->pEventData))
16739 {
16740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 }
16745
16746 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16747
16748 /*-------------------------------------------------------------------------
16749 Extract response and send it to UMAC
16750 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016751 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16752 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016753 sizeof(halEndScanRspMsg.endScanRspParams));
16754
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016756
16757 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16758 {
16759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16760 "End Scan failed with status %s (%d )",
16761 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16762 halEndScanRspMsg.endScanRspParams.status);
16763 /* send the status to UMAC, don't return from here*/
16764 }
16765
16766 /*Notify UMAC*/
16767 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16768
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016770}/*WDI_ProcessEndScanRsp*/
16771
16772
16773/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016775 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016776
16777 @param pWDICtx: pointer to the WLAN DAL context
16778 pEventData: pointer to the event information structure
16779
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 @see
16781 @return Result of the function call
16782*/
16783WDI_Status
16784WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016785(
Jeff Johnson295189b2012-06-20 16:38:30 -070016786 WDI_ControlBlockType* pWDICtx,
16787 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016788)
Jeff Johnson295189b2012-06-20 16:38:30 -070016789{
16790 WDI_Status wdiStatus;
16791 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016792
16793 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16795
16796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 -------------------------------------------------------------------------*/
16799 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16800 ( NULL == pEventData->pEventData))
16801 {
16802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 }
16807
16808 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16809
16810 /*-------------------------------------------------------------------------
16811 Extract response and send it to UMAC
16812 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016813 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16814 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016815 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16816
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016818
16819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016820 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016821 halFinishScanRspMsg.finishScanRspParams.status);
16822
16823 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16824 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16825 {
16826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16827 "Finish Scan failed with status %s (%d)",
16828 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16829 halFinishScanRspMsg.finishScanRspParams.status);
16830 /* send the status to UMAC, don't return from here*/
16831 }
16832
16833 /*Notify UMAC*/
16834 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16835
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016837}/*WDI_ProcessFinishScanRsp*/
16838
16839/**
16840 @brief Process Join Response function (called when a response
16841 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016842
16843 @param pWDICtx: pointer to the WLAN DAL context
16844 pEventData: pointer to the event information structure
16845
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 @see
16847 @return Result of the function call
16848*/
16849WDI_Status
16850WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016851(
Jeff Johnson295189b2012-06-20 16:38:30 -070016852 WDI_ControlBlockType* pWDICtx,
16853 WDI_EventInfoType* pEventData
16854)
16855{
16856 WDI_Status wdiStatus;
16857 WDI_JoinRspCb wdiJoinRspCb;
16858 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016859
16860 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16862
16863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 -------------------------------------------------------------------------*/
16866 if (( NULL == pWDICtx ) ||
16867 ( NULL == pWDICtx->pfncRspCB ) ||
16868 ( NULL == pEventData ) ||
16869 ( NULL == pEventData->pEventData))
16870 {
16871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016875 }
16876
16877 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16878
16879 /*-------------------------------------------------------------------------
16880 Extract response and send it to UMAC
16881 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016882 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16883 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 sizeof(halJoinRspMsg.joinRspParams));
16885
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016887
16888 wpalMutexAcquire(&pWDICtx->wptMutex);
16889
16890 /*-----------------------------------------------------------------------
16891 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016892 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016893 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16896 {
16897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016898 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16899 "association no longer in progress %d - mysterious HAL response",
16900 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016901
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016904 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 }
16906
16907 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16908
16909 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016910 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 -----------------------------------------------------------------------*/
16912 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16913 {
16914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16915 "Join only allowed in Joining state - failure state is %d "
16916 "strange HAL response", pBSSSes->wdiAssocState);
16917
Jeff Johnsone7245742012-09-05 17:12:55 -070016918 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16919
Jeff Johnson295189b2012-06-20 16:38:30 -070016920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 }
16923
16924
16925 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016926 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 -----------------------------------------------------------------------*/
16928 if ( WDI_STATUS_SUCCESS != wdiStatus )
16929 {
16930 /*Association was failed by HAL - remove session*/
16931 WDI_DeleteSession(pWDICtx, pBSSSes);
16932
16933 /*Association no longer in progress */
16934 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16935
16936 /*Association no longer in progress - prepare pending assoc for processing*/
16937 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016938
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 }
16940 else
16941 {
16942 /*Transition to state Joining - this may be redundant as we are supposed
16943 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016945 }
16946
16947 wpalMutexRelease(&pWDICtx->wptMutex);
16948
16949 /*Notify UMAC*/
16950 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16951
Jeff Johnsone7245742012-09-05 17:12:55 -070016952 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016953}/*WDI_ProcessJoinRsp*/
16954
16955
16956/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016957 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016958 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016959
16960 @param pWDICtx: pointer to the WLAN DAL context
16961 pEventData: pointer to the event information structure
16962
Jeff Johnson295189b2012-06-20 16:38:30 -070016963 @see
16964 @return Result of the function call
16965*/
16966WDI_Status
16967WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016968(
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 WDI_ControlBlockType* pWDICtx,
16970 WDI_EventInfoType* pEventData
16971)
16972{
16973 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16974 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016975 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016976 WDI_BSSSessionType* pBSSSes = NULL;
16977
Jeff Johnsone7245742012-09-05 17:12:55 -070016978 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16980 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016981
Jeff Johnson295189b2012-06-20 16:38:30 -070016982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16983
16984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016986 -------------------------------------------------------------------------*/
16987 if (( NULL == pEventData ) ||
16988 ( NULL == pEventData->pEventData))
16989 {
16990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016994 }
16995
16996 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16997
16998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016999 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017000 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017001 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17002 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017003 sizeof(halConfigBssRspMsg.configBssRspParams));
17004
17005 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17006 halConfigBssRspMsg.configBssRspParams.status);
17007 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17008 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017009 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017010 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17011 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017012
Jeff Johnson295189b2012-06-20 16:38:30 -070017013 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017014
17015 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017016 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017017
17018 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017019 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017020
Jeff Johnson295189b2012-06-20 16:38:30 -070017021 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017022
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017024 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017025 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17026 #endif
17027 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17028 halConfigBssRspMsg.configBssRspParams.staMac,
17029 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017030
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 wpalMutexAcquire(&pWDICtx->wptMutex);
17032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017033 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017035 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17036 wdiConfigBSSParams.macBSSID,
17037 &pBSSSes);
17038
Jeff Johnson295189b2012-06-20 16:38:30 -070017039 /*-----------------------------------------------------------------------
17040 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017042 -----------------------------------------------------------------------*/
17043 if ( NULL == pBSSSes )
17044 {
17045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17046 "Association sequence for this BSS does not yet exist "
17047 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017048
17049 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17050
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017052 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017053 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017054
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 /*Save data for this BSS*/
17056 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17057 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017058 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017059 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017060 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017064 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017065 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017066 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017067 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17068 pBSSSes->bcastStaIdx =
17069 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017070
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017072
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 /*-------------------------------------------------------------------------
17074 Add Peer STA
17075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017076 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17078 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017079
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017081 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 wdiAddSTAParam.ucHTCapable =
17084 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17085 wdiAddSTAParam.ucStaType =
17086 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17087
Jeff Johnson295189b2012-06-20 16:38:30 -070017088 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017089 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17090 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017092
17093 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17094 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17095 WDI_MAC_ADDR_LEN);
17096
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017101 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017102 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017104 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017105 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017106 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017107 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017108 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017109 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017110
Jeff Johnson295189b2012-06-20 16:38:30 -070017111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17112 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017113
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17115 /*-------------------------------------------------------------------------
17116 Add Broadcast STA only in AP mode
17117 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017118 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017119 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 {
17121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17122 "Add BCAST STA to table for index: %d",
17123 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017124
17125 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017126 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017127
Jeff Johnson295189b2012-06-20 16:38:30 -070017128 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17129 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17130 }
17131 wpalMutexRelease(&pWDICtx->wptMutex);
17132 }
17133 else
17134 {
17135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17136 "Config BSS RSP failed with status : %s(%d)",
17137 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017138 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 halConfigBssRspMsg.configBssRspParams.status);
17140
Jeff Johnsone7245742012-09-05 17:12:55 -070017141
Jeff Johnson295189b2012-06-20 16:38:30 -070017142 /*Association was failed by HAL - remove session*/
17143 WDI_DeleteSession(pWDICtx, pBSSSes);
17144
17145 /*Association no longer in progress */
17146 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17147
17148 /*Association no longer in progress - prepare pending assoc for processing*/
17149 WDI_DequeueAssocRequest(pWDICtx);
17150
17151 }
17152
17153 /*Notify UMAC*/
17154 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17155
Jeff Johnsone7245742012-09-05 17:12:55 -070017156 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017157}/*WDI_ProcessConfigBSSRsp*/
17158
17159
17160/**
17161 @brief Process Del BSS Response function (called when a response
17162 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017163
17164 @param pWDICtx: pointer to the WLAN DAL context
17165 pEventData: pointer to the event information structure
17166
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 @see
17168 @return Result of the function call
17169*/
17170WDI_Status
17171WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017172(
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 WDI_ControlBlockType* pWDICtx,
17174 WDI_EventInfoType* pEventData
17175)
17176{
17177 WDI_DelBSSRspParamsType wdiDelBSSParams;
17178 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017179 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 WDI_BSSSessionType* pBSSSes = NULL;
17181
Jeff Johnsone7245742012-09-05 17:12:55 -070017182 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17184
17185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017186 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 -------------------------------------------------------------------------*/
17188 if (( NULL == pEventData ) ||
17189 ( NULL == pEventData->pEventData))
17190 {
17191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017192 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017195 }
17196
17197 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17198
17199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017200 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017201 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017202 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17203 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 sizeof(halDelBssRspMsg.deleteBssRspParams));
17205
17206
17207 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017208 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017209
17210 wpalMutexAcquire(&pWDICtx->wptMutex);
17211
17212 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017213 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017214 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017215 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17216 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17217 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017218
17219 /*-----------------------------------------------------------------------
17220 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017221 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017222 -----------------------------------------------------------------------*/
17223 if ( NULL == pBSSSes )
17224 {
17225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17226 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017227 "association no longer in progress - mysterious HAL response");
17228
17229 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17230
17231 wpalMutexRelease(&pWDICtx->wptMutex);
17232 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017234
17235 /*Extract BSSID for the response to UMAC*/
17236 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17237 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17238
17239 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17240
17241 /*-----------------------------------------------------------------------
17242 The current session will be deleted
17243 -----------------------------------------------------------------------*/
17244 WDI_DeleteSession(pWDICtx, pBSSSes);
17245
17246
17247 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017248 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17249 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017251 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017252 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017253
17254 /* Delete the STA's in this BSS */
17255 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17256
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 wpalMutexRelease(&pWDICtx->wptMutex);
17258
17259 /*Notify UMAC*/
17260 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17261
Jeff Johnsone7245742012-09-05 17:12:55 -070017262 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017263}/*WDI_ProcessDelBSSRsp*/
17264
17265/**
17266 @brief Process Post Assoc Rsp function (called when a response
17267 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017268
17269 @param pWDICtx: pointer to the WLAN DAL context
17270 pEventData: pointer to the event information structure
17271
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 @see
17273 @return Result of the function call
17274*/
17275WDI_Status
17276WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017277(
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 WDI_ControlBlockType* pWDICtx,
17279 WDI_EventInfoType* pEventData
17280)
17281{
17282 WDI_PostAssocRspParamsType wdiPostAssocParams;
17283 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017284 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017285 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017286 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17288
17289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017291 -------------------------------------------------------------------------*/
17292 if (( NULL == pEventData ) ||
17293 ( NULL == pEventData->pEventData))
17294 {
17295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017299 }
17300
17301 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17302
17303 /*-------------------------------------------------------------------------
17304 Extract response and send it to UMAC
17305 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017306 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17307 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017308 sizeof(halPostAssocRspMsg.postAssocRspParams));
17309
17310 /*Extract the Post Assoc STA Params */
17311
Jeff Johnsone7245742012-09-05 17:12:55 -070017312 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017313 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017314 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017316 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017317 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17318
Jeff Johnsone7245742012-09-05 17:12:55 -070017319 wdiPostAssocParams.wdiStatus =
17320 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017321
17322 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17323 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017324 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17325 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 WDI_MAC_ADDR_LEN);
17327
17328 /* Extract Post Assoc BSS Params */
17329
Jeff Johnsone7245742012-09-05 17:12:55 -070017330 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17331 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17332 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017333
17334 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17335 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017336 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017337 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17338 .macSTA, WDI_MAC_ADDR_LEN);
17339
Jeff Johnsone7245742012-09-05 17:12:55 -070017340 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017341 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17342
Jeff Johnsone7245742012-09-05 17:12:55 -070017343 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017344 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17345
17346 wdiPostAssocParams.bssParams.ucBSSIdx =
17347 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17348
Jeff Johnsone7245742012-09-05 17:12:55 -070017349 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017350 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17351
17352 wpalMutexAcquire(&pWDICtx->wptMutex);
17353
17354 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017355 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017357 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017358 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017359 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017360
17361 /*-----------------------------------------------------------------------
17362 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017363 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017364 -----------------------------------------------------------------------*/
17365 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017366 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017367 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17368 {
17369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17370 "Association sequence for this BSS does not yet exist or "
17371 "association no longer in progress - mysterious HAL response");
17372
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17374
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017376 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017377 }
17378
17379 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 -----------------------------------------------------------------------*/
17382 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17383 {
17384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17385 "Post Assoc not allowed before JOIN - failing request "
17386 "strange HAL response");
17387
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17389
Jeff Johnson295189b2012-06-20 16:38:30 -070017390 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017391 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017392 }
17393
17394 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017395 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017396 -----------------------------------------------------------------------*/
17397 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17398 {
17399 /*Association was failed by HAL - remove session*/
17400 WDI_DeleteSession(pWDICtx, pBSSSes);
17401 }
17402 else
17403 {
17404 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017405 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017406
17407 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017408 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017409 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017410 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017411 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017412 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017413 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017414 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017415 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17416
Jeff Johnsone7245742012-09-05 17:12:55 -070017417 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17419 }
17420
17421 /*Association no longer in progress */
17422 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17423
17424 /*Association no longer in progress - prepare pending assoc for processing*/
17425 WDI_DequeueAssocRequest(pWDICtx);
17426
17427 wpalMutexRelease(&pWDICtx->wptMutex);
17428
17429 /*Notify UMAC*/
17430 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17431
Jeff Johnsone7245742012-09-05 17:12:55 -070017432 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017433}/*WDI_ProcessPostAssocRsp*/
17434
17435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017438
17439 @param pWDICtx: pointer to the WLAN DAL context
17440 pEventData: pointer to the event information structure
17441
Jeff Johnson295189b2012-06-20 16:38:30 -070017442 @see
17443 @return Result of the function call
17444*/
17445WDI_Status
17446WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017447(
Jeff Johnson295189b2012-06-20 16:38:30 -070017448 WDI_ControlBlockType* pWDICtx,
17449 WDI_EventInfoType* pEventData
17450)
17451{
17452 WDI_DelSTARspParamsType wdiDelSTARsp;
17453 WDI_DelSTARspCb wdiDelSTARspCb;
17454 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017455 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17457
17458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017460 -------------------------------------------------------------------------*/
17461 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17462 ( NULL == pEventData->pEventData))
17463 {
17464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017468 }
17469
17470 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17471
17472 /*-------------------------------------------------------------------------
17473 Extract response and send it to UMAC
17474 -------------------------------------------------------------------------*/
17475 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017476 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017477 sizeof(halDelStaRspMsg.delStaRspParams));
17478
17479 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017480 wdiDelSTARsp.wdiStatus =
17481 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017482
17483 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17484
17485 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17486 if(staType == WDI_STA_ENTRY_SELF)
17487 {
17488 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17489
17490 /* At this point add the self-STA */
17491
17492 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17493 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17494 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17495
17496#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17497#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17498
17499 //all DPU indices are the same for self STA
17500 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17501 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17502 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17503 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17504 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17505 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017506
17507 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017508 }
17509 else
17510 {
17511 //Delete the station in the table
17512 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17513 }
17514
17515 /*Notify UMAC*/
17516 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17517
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017519}/*WDI_ProcessDelSTARsp*/
17520
17521
17522/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017523 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017524==========================================================================*/
17525
17526/**
17527 @brief Process Set BSS Key Rsp function (called when a response
17528 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017529
17530 @param pWDICtx: pointer to the WLAN DAL context
17531 pEventData: pointer to the event information structure
17532
Jeff Johnson295189b2012-06-20 16:38:30 -070017533 @see
17534 @return Result of the function call
17535*/
17536WDI_Status
17537WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017538(
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 WDI_ControlBlockType* pWDICtx,
17540 WDI_EventInfoType* pEventData
17541)
17542{
17543 WDI_Status wdiStatus;
17544 eHalStatus halStatus;
17545 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17547
17548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017550 -------------------------------------------------------------------------*/
17551 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17552 ( NULL == pEventData->pEventData))
17553 {
17554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 }
17559
17560 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17561
17562 /*-------------------------------------------------------------------------
17563 Extract response and send it to UMAC
17564 -------------------------------------------------------------------------*/
17565 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017566 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017567
17568 if ( eHAL_STATUS_SUCCESS != halStatus )
17569 {
17570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17571 "Set BSS Key failed with status %s (%d)",
17572 WDI_getHALStatusMsgString(halStatus),
17573 halStatus);
17574 /* send the status to UMAC, don't return from here*/
17575 }
17576
17577 /*Notify UMAC*/
17578 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17579
Jeff Johnsone7245742012-09-05 17:12:55 -070017580 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017581}/*WDI_ProcessSetBssKeyRsp*/
17582
17583/**
17584 @brief Process Remove BSS Key Rsp function (called when a response
17585 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017586
17587 @param pWDICtx: pointer to the WLAN DAL context
17588 pEventData: pointer to the event information structure
17589
Jeff Johnson295189b2012-06-20 16:38:30 -070017590 @see
17591 @return Result of the function call
17592*/
17593WDI_Status
17594WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017595(
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 WDI_ControlBlockType* pWDICtx,
17597 WDI_EventInfoType* pEventData
17598)
17599{
17600 WDI_Status wdiStatus;
17601 eHalStatus halStatus;
17602 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17604
17605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017607 -------------------------------------------------------------------------*/
17608 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17609 ( NULL == pEventData->pEventData))
17610 {
17611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017615 }
17616
17617 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17618
17619 /*-------------------------------------------------------------------------
17620 Extract response and send it to UMAC
17621 -------------------------------------------------------------------------*/
17622 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017623 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017624
17625 if ( eHAL_STATUS_SUCCESS != halStatus )
17626 {
17627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17628 "Remove BSS Key failed with status %s (%d )",
17629 WDI_getHALStatusMsgString(halStatus),
17630 halStatus);
17631 /* send the status to UMAC, don't return from here*/
17632 }
17633
17634 /*Notify UMAC*/
17635 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17636
Jeff Johnsone7245742012-09-05 17:12:55 -070017637 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017638}/*WDI_ProcessSetBssKeyRsp*/
17639
17640
17641/**
17642 @brief Process Set STA Key Rsp function (called when a response
17643 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017644
17645 @param pWDICtx: pointer to the WLAN DAL context
17646 pEventData: pointer to the event information structure
17647
Jeff Johnson295189b2012-06-20 16:38:30 -070017648 @see
17649 @return Result of the function call
17650*/
17651WDI_Status
17652WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017653(
Jeff Johnson295189b2012-06-20 16:38:30 -070017654 WDI_ControlBlockType* pWDICtx,
17655 WDI_EventInfoType* pEventData
17656)
17657{
17658 WDI_Status wdiStatus;
17659 eHalStatus halStatus;
17660 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17662
17663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017665 -------------------------------------------------------------------------*/
17666 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17667 ( NULL == pEventData->pEventData))
17668 {
17669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017673 }
17674
17675 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17676
17677 /*-------------------------------------------------------------------------
17678 Extract response and send it to UMAC
17679 -------------------------------------------------------------------------*/
17680 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017681 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017682
17683 if ( eHAL_STATUS_SUCCESS != halStatus )
17684 {
17685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17686 "Set STA Key failed with status %s (%d)",
17687 WDI_getHALStatusMsgString(halStatus),
17688 halStatus);
17689 /* send the status to UMAC, don't return from here*/
17690 }
17691
17692 /*Notify UMAC*/
17693 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17694
Jeff Johnsone7245742012-09-05 17:12:55 -070017695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017696}/*WDI_ProcessSetSTAKeyRsp*/
17697
17698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017699 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017700 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017701
17702 @param pWDICtx: pointer to the WLAN DAL context
17703 pEventData: pointer to the event information structure
17704
Jeff Johnson295189b2012-06-20 16:38:30 -070017705 @see
17706 @return Result of the function call
17707*/
17708WDI_Status
17709WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017710(
Jeff Johnson295189b2012-06-20 16:38:30 -070017711 WDI_ControlBlockType* pWDICtx,
17712 WDI_EventInfoType* pEventData
17713)
17714{
17715 WDI_Status wdiStatus;
17716 eHalStatus halStatus;
17717 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17719
17720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017722 -------------------------------------------------------------------------*/
17723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17724 ( NULL == pEventData->pEventData))
17725 {
17726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017730 }
17731
17732 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17733
17734 /*-------------------------------------------------------------------------
17735 Extract response and send it to UMAC
17736 -------------------------------------------------------------------------*/
17737 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017738 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017739
17740 if ( eHAL_STATUS_SUCCESS != halStatus )
17741 {
17742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17743 "Remove STA Key failed with status %s (%d)",
17744 WDI_getHALStatusMsgString(halStatus),
17745 halStatus);
17746 /* send the status to UMAC, don't return from here*/
17747 }
17748
17749 /*Notify UMAC*/
17750 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17751
Jeff Johnsone7245742012-09-05 17:12:55 -070017752 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017753}/*WDI_ProcessRemoveStaKeyRsp*/
17754
17755/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017756 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017757 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017758
17759 @param pWDICtx: pointer to the WLAN DAL context
17760 pEventData: pointer to the event information structure
17761
Jeff Johnson295189b2012-06-20 16:38:30 -070017762 @see
17763 @return Result of the function call
17764*/
17765WDI_Status
17766WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017767(
Jeff Johnson295189b2012-06-20 16:38:30 -070017768 WDI_ControlBlockType* pWDICtx,
17769 WDI_EventInfoType* pEventData
17770)
17771{
17772 WDI_Status wdiStatus;
17773 eHalStatus halStatus;
17774 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17776
17777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017778 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 -------------------------------------------------------------------------*/
17780 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17781 ( NULL == pEventData->pEventData))
17782 {
17783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 }
17788
17789 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17790
17791 /*-------------------------------------------------------------------------
17792 Extract response and send it to UMAC
17793 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017794 wpalMemoryCopy( &halStatus,
17795 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017796 sizeof(halStatus));
17797
Jeff Johnsone7245742012-09-05 17:12:55 -070017798 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017799
17800 if ( eHAL_STATUS_SUCCESS != halStatus )
17801 {
17802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17803 "Set STA Key failed with status %s (%d)",
17804 WDI_getHALStatusMsgString(halStatus),
17805 halStatus);
17806 /* send the status to UMAC, don't return from here*/
17807 }
17808
17809 /*Notify UMAC*/
17810 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17811
Jeff Johnsone7245742012-09-05 17:12:55 -070017812 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017813}/*WDI_ProcessSetSTABcastKeyRsp*/
17814
17815/**
17816 @brief Process Remove STA Bcast Key Rsp function (called when a
17817 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017818
17819 @param pWDICtx: pointer to the WLAN DAL context
17820 pEventData: pointer to the event information structure
17821
Jeff Johnson295189b2012-06-20 16:38:30 -070017822 @see
17823 @return Result of the function call
17824*/
17825WDI_Status
17826WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017827(
Jeff Johnson295189b2012-06-20 16:38:30 -070017828 WDI_ControlBlockType* pWDICtx,
17829 WDI_EventInfoType* pEventData
17830)
17831{
17832 WDI_Status wdiStatus;
17833 eHalStatus halStatus;
17834 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17836
17837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017839 -------------------------------------------------------------------------*/
17840 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17841 ( NULL == pEventData->pEventData))
17842 {
17843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017844 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017847 }
17848
17849 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17850
17851 /*-------------------------------------------------------------------------
17852 Extract response and send it to UMAC
17853 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017854 wpalMemoryCopy( &halStatus,
17855 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017856 sizeof(halStatus));
17857
Jeff Johnsone7245742012-09-05 17:12:55 -070017858 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017859
17860 if ( eHAL_STATUS_SUCCESS != halStatus )
17861 {
17862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17863 "Remove STA Key failed with status %s (%d)",
17864 WDI_getHALStatusMsgString(halStatus),
17865 halStatus);
17866 /* send the status to UMAC, don't return from here*/
17867 }
17868
17869 /*Notify UMAC*/
17870 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17871
Jeff Johnsone7245742012-09-05 17:12:55 -070017872 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017873}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17874
17875
17876/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017877 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017878==========================================================================*/
17879
17880/**
17881 @brief Process Add TSpec Rsp function (called when a response
17882 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017883
17884 @param pWDICtx: pointer to the WLAN DAL context
17885 pEventData: pointer to the event information structure
17886
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 @see
17888 @return Result of the function call
17889*/
17890WDI_Status
17891WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017892(
Jeff Johnson295189b2012-06-20 16:38:30 -070017893 WDI_ControlBlockType* pWDICtx,
17894 WDI_EventInfoType* pEventData
17895)
17896{
17897 WDI_Status wdiStatus;
17898 eHalStatus halStatus;
17899 WDI_AddTsRspCb wdiAddTsRspCb;
17900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17901
17902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017904 -------------------------------------------------------------------------*/
17905 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17906 ( NULL == pEventData->pEventData))
17907 {
17908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017912 }
17913
17914 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17915
17916 /*-------------------------------------------------------------------------
17917 Extract response and send it to UMAC
17918 -------------------------------------------------------------------------*/
17919 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017921
17922 /*Notify UMAC*/
17923 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17924
Jeff Johnsone7245742012-09-05 17:12:55 -070017925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017926}/*WDI_ProcessAddTSpecRsp*/
17927
17928
Sunil Duttbd736ed2014-05-26 21:19:41 +053017929
17930#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17931
17932WDI_Status
17933WDI_ProcessLLStatsSetRsp
17934(
17935 WDI_ControlBlockType* pWDICtx,
17936 WDI_EventInfoType* pEventData
17937)
17938{
17939 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17940
17941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17942 "%s: Enter ", __func__);
17943 /*-------------------------------------------------------------------------
17944 Sanity check
17945 -------------------------------------------------------------------------*/
17946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17947 ( NULL == pEventData->pEventData))
17948 {
17949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17950 "%s: Invalid parameters", __func__);
17951 WDI_ASSERT(0);
17952 return WDI_STATUS_E_FAILURE;
17953 }
17954
17955 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17956
17957 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17958
17959 return WDI_STATUS_SUCCESS;
17960}
17961
17962WDI_Status
17963WDI_ProcessLLStatsGetRsp
17964(
17965 WDI_ControlBlockType* pWDICtx,
17966 WDI_EventInfoType* pEventData
17967)
17968{
17969 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17970
17971 /*-------------------------------------------------------------------------
17972 Sanity check
17973 -------------------------------------------------------------------------*/
17974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17975 ( NULL == pEventData->pEventData))
17976 {
17977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17978 "%s: Invalid parameters", __func__);
17979 WDI_ASSERT(0);
17980 return WDI_STATUS_E_FAILURE;
17981 }
17982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17983 "%s: Enter ", __func__);
17984
17985 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17986
17987 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17988
17989 return WDI_STATUS_SUCCESS;
17990}
17991
17992WDI_Status
17993WDI_ProcessLLStatsClearRsp
17994(
17995 WDI_ControlBlockType* pWDICtx,
17996 WDI_EventInfoType* pEventData
17997)
17998{
17999 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18000
18001 /*-------------------------------------------------------------------------
18002 Sanity check
18003 -------------------------------------------------------------------------*/
18004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18005 ( NULL == pEventData->pEventData))
18006 {
18007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18008 "%s: Invalid parameters", __func__);
18009 WDI_ASSERT(0);
18010 return WDI_STATUS_E_FAILURE;
18011 }
18012
18013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18014 "%s: CLEAR RESPONSE CALL BACK", __func__);
18015 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18016
18017 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18018
18019 return WDI_STATUS_SUCCESS;
18020}
18021#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18022
Jeff Johnson295189b2012-06-20 16:38:30 -070018023/**
18024 @brief Process Del TSpec Rsp function (called when a response
18025 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018026
18027 @param pWDICtx: pointer to the WLAN DAL context
18028 pEventData: pointer to the event information structure
18029
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 @see
18031 @return Result of the function call
18032*/
18033WDI_Status
18034WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018035(
Jeff Johnson295189b2012-06-20 16:38:30 -070018036 WDI_ControlBlockType* pWDICtx,
18037 WDI_EventInfoType* pEventData
18038)
18039{
18040 WDI_Status wdiStatus;
18041 eHalStatus halStatus;
18042 WDI_DelTsRspCb wdiDelTsRspCb;
18043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18044
18045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018047 -------------------------------------------------------------------------*/
18048 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18049 ( NULL == pEventData->pEventData))
18050 {
18051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 }
18056
18057 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18058
18059 /*-------------------------------------------------------------------------
18060 Extract response and send it to UMAC
18061 -------------------------------------------------------------------------*/
18062 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018063 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018064
18065 /*Notify UMAC*/
18066 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18067
Jeff Johnsone7245742012-09-05 17:12:55 -070018068 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018069}/*WDI_ProcessDelTSpecRsp*/
18070
18071/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018072 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018073 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018074
18075 @param pWDICtx: pointer to the WLAN DAL context
18076 pEventData: pointer to the event information structure
18077
Jeff Johnson295189b2012-06-20 16:38:30 -070018078 @see
18079 @return Result of the function call
18080*/
18081WDI_Status
18082WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018083(
Jeff Johnson295189b2012-06-20 16:38:30 -070018084 WDI_ControlBlockType* pWDICtx,
18085 WDI_EventInfoType* pEventData
18086)
18087{
18088 WDI_Status wdiStatus;
18089 eHalStatus halStatus;
18090 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18092
18093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018094 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 -------------------------------------------------------------------------*/
18096 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18097 ( NULL == pEventData->pEventData))
18098 {
18099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018103 }
18104
18105 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18106
18107 /*-------------------------------------------------------------------------
18108 Extract response and send it to UMAC
18109 -------------------------------------------------------------------------*/
18110 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018111 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018112
18113 /*Notify UMAC*/
18114 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18115
Jeff Johnsone7245742012-09-05 17:12:55 -070018116 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018117}/*WDI_ProcessUpdateEDCAParamsRsp*/
18118
18119
18120/**
18121 @brief Process Add BA Rsp function (called when a response
18122 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_ProcessAddBASessionRsp
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_AddBASessionRspCb wdiAddBASessionRspCb;
18138
18139 tAddBASessionRspParams halBASessionRsp;
18140 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18141
Jeff Johnsone7245742012-09-05 17:12:55 -070018142
Jeff Johnson295189b2012-06-20 16:38:30 -070018143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18144
18145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 -------------------------------------------------------------------------*/
18148 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18149 ( NULL == pEventData->pEventData))
18150 {
18151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018155 }
18156
18157 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18158
18159 /*-------------------------------------------------------------------------
18160 Extract response and send it to UMAC
18161 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018162 wpalMemoryCopy( &halBASessionRsp,
18163 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 sizeof(halBASessionRsp));
18165
18166 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18167
Jeff Johnson43971f52012-07-17 12:26:56 -070018168 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018169 {
18170 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18171 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18172 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18173 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18174 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18175 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18176 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18177 }
18178
18179 /*Notify UMAC*/
18180 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18181
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018183}/*WDI_ProcessAddSessionBARsp*/
18184
18185
18186/**
18187 @brief Process Del BA Rsp function (called when a response
18188 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018189
18190 @param pWDICtx: pointer to the WLAN DAL context
18191 pEventData: pointer to the event information structure
18192
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 @see
18194 @return Result of the function call
18195*/
18196WDI_Status
18197WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018198(
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 WDI_ControlBlockType* pWDICtx,
18200 WDI_EventInfoType* pEventData
18201)
18202{
18203 WDI_Status wdiStatus;
18204 eHalStatus halStatus;
18205 WDI_DelBARspCb wdiDelBARspCb;
18206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18207
18208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 -------------------------------------------------------------------------*/
18211 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18212 ( NULL == pEventData->pEventData))
18213 {
18214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018218 }
18219
18220 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18221
18222 /*-------------------------------------------------------------------------
18223 Extract response and send it to UMAC
18224 -------------------------------------------------------------------------*/
18225 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018227
18228 if ( eHAL_STATUS_SUCCESS == halStatus )
18229 {
18230 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18231 }
18232
18233 /*Notify UMAC*/
18234 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18235
Jeff Johnsone7245742012-09-05 17:12:55 -070018236 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018237}/*WDI_ProcessDelBARsp*/
18238
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018239#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018240/**
18241 @brief Process TSM Stats Rsp function (called when a response
18242 is being received over the bus from HAL)
18243
18244 @param pWDICtx: pointer to the WLAN DAL context
18245 pEventData: pointer to the event information structure
18246
18247 @see
18248 @return Result of the function call
18249*/
18250WDI_Status
18251WDI_ProcessTsmStatsRsp
18252(
18253 WDI_ControlBlockType* pWDICtx,
18254 WDI_EventInfoType* pEventData
18255)
18256{
18257 WDI_TsmRspCb wdiTsmStatsRspCb;
18258 tTsmStatsRspMsg halTsmStatsRspMsg;
18259 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18261
18262 /*-------------------------------------------------------------------------
18263 Sanity check
18264 -------------------------------------------------------------------------*/
18265 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18266 ( NULL == pEventData->pEventData))
18267 {
18268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018270 WDI_ASSERT(0);
18271 return WDI_STATUS_E_FAILURE;
18272 }
18273
18274 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18275
18276 /*-------------------------------------------------------------------------
18277 Unpack HAL Response Message - the header was already extracted by the
18278 main Response Handling procedure
18279 -------------------------------------------------------------------------*/
18280 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18281 pEventData->pEventData,
18282 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18283
18284 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18285 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18286 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18287 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18288 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18289 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18290 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18291 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18292 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18293 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18294 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18295 halTsmStatsRspMsg.tsmStatsRspParams.status);
18296
18297 /*Notify UMAC*/
18298 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18299
18300 return WDI_STATUS_SUCCESS;
18301}/*WDI_ProcessTsmStatsRsp*/
18302
18303#endif
18304
18305
18306
18307/**
18308 @brief Process Flush AC Rsp function (called when a response
18309 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018310
18311 @param pWDICtx: pointer to the WLAN DAL context
18312 pEventData: pointer to the event information structure
18313
Jeff Johnson295189b2012-06-20 16:38:30 -070018314 @see
18315 @return Result of the function call
18316*/
18317WDI_Status
18318WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018319(
Jeff Johnson295189b2012-06-20 16:38:30 -070018320 WDI_ControlBlockType* pWDICtx,
18321 WDI_EventInfoType* pEventData
18322)
18323{
18324 WDI_Status wdiStatus;
18325 eHalStatus halStatus;
18326 WDI_FlushAcRspCb wdiFlushAcRspCb;
18327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18328
18329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018330 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 -------------------------------------------------------------------------*/
18332 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18333 ( NULL == pEventData->pEventData))
18334 {
18335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018336 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018337 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018339 }
18340
18341 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18342
18343 /*-------------------------------------------------------------------------
18344 Extract response and send it to UMAC
18345 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018346 wpalMemoryCopy( &halStatus,
18347 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018348 sizeof(halStatus));
18349
Jeff Johnsone7245742012-09-05 17:12:55 -070018350 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018351
18352 /*Notify UMAC*/
18353 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18354
Jeff Johnsone7245742012-09-05 17:12:55 -070018355 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018356}/*WDI_ProcessFlushAcRsp*/
18357
18358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018359 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018360 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018361
18362 @param pWDICtx: pointer to the WLAN DAL context
18363 pEventData: pointer to the event information structure
18364
Jeff Johnson295189b2012-06-20 16:38:30 -070018365 @see
18366 @return Result of the function call
18367*/
18368WDI_Status
18369WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018370(
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 WDI_ControlBlockType* pWDICtx,
18372 WDI_EventInfoType* pEventData
18373)
18374{
18375 WDI_Status wdiStatus;
18376 eHalStatus halStatus;
18377 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18379
18380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 -------------------------------------------------------------------------*/
18383 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18384 ( NULL == pEventData->pEventData))
18385 {
18386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018390 }
18391
18392 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18393
18394 /*-------------------------------------------------------------------------
18395 Extract response and send it to UMAC
18396 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018397 wpalMemoryCopy( &halStatus,
18398 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018399 sizeof(halStatus));
18400
Jeff Johnsone7245742012-09-05 17:12:55 -070018401 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018402
18403 /*Notify UMAC*/
18404 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18405
Jeff Johnsone7245742012-09-05 17:12:55 -070018406 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018407}/*WDI_ProcessBtAmpEventRsp*/
18408
18409
18410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018411 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018412 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018413
18414 @param pWDICtx: pointer to the WLAN DAL context
18415 pEventData: pointer to the event information structure
18416
Jeff Johnson295189b2012-06-20 16:38:30 -070018417 @see
18418 @return Result of the function call
18419*/
18420WDI_Status
18421WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018422(
Jeff Johnson295189b2012-06-20 16:38:30 -070018423 WDI_ControlBlockType* pWDICtx,
18424 WDI_EventInfoType* pEventData
18425)
18426{
18427 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18428 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18429 tAddStaSelfRspMsg halAddStaSelfRsp;
18430 WDI_AddStaParams wdiAddSTAParam = {0};
18431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18432
18433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 -------------------------------------------------------------------------*/
18436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18437 ( NULL == pEventData->pEventData))
18438 {
18439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 }
18444
Jeff Johnsone7245742012-09-05 17:12:55 -070018445 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018446 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18447
18448 /*-------------------------------------------------------------------------
18449 Extract response and send it to UMAC
18450 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018451 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18452 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018453 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18454
18455
Jeff Johnsone7245742012-09-05 17:12:55 -070018456 wdiAddSTASelfParams.wdiStatus =
18457 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018458
Jeff Johnsone7245742012-09-05 17:12:55 -070018459 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018460 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018461 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018462 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018464 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18465
18466 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18467 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18468 WDI_MAC_ADDR_LEN);
18469
18470
18471#ifdef HAL_SELF_STA_PER_BSS
18472
18473 /* At this point add the self-STA */
18474
18475 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18476 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18477 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18478
18479 //all DPU indices are the same for self STA
18480
18481 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018482 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018483 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18484 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18485 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18486 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18487 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18488
18489 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18490 WDI_MAC_ADDR_LEN);
18491
18492 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18493 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18494
Jeff Johnsone7245742012-09-05 17:12:55 -070018495 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18497 {
18498 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18499 }
18500#endif
18501
18502 /*Notify UMAC*/
18503 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18504
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018506}/*WDI_ProcessAddSTASelfRsp*/
18507
18508
18509
18510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018511 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018512 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018513
18514 @param pWDICtx: pointer to the WLAN DAL context
18515 pEventData: pointer to the event information structure
18516
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 @see
18518 @return Result of the function call
18519*/
18520WDI_Status
18521WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018522(
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 WDI_ControlBlockType* pWDICtx,
18524 WDI_EventInfoType* pEventData
18525)
18526{
18527 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18528 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18529 tDelStaSelfRspParams delStaSelfRspParams;
18530 wpt_uint8 ucStaIdx;
18531
18532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18533
18534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018536 -------------------------------------------------------------------------*/
18537 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18538 ( NULL == pEventData->pEventData))
18539 {
18540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018544 }
18545
18546 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18547
18548 /*-------------------------------------------------------------------------
18549 Extract response and send it to UMAC
18550 -------------------------------------------------------------------------*/
18551
Jeff Johnsone7245742012-09-05 17:12:55 -070018552 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018553 (wpt_uint8*)pEventData->pEventData,
18554 sizeof(tDelStaSelfRspParams));
18555
Jeff Johnsone7245742012-09-05 17:12:55 -070018556 wdiDelStaSelfRspParams.wdiStatus =
18557 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018558
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18561 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18562 {
18563 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018564 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 delStaSelfRspParams.selfMacAddr,
18566 &ucStaIdx);
18567 if(WDI_STATUS_E_FAILURE == wdiStatus)
18568 {
18569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018570 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018573 }
18574 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18575 }
18576
18577 /*Notify UMAC*/
18578 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18579
18580 return WDI_STATUS_SUCCESS;
18581}
18582
Jeff Johnsone7245742012-09-05 17:12:55 -070018583#ifdef FEATURE_OEM_DATA_SUPPORT
18584/**
18585 @brief Start Oem Data Rsp function (called when a
18586 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018587
Jeff Johnsone7245742012-09-05 17:12:55 -070018588 @param pWDICtx: pointer to the WLAN DAL context
18589 pEventData: pointer to the event information structure
18590
18591 @see
18592 @return Result of the function call
18593*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018594
18595WDI_Status
18596WDI_ProcessStartOemDataRsp
18597(
18598 WDI_ControlBlockType* pWDICtx,
18599 WDI_EventInfoType* pEventData
18600)
18601{
18602 WDI_oemDataRspCb wdiOemDataRspCb;
18603 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18604 tStartOemDataRspParams* halStartOemDataRspParams;
18605
18606 /*-------------------------------------------------------------------------
18607 Sanity check
18608 -------------------------------------------------------------------------*/
18609 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18610 ( NULL == pEventData->pEventData))
18611 {
18612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018613 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018614 WDI_ASSERT(0);
18615 return WDI_STATUS_E_FAILURE;
18616 }
18617
18618 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18619
18620 /*-------------------------------------------------------------------------
18621 Extract response and send it to UMAC
18622 -------------------------------------------------------------------------*/
18623 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18624
18625
18626 //It is the responsibility of the application code to check for failure
18627 //conditions!
18628
18629 //Allocate memory for WDI OEM DATA RSP structure
18630 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18631
18632 if(NULL == wdiOemDataRspParams)
18633 {
18634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018635 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018636 pWDICtx, pEventData, pEventData->pEventData);
18637 WDI_ASSERT(0);
18638 return WDI_STATUS_E_FAILURE;
18639 }
18640
18641 /* Populate WDI structure members */
18642 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18643
18644 /*Notify UMAC*/
18645 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18646
18647 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18648 wpalMemoryFree(wdiOemDataRspParams);
18649
18650 return WDI_STATUS_SUCCESS;
18651}/*WDI_PrcoessStartOemDataRsp*/
18652#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018653
18654/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018655 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018656===========================================================================*/
18657
18658/**
18659 @brief Process Channel Switch Rsp function (called when a response
18660 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018661
18662 @param pWDICtx: pointer to the WLAN DAL context
18663 pEventData: pointer to the event information structure
18664
Jeff Johnson295189b2012-06-20 16:38:30 -070018665 @see
18666 @return Result of the function call
18667*/
18668WDI_Status
18669WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018670(
Jeff Johnson295189b2012-06-20 16:38:30 -070018671 WDI_ControlBlockType* pWDICtx,
18672 WDI_EventInfoType* pEventData
18673)
18674{
18675 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18676 WDI_SwitchChRspCb wdiChSwitchRspCb;
18677 tSwitchChannelRspParams halSwitchChannelRsp;
18678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18679
18680 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018681 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018682 -------------------------------------------------------------------------*/
18683 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18684 ( NULL == pEventData->pEventData))
18685 {
18686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018690 }
18691
18692 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18693
18694 /*-------------------------------------------------------------------------
18695 Extract response and send it to UMAC
18696 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018697 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018698 (wpt_uint8*)pEventData->pEventData,
18699 sizeof(halSwitchChannelRsp));
18700
Jeff Johnsone7245742012-09-05 17:12:55 -070018701 wdiSwitchChRsp.wdiStatus =
18702 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18704
18705#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018706 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018707#endif
18708
18709 /*Notify UMAC*/
18710 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18711
Jeff Johnsone7245742012-09-05 17:12:55 -070018712 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018713}/*WDI_ProcessChannelSwitchRsp*/
18714
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018715/**
18716 @brief Process Channel Switch Rsp function (called when a response
18717 is being received over the bus from HAL against
18718 WDI_ProcessChannelSwitchReq_V1)
18719
18720 @param pWDICtx: pointer to the WLAN DAL context
18721 pEventData: pointer to the event information structure
18722
18723 @see
18724 @return Result of the function call
18725*/
18726
18727WDI_Status
18728WDI_ProcessChannelSwitchRsp_V1
18729(
18730 WDI_ControlBlockType* pWDICtx,
18731 WDI_EventInfoType* pEventData
18732)
18733{
18734 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18735 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18736 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18738
18739 /*-------------------------------------------------------------------------
18740 Sanity check
18741 -------------------------------------------------------------------------*/
18742 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18743 ( NULL == pEventData->pEventData))
18744 {
18745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18746 "%s: Invalid parameters", __func__);
18747 WDI_ASSERT(0);
18748 return WDI_STATUS_E_FAILURE;
18749 }
18750
18751 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18752
18753 /*-------------------------------------------------------------------------
18754 Extract response and send it to UMAC
18755 -------------------------------------------------------------------------*/
18756 wpalMemoryCopy( &halSwitchChannelRsp,
18757 (wpt_uint8*)pEventData->pEventData,
18758 sizeof(halSwitchChannelRsp));
18759
18760 wdiSwitchChRsp.wdiStatus =
18761 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18762 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18763
18764#ifdef WLAN_FEATURE_VOWIFI
18765 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18766#endif
18767
18768 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18769 if (( NULL == wdiChSwitchRspCb ) )
18770 {
18771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18772 "%s: ### Call back function is null", __func__);
18773 WDI_ASSERT(0);
18774 return WDI_STATUS_E_FAILURE;
18775 }
18776 /*Notify UMAC*/
18777 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18778
18779 return WDI_STATUS_SUCCESS;
18780}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018781
18782/**
18783 @brief Process Config STA Rsp function (called when a response
18784 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018785
18786 @param pWDICtx: pointer to the WLAN DAL context
18787 pEventData: pointer to the event information structure
18788
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 @see
18790 @return Result of the function call
18791*/
18792WDI_Status
18793WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018794(
Jeff Johnson295189b2012-06-20 16:38:30 -070018795 WDI_ControlBlockType* pWDICtx,
18796 WDI_EventInfoType* pEventData
18797)
18798{
18799 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18800 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18801 WDI_AddStaParams wdiAddSTAParam;
18802
18803 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018804 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018805
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18808
18809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018811 -------------------------------------------------------------------------*/
18812 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18813 ( NULL == pEventData->pEventData))
18814 {
18815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018819 }
18820
18821 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18822
18823 /*-------------------------------------------------------------------------
18824 Extract response and send it to UMAC
18825 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018826 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18827 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018828 sizeof(halConfigStaRsp.configStaRspParams));
18829
18830
18831 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18832 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18833 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18834 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18835 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18836
18837 /* MAC Address of STA - take from cache as it does not come back in the
18838 response*/
18839 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018840 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018841 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018842
18843 wdiCfgSTAParams.wdiStatus =
18844 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018845
18846 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18847 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18848 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18849
18850 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18851 {
18852 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18853 {
18854 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018855 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018856 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18857 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018858
Jeff Johnson295189b2012-06-20 16:38:30 -070018859 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018860 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018861 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018862 wdiAddSTAParam.ucHTCapable =
18863 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18864 wdiAddSTAParam.ucStaType =
18865 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018866 wdiAddSTAParam.ucRmfEnabled =
18867 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018868
Jeff Johnson295189b2012-06-20 16:38:30 -070018869 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018870 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18871 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018872 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018873
18874 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18875 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18876 WDI_MAC_ADDR_LEN);
18877
18878 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18879 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18880 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018881
18882 if ( NULL == pBSSSes )
18883 {
18884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18885 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018886
Jeff Johnson295189b2012-06-20 16:38:30 -070018887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018888 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018889 }
18890
18891 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018892 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018893 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018894 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018895 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018896 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018897 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018898 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018899 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018901
Jeff Johnson295189b2012-06-20 16:38:30 -070018902 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18903 }
18904 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18905 {
18906 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18907
Jeff Johnsone7245742012-09-05 17:12:55 -070018908 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018909 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018910 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018912 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018913 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018914 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018915 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018916 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018918 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018919 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018920 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 halConfigStaRsp.configStaRspParams.ucUcastSig;
18922 }
18923 }
18924
18925 /*Notify UMAC*/
18926 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18927
Jeff Johnsone7245742012-09-05 17:12:55 -070018928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018929}/*WDI_ProcessConfigStaRsp*/
18930
18931
18932/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018933 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018934 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018935
18936 @param pWDICtx: pointer to the WLAN DAL context
18937 pEventData: pointer to the event information structure
18938
Jeff Johnson295189b2012-06-20 16:38:30 -070018939 @see
18940 @return Result of the function call
18941*/
18942WDI_Status
18943WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018944(
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 WDI_ControlBlockType* pWDICtx,
18946 WDI_EventInfoType* pEventData
18947)
18948{
18949 WDI_Status wdiStatus;
18950 eHalStatus halStatus;
18951 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18952
18953 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018954 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18956
18957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018959 -------------------------------------------------------------------------*/
18960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18961 ( NULL == pEventData->pEventData))
18962 {
18963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018967 }
18968
18969 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18970
18971 wpalMutexAcquire(&pWDICtx->wptMutex);
18972
18973 /*If the link is being transitioned to idle - the BSS is to be deleted
18974 - this type of ending a session is possible when UMAC has failed an
18975 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18978 {
18979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018980 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18983 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18984 &pBSSSes);
18985
Jeff Johnson295189b2012-06-20 16:38:30 -070018986 /*-----------------------------------------------------------------------
18987 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018988 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018989 -----------------------------------------------------------------------*/
18990 if ( NULL == pBSSSes )
18991 {
18992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18993 "Set link response received outside association session");
18994 }
18995 else
18996 {
18997 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18998 will be del BSS coming after this to stop the beaconing & cleaning up the
18999 sessions*/
19000 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19001 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19002 {
19003 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019004 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019005 -----------------------------------------------------------------------*/
19006 WDI_DeleteSession(pWDICtx, pBSSSes);
19007
19008 /*-----------------------------------------------------------------------
19009 Check to see if this association is in progress - if so disable the
19010 flag as this has ended
19011 -----------------------------------------------------------------------*/
19012 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019013 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019014 /*Association no longer in progress */
19015 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19016 /*Association no longer in progress - prepare pending assoc for processing*/
19017 WDI_DequeueAssocRequest(pWDICtx);
19018 }
19019 }
19020 }
19021 }
19022 /* If the link state has been set to POST ASSOC, reset the "association in
19023 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019024 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019025 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19026 {
19027 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19028 WDI_DequeueAssocRequest(pWDICtx);
19029 }
19030
19031 wpalMutexRelease(&pWDICtx->wptMutex);
19032
19033 /*-------------------------------------------------------------------------
19034 Extract response and send it to UMAC
19035 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019036 wpalMemoryCopy( &halStatus,
19037 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 sizeof(halStatus));
19039
Jeff Johnsone7245742012-09-05 17:12:55 -070019040 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019041
19042 /*Notify UMAC*/
19043 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19044
Jeff Johnsone7245742012-09-05 17:12:55 -070019045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019046}/*WDI_ProcessSetLinkStateRsp*/
19047
19048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019049 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019050 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019051
19052 @param pWDICtx: pointer to the WLAN DAL context
19053 pEventData: pointer to the event information structure
19054
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 @see
19056 @return Result of the function call
19057*/
19058WDI_Status
19059WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019060(
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 WDI_ControlBlockType* pWDICtx,
19062 WDI_EventInfoType* pEventData
19063)
19064{
19065 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19066 WDI_GetStatsRspCb wdiGetStatsRspCb;
19067 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019068
Jeff Johnson295189b2012-06-20 16:38:30 -070019069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19070
19071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019073 -------------------------------------------------------------------------*/
19074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19075 ( NULL == pEventData->pEventData))
19076 {
19077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019081 }
19082
19083 /*-------------------------------------------------------------------------
19084 Extract response and send it to UMAC
19085 -------------------------------------------------------------------------*/
19086 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19087
19088 /*allocate the stats response buffer */
19089 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19090 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19091 + sizeof(WDI_GetStatsRspParamsType));
19092
19093 if(NULL == wdiGetStatsRsp)
19094 {
19095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019096 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 pWDICtx, pEventData, pEventData->pEventData);
19098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 }
19101
19102 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19103
19104 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19105 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19106 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19107 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19108 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19109 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19110
19111 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19112 wpalMemoryCopy(wdiGetStatsRsp + 1,
19113 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19114 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19115
19116 /*Notify UMAC*/
19117 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19118
19119 wpalMemoryFree(wdiGetStatsRsp);
19120
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019122}/*WDI_ProcessGetStatsRsp*/
19123
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019124#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019125/**
19126 @brief Process Get Roam Rssi Rsp function (called when a response is
19127 being received over the bus from HAL)
19128
19129 @param pWDICtx: pointer to the WLAN DAL context
19130 pEventData: pointer to the event information structure
19131
19132 @see
19133 @return Result of the function call
19134*/
19135WDI_Status
19136WDI_ProcessGetRoamRssiRsp
19137(
19138 WDI_ControlBlockType* pWDICtx,
19139 WDI_EventInfoType* pEventData
19140)
19141{
19142 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19143 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19144 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19146
19147 /*-------------------------------------------------------------------------
19148 Sanity check
19149 -------------------------------------------------------------------------*/
19150 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19151 ( NULL == pEventData->pEventData))
19152 {
19153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19154 "%s: Invalid parameters", __func__);
19155 WDI_ASSERT(0);
19156 return WDI_STATUS_E_FAILURE;
19157 }
19158
19159 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19160 if(NULL == wdiGetRoamRssiRspCb)
19161 {
19162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19163 "%s: call back function is NULL", __func__);
19164 WDI_ASSERT(0);
19165 return WDI_STATUS_E_FAILURE;
19166 }
19167
19168 /*-------------------------------------------------------------------------
19169 Extract response and send it to UMAC
19170 -------------------------------------------------------------------------*/
19171 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19172 pEventData->pEventData,
19173 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19174
19175 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19176 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19177 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19178
19179 /*Notify UMAC*/
19180 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19181
19182 return WDI_STATUS_SUCCESS;
19183}/*WDI_ProcessGetRoamRssiRsp*/
19184#endif
19185
Jeff Johnson295189b2012-06-20 16:38:30 -070019186
19187/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019188 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019190
19191 @param pWDICtx: pointer to the WLAN DAL context
19192 pEventData: pointer to the event information structure
19193
Jeff Johnson295189b2012-06-20 16:38:30 -070019194 @see
19195 @return Result of the function call
19196*/
19197WDI_Status
19198WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019199(
Jeff Johnson295189b2012-06-20 16:38:30 -070019200 WDI_ControlBlockType* pWDICtx,
19201 WDI_EventInfoType* pEventData
19202)
19203{
19204 WDI_Status wdiStatus;
19205 eHalStatus halStatus;
19206 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19208
19209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019211 -------------------------------------------------------------------------*/
19212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19213 ( NULL == pEventData->pEventData))
19214 {
19215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 }
19220
19221 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19222
19223 /*-------------------------------------------------------------------------
19224 Extract response and send it to UMAC
19225 -------------------------------------------------------------------------*/
19226 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019227 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019228
19229 /*Notify UMAC*/
19230 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19231
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019233}/*WDI_ProcessUpdateCfgRsp*/
19234
19235
19236
19237/**
19238 @brief Process Add BA Rsp function (called when a response
19239 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019240
19241 @param pWDICtx: pointer to the WLAN DAL context
19242 pEventData: pointer to the event information structure
19243
Jeff Johnson295189b2012-06-20 16:38:30 -070019244 @see
19245 @return Result of the function call
19246*/
19247WDI_Status
19248WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019249(
Jeff Johnson295189b2012-06-20 16:38:30 -070019250 WDI_ControlBlockType* pWDICtx,
19251 WDI_EventInfoType* pEventData
19252)
19253{
19254 WDI_AddBARspCb wdiAddBARspCb;
19255
19256 tAddBARspParams halAddBARsp;
19257 WDI_AddBARspinfoType wdiAddBARsp;
19258
19259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19260
19261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019263 -------------------------------------------------------------------------*/
19264 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19265 ( NULL == pEventData->pEventData))
19266 {
19267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019271 }
19272
19273 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19274
19275 /*-------------------------------------------------------------------------
19276 Extract response and send it to UMAC
19277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019278 wpalMemoryCopy( &halAddBARsp,
19279 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019280 sizeof(halAddBARsp));
19281
19282 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19283
Jeff Johnson43971f52012-07-17 12:26:56 -070019284 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019285 {
19286 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19287 }
19288
19289 /*Notify UMAC*/
19290 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19291
Jeff Johnsone7245742012-09-05 17:12:55 -070019292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019293}/*WDI_ProcessAddSessionBARsp*/
19294
19295/**
19296 @brief Process Add BA Rsp function (called when a response
19297 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019298
19299 @param pWDICtx: pointer to the WLAN DAL context
19300 pEventData: pointer to the event information structure
19301
Jeff Johnson295189b2012-06-20 16:38:30 -070019302 @see
19303 @return Result of the function call
19304*/
19305WDI_Status
19306WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019307(
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 WDI_ControlBlockType* pWDICtx,
19309 WDI_EventInfoType* pEventData
19310)
19311{
19312 WDI_TriggerBARspCb wdiTriggerBARspCb;
19313
19314 tTriggerBARspParams* halTriggerBARsp;
19315 tTriggerBaRspCandidate* halBaCandidate;
19316 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19317 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19318 wpt_uint16 index;
19319 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019320 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19322
19323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019325 -------------------------------------------------------------------------*/
19326 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19327 ( NULL == pEventData->pEventData))
19328 {
19329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019333 }
19334
19335 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19336
19337 /*-------------------------------------------------------------------------
19338 Extract response and send it to UMAC
19339 -------------------------------------------------------------------------*/
19340 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19341
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019342 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19343
19344 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19345 {
19346 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019347 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019348 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019349
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019350 if(NULL == wdiTriggerBARsp)
19351 {
19352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019353 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019354 pWDICtx, pEventData, pEventData->pEventData);
19355 WDI_ASSERT(0);
19356 return WDI_STATUS_E_FAILURE;
19357 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019358
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019359 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19360
Jeff Johnson295189b2012-06-20 16:38:30 -070019361 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019362 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019363 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19364
19365 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19366 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19367
19368 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19369 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019370 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019371 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19372 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19373 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019374 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019375 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019376 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019377 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19378 }
19379 wdiTriggerBARspCandidate++;
19380 halBaCandidate++;
19381 }
19382 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019383 else
19384 {
19385 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19386
19387 if(NULL == wdiTriggerBARsp)
19388 {
19389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019390 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019391 pWDICtx, pEventData, pEventData->pEventData);
19392 WDI_ASSERT(0);
19393 return WDI_STATUS_E_FAILURE;
19394 }
19395
19396 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19397
19398 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019399
19400 /*Notify UMAC*/
19401 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19402
19403 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019405}/*WDI_ProcessAddSessionBARsp*/
19406
19407/**
19408 @brief Process Update Beacon Params Rsp function (called when a response
19409 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019410
19411 @param pWDICtx: pointer to the WLAN DAL context
19412 pEventData: pointer to the event information structure
19413
Jeff Johnson295189b2012-06-20 16:38:30 -070019414 @see
19415 @return Result of the function call
19416*/
19417WDI_Status
19418WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019419(
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 WDI_ControlBlockType* pWDICtx,
19421 WDI_EventInfoType* pEventData
19422)
19423{
19424 WDI_Status wdiStatus;
19425 eHalStatus halStatus;
19426 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19428
19429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019431 -------------------------------------------------------------------------*/
19432 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19433 ( NULL == pEventData->pEventData))
19434 {
19435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019439 }
19440
19441 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19442
19443 /*-------------------------------------------------------------------------
19444 Extract response and send it to UMAC
19445 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019446 wpalMemoryCopy( &halStatus,
19447 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 sizeof(halStatus));
19449
Jeff Johnsone7245742012-09-05 17:12:55 -070019450 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019451
19452 /*Notify UMAC*/
19453 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19454
Jeff Johnsone7245742012-09-05 17:12:55 -070019455 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019456}/*WDI_ProcessUpdateBeaconParamsRsp*/
19457
19458/**
19459 @brief Process Send Beacon template Rsp function (called when a response
19460 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019461
19462 @param pWDICtx: pointer to the WLAN DAL context
19463 pEventData: pointer to the event information structure
19464
Jeff Johnson295189b2012-06-20 16:38:30 -070019465 @see
19466 @return Result of the function call
19467*/
19468WDI_Status
19469WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019470(
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 WDI_ControlBlockType* pWDICtx,
19472 WDI_EventInfoType* pEventData
19473)
19474{
19475 WDI_Status wdiStatus;
19476 eHalStatus halStatus;
19477 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19479
19480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019482 -------------------------------------------------------------------------*/
19483 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19484 ( NULL == pEventData->pEventData))
19485 {
19486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019490 }
19491
19492 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19493
19494 /*-------------------------------------------------------------------------
19495 Extract response and send it to UMAC
19496 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019497 wpalMemoryCopy( &halStatus,
19498 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 sizeof(halStatus));
19500
Jeff Johnsone7245742012-09-05 17:12:55 -070019501 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019502
19503 /*Notify UMAC*/
19504 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19505
Jeff Johnsone7245742012-09-05 17:12:55 -070019506 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019507}/*WDI_ProcessSendBeaconParamsRsp*/
19508
Jeff Johnsone7245742012-09-05 17:12:55 -070019509
Jeff Johnson295189b2012-06-20 16:38:30 -070019510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019511 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019512 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019513
19514 @param pWDICtx: pointer to the WLAN DAL context
19515 pEventData: pointer to the event information structure
19516
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 @see
19518 @return Result of the function call
19519*/
19520WDI_Status
19521WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019522(
Jeff Johnson295189b2012-06-20 16:38:30 -070019523 WDI_ControlBlockType* pWDICtx,
19524 WDI_EventInfoType* pEventData
19525)
19526{
19527 WDI_Status wdiStatus;
19528 eHalStatus halStatus;
19529 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19531
19532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 -------------------------------------------------------------------------*/
19535 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19536 ( NULL == pEventData->pEventData))
19537 {
19538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019542 }
19543
19544 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19545
19546 /*-------------------------------------------------------------------------
19547 Extract response and send it to UMAC
19548 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019549 wpalMemoryCopy( &halStatus,
19550 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 sizeof(halStatus));
19552
Jeff Johnsone7245742012-09-05 17:12:55 -070019553 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019554
19555 /*Notify UMAC*/
19556 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19557
Jeff Johnsone7245742012-09-05 17:12:55 -070019558 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019559}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19560
19561 /**
19562 @brief Process Set Max Tx Power Rsp function (called when a response
19563 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019564
19565 @param pWDICtx: pointer to the WLAN DAL context
19566 pEventData: pointer to the event information structure
19567
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 @see
19569 @return Result of the function call
19570*/
19571WDI_Status
19572WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019573(
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 WDI_ControlBlockType* pWDICtx,
19575 WDI_EventInfoType* pEventData
19576)
19577{
19578 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019579
Jeff Johnson295189b2012-06-20 16:38:30 -070019580 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019581
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19584
19585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 -------------------------------------------------------------------------*/
19588 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19589 ( NULL == pEventData->pEventData))
19590 {
19591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019595 }
19596
19597 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19598
19599 /*-------------------------------------------------------------------------
19600 Extract response and send it to UMAC
19601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019602 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19603 pEventData->pEventData,
19604 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019605
19606 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19607 {
19608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19609 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019611 }
19612
Jeff Johnsone7245742012-09-05 17:12:55 -070019613 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019614 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019615 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019616
19617 /*Notify UMAC*/
19618 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19619
Jeff Johnsone7245742012-09-05 17:12:55 -070019620 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019621}
19622
schang86c22c42013-03-13 18:41:24 -070019623 /**
19624 @brief Process Set Tx Power Rsp function (called when a response
19625 is being received over the bus from HAL)
19626
19627 @param pWDICtx: pointer to the WLAN DAL context
19628 pEventData: pointer to the event information structure
19629
19630 @see
19631 @return Result of the function call
19632*/
19633WDI_Status
19634WDI_ProcessSetTxPowerRsp
19635(
19636 WDI_ControlBlockType* pWDICtx,
19637 WDI_EventInfoType* pEventData
19638)
19639{
19640 tSetTxPwrRspMsg halTxpowerrsp;
19641 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19642 WDA_SetTxPowerRspCb wdiReqStatusCb;
19643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19644
19645 /*-------------------------------------------------------------------------
19646 Sanity check
19647 -------------------------------------------------------------------------*/
19648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19649 ( NULL == pEventData->pEventData))
19650 {
19651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19652 "%s: Invalid parameters", __func__);
19653 WDI_ASSERT(0);
19654 return WDI_STATUS_E_FAILURE;
19655 }
19656
19657 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19658
19659 /*-------------------------------------------------------------------------
19660 Extract response and send it to UMAC
19661 -------------------------------------------------------------------------*/
19662 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19663 pEventData->pEventData,
19664 sizeof(halTxpowerrsp.setTxPwrRspParams));
19665
19666 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19667 {
19668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19669 "Error status returned in Set Tx Power Response ");
19670 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19671 return WDI_STATUS_E_FAILURE;
19672 }
19673
19674 wdiSetTxPowerRspMsg.wdiStatus =
19675 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19676
19677 /*Notify UMAC*/
19678 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19679
19680 return WDI_STATUS_SUCCESS;
19681}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019682
19683/**
19684 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19685 is being received over the bus from HAL)
19686
19687 @param pWDICtx: pointer to the WLAN DAL context
19688 pEventData: pointer to the event information structure
19689
19690 @see
19691 @return Result of the function call
19692*/
19693WDI_Status
19694WDI_ProcessSetMaxTxPowerPerBandRsp
19695(
19696 WDI_ControlBlockType* pWDICtx,
19697 WDI_EventInfoType* pEventData
19698)
19699{
19700 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19701 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19702 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19704
19705 /*-------------------------------------------------------------------------
19706 Sanity check
19707 -------------------------------------------------------------------------*/
19708 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19709 ( NULL == pEventData->pEventData))
19710 {
19711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19712 "%s: Invalid parameters", __func__);
19713 WDI_ASSERT(0);
19714 return WDI_STATUS_E_FAILURE;
19715 }
19716
19717 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19718
19719 /*-------------------------------------------------------------------------
19720 Extract response and send it to UMAC
19721 -------------------------------------------------------------------------*/
19722 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19723 pEventData->pEventData,
19724 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19725
19726 if (eHAL_STATUS_SUCCESS !=
19727 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19728 {
19729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19730 "Error status returned in Set Max Tx Power Per Band Response");
19731 return WDI_STATUS_E_FAILURE;
19732 }
19733
19734 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19735 WDI_HAL_2_WDI_STATUS(
19736 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19737
19738 /* Notify UMAC */
19739 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19740
19741 return WDI_STATUS_SUCCESS;
19742}
19743
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019744#ifdef FEATURE_WLAN_TDLS
19745/**
19746 @brief Process TDLS Link Establish Rsp function (called
19747 when a response is being received over the bus from HAL)
19748
19749 @param pWDICtx: pointer to the WLAN DAL context
19750 pEventData: pointer to the event information structure
19751
19752 @see
19753 @return Result of the function call
19754*/
19755WDI_Status
19756WDI_ProcessLinkEstablishReqRsp
19757(
19758 WDI_ControlBlockType* pWDICtx,
19759 WDI_EventInfoType* pEventData
19760)
19761{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019762 eHalStatus halStatus;
19763 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019764 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19765 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19766
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19768
19769 /*-------------------------------------------------------------------------
19770 Sanity check
19771 -------------------------------------------------------------------------*/
19772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19773 ( NULL == pEventData->pEventData))
19774 {
19775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19776 "%s: Invalid parameters", __func__);
19777 WDI_ASSERT(0);
19778 return WDI_STATUS_E_FAILURE;
19779 }
19780
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019781 /*-------------------------------------------------------------------------
19782 Extract indication and send it to UMAC
19783 -------------------------------------------------------------------------*/
19784 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19785 pEventData->pEventData,
19786 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19787
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019788 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19789
19790 /*-------------------------------------------------------------------------
19791 Extract response and send it to UMAC
19792 -------------------------------------------------------------------------*/
19793 wpalMemoryCopy( &halStatus,
19794 pEventData->pEventData,
19795 sizeof(halStatus));
19796
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019797 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19798 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019799
19800 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019801 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019802
19803 return WDI_STATUS_SUCCESS;
19804}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019805
19806
19807
19808/**
19809 @brief Process TDLS Chan switch Rsp function (called
19810 when a response is being received over the bus from HAL)
19811
19812 @param pWDICtx: pointer to the WLAN DAL context
19813 pEventData: pointer to the event information structure
19814
19815 @see
19816 @return Result of the function call
19817*/
19818WDI_Status
19819WDI_ProcessChanSwitchReqRsp
19820(
19821 WDI_ControlBlockType* pWDICtx,
19822 WDI_EventInfoType* pEventData
19823)
19824{
19825 eHalStatus halStatus;
19826 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19827 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19828 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19829
19830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19831
19832 /*-------------------------------------------------------------------------
19833 Sanity check
19834 -------------------------------------------------------------------------*/
19835 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19836 ( NULL == pEventData->pEventData))
19837 {
19838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19839 "%s: Invalid parameters", __func__);
19840 WDI_ASSERT(0);
19841 return WDI_STATUS_E_FAILURE;
19842 }
19843
19844 /*-------------------------------------------------------------------------
19845 Extract indication and send it to UMAC
19846 -------------------------------------------------------------------------*/
19847 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19848 pEventData->pEventData,
19849 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19850
19851 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19852
19853 /*-------------------------------------------------------------------------
19854 Extract response and send it to UMAC
19855 -------------------------------------------------------------------------*/
19856 wpalMemoryCopy( &halStatus,
19857 pEventData->pEventData,
19858 sizeof(halStatus));
19859
19860 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19861 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19862
19863 /*Notify UMAC*/
19864 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19865
19866 return WDI_STATUS_SUCCESS;
19867}/*WDI_ProcessChanSwitchReqRsp*/
19868
19869
19870
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019871#endif
schang86c22c42013-03-13 18:41:24 -070019872
Jeff Johnson295189b2012-06-20 16:38:30 -070019873/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019874 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019875 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019876
19877 @param pWDICtx: pointer to the WLAN DAL context
19878 pEventData: pointer to the event information structure
19879
Jeff Johnson295189b2012-06-20 16:38:30 -070019880 @see
19881 @return Result of the function call
19882*/
19883WDI_Status
19884WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019885(
Jeff Johnson295189b2012-06-20 16:38:30 -070019886 WDI_ControlBlockType* pWDICtx,
19887 WDI_EventInfoType* pEventData
19888)
19889{
19890 WDI_Status wdiStatus;
19891 eHalStatus halStatus;
19892 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19894
19895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019896 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019897 -------------------------------------------------------------------------*/
19898 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19899 ( NULL == pEventData->pEventData))
19900 {
19901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019902 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019903 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019904 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019905 }
19906
19907 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19908
19909 /*-------------------------------------------------------------------------
19910 Extract response and send it to UMAC
19911 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019912 wpalMemoryCopy( &halStatus,
19913 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019914 sizeof(halStatus));
19915
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019917
19918 /*Notify UMAC*/
19919 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19920
Jeff Johnsone7245742012-09-05 17:12:55 -070019921 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019922}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019923/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019924 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019926
19927 @param pWDICtx: pointer to the WLAN DAL context
19928 pEventData: pointer to the event information structure
19929
Jeff Johnson295189b2012-06-20 16:38:30 -070019930 @see
19931 @return Result of the function call
19932*/
19933WDI_Status
19934WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019935(
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 WDI_ControlBlockType* pWDICtx,
19937 WDI_EventInfoType* pEventData
19938)
19939{
19940 WDI_Status wdiStatus;
19941 eHalStatus halStatus;
19942 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019943 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19945
19946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019948 -------------------------------------------------------------------------*/
19949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19950 ( NULL == pEventData->pEventData))
19951 {
19952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019956 }
19957
19958 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19959
19960 /*-------------------------------------------------------------------------
19961 Extract response and send it to UMAC
19962 -------------------------------------------------------------------------*/
19963 halStatus = *((eHalStatus*)pEventData->pEventData);
19964
Jeff Johnsone7245742012-09-05 17:12:55 -070019965 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019966
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019967 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19968 * Other module states are taken care by PMC.
19969 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19970 */
19971 if (wdiStatus != WDI_STATUS_SUCCESS) {
19972
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19974 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19975 halStatus);
19976 /* Call Back is not required as we are putting the DXE in FULL
19977 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019978 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19979
19980 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019982 "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 -080019983 WDI_ASSERT(0);
19984 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019985 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019986 /*Notify UMAC*/
19987 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19988
Jeff Johnsone7245742012-09-05 17:12:55 -070019989 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019990}/*WDI_ProcessEnterImpsRsp*/
19991
19992/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019993 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019995
19996 @param pWDICtx: pointer to the WLAN DAL context
19997 pEventData: pointer to the event information structure
19998
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 @see
20000 @return Result of the function call
20001*/
20002WDI_Status
20003WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020004(
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 WDI_ControlBlockType* pWDICtx,
20006 WDI_EventInfoType* pEventData
20007)
20008{
20009 WDI_Status wdiStatus;
20010 eHalStatus halStatus;
20011 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020012 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20014
20015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020016 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020017 -------------------------------------------------------------------------*/
20018 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20019 ( NULL == pEventData->pEventData))
20020 {
20021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020022 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020025 }
20026
20027 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20028
20029 /*-------------------------------------------------------------------------
20030 Extract response and send it to UMAC
20031 -------------------------------------------------------------------------*/
20032 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020033 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020034
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020035 if (halStatus != eHAL_STATUS_SUCCESS)
20036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20037 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20038
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020040 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20041 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20042 {
20043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020044 "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 -080020045 WDI_ASSERT(0);
20046 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020047 /*Notify UMAC*/
20048 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20049
Jeff Johnsone7245742012-09-05 17:12:55 -070020050 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020051}/*WDI_ProcessExitImpsRsp*/
20052
20053/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020054 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020055 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020056
20057 @param pWDICtx: pointer to the WLAN DAL context
20058 pEventData: pointer to the event information structure
20059
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 @see
20061 @return Result of the function call
20062*/
20063WDI_Status
20064WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020065(
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 WDI_ControlBlockType* pWDICtx,
20067 WDI_EventInfoType* pEventData
20068)
20069{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020070 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20071 tHalEnterBmpsRspParams halEnterBmpsRsp;
20072 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20073 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020074 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20076
20077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020079 -------------------------------------------------------------------------*/
20080 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20081 ( NULL == pEventData->pEventData))
20082 {
20083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020087 }
20088
Jeff Johnson295189b2012-06-20 16:38:30 -070020089 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020090 Extract response and send it to UMAC
20091 -------------------------------------------------------------------------*/
20092 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20093 {
20094 wpalMemoryCopy( &halEnterBmpsRsp,
20095 pEventData->pEventData,
20096 sizeof(halEnterBmpsRsp));
20097
20098 //Used to print debug message
20099 halStatus = halEnterBmpsRsp.status;
20100 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20101 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20102 }
20103 else
20104 {
20105 halStatus = *((eHalStatus*)pEventData->pEventData);
20106 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20107 }
20108
20109 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020110
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020111 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20112 * Other module states are taken care by PMC.
20113 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20114 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020115 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20116 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020117
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020119 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20120 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020121 /* Call Back is not required as we are putting the DXE in FULL
20122 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020123 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20124 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20125 {
20126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020127 "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 -080020128 WDI_ASSERT(0);
20129 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020130 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020131 }
20132
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020134 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020135
Jeff Johnsone7245742012-09-05 17:12:55 -070020136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020137}/*WDI_ProcessEnterBmpsRsp*/
20138
20139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020140 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020142
20143 @param pWDICtx: pointer to the WLAN DAL context
20144 pEventData: pointer to the event information structure
20145
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 @see
20147 @return Result of the function call
20148*/
20149WDI_Status
20150WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020151(
Jeff Johnson295189b2012-06-20 16:38:30 -070020152 WDI_ControlBlockType* pWDICtx,
20153 WDI_EventInfoType* pEventData
20154)
20155{
Jeff Johnson295189b2012-06-20 16:38:30 -070020156 eHalStatus halStatus;
20157 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020158 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020159 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20160 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20162
20163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020165 -------------------------------------------------------------------------*/
20166 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20167 ( NULL == pEventData->pEventData))
20168 {
20169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 }
20174
20175 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20176
20177 /*-------------------------------------------------------------------------
20178 Extract response and send it to UMAC
20179 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020180
20181 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20182 {
20183 wpalMemoryCopy( &halExitBmpsRsp,
20184 pEventData->pEventData,
20185 sizeof(halExitBmpsRsp));
20186
20187 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20188 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20189 }
20190 else
20191 {
20192 halStatus = *((eHalStatus*)pEventData->pEventData);
20193 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20194 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020195
20196 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020197 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20198 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20199 {
20200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020201 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080020202 WDI_ASSERT(0);
20203 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020204 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20205
20206 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020207 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020208
Jeff Johnsone7245742012-09-05 17:12:55 -070020209 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020210}/*WDI_ProcessExitBmpsRsp*/
20211
20212/**
20213 @brief Process Enter UAPSD Rsp function (called when a response
20214 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020215
20216 @param pWDICtx: pointer to the WLAN DAL context
20217 pEventData: pointer to the event information structure
20218
Jeff Johnson295189b2012-06-20 16:38:30 -070020219 @see
20220 @return Result of the function call
20221*/
20222WDI_Status
20223WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020224(
Jeff Johnson295189b2012-06-20 16:38:30 -070020225 WDI_ControlBlockType* pWDICtx,
20226 WDI_EventInfoType* pEventData
20227)
20228{
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020230 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020231 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020232 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20233
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20235
20236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 -------------------------------------------------------------------------*/
20239 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20240 ( NULL == pEventData->pEventData))
20241 {
20242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020246 }
20247
20248 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20249
20250 /*-------------------------------------------------------------------------
20251 Extract response and send it to UMAC
20252 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020253 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20254 {
20255 wpalMemoryCopy( &halEnterUapsdRsp,
20256 pEventData->pEventData,
20257 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020258
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020259 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20260 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20261 }
20262 else
20263 {
20264 halStatus = *((eHalStatus*)pEventData->pEventData);
20265 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20266 }
20267
20268 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020269 {
20270 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20271 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20272 // the traffic to decide when to suspend the trigger frames when there is no traffic
20273 // activity on the trigger enabled ACs
20274 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20275
20276#ifdef WLAN_PERF
20277 // Increment the BD signature to refresh the fast path BD utilization
20278 pWDICtx->uBdSigSerialNum++;
20279#endif
20280 }
20281
20282 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020283 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020284
Jeff Johnsone7245742012-09-05 17:12:55 -070020285 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020286}/*WDI_ProcessEnterUapsdRsp*/
20287
20288/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020289 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020290 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020291
20292 @param pWDICtx: pointer to the WLAN DAL context
20293 pEventData: pointer to the event information structure
20294
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 @see
20296 @return Result of the function call
20297*/
20298WDI_Status
20299WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020300(
Jeff Johnson295189b2012-06-20 16:38:30 -070020301 WDI_ControlBlockType* pWDICtx,
20302 WDI_EventInfoType* pEventData
20303)
20304{
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 eHalStatus halStatus;
20306 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020307 tHalExitUapsdRspParams halExitUapsdRsp;
20308 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20310
20311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020313 -------------------------------------------------------------------------*/
20314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20315 ( NULL == pEventData->pEventData))
20316 {
20317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020321 }
20322
20323 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20324
20325 /*-------------------------------------------------------------------------
20326 Extract response and send it to UMAC
20327 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020328 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20329 {
20330 wpalMemoryCopy( &halExitUapsdRsp,
20331 pEventData->pEventData,
20332 sizeof(halExitUapsdRsp));
20333
20334 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20335 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20336 }
20337 else
20338 {
20339 halStatus = *((eHalStatus*)pEventData->pEventData);
20340 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20341 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020342 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20343 // directly instead of the FW WQ.
20344 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20345
20346#ifdef WLAN_PERF
20347 // Increment the BD signature to refresh the fast path BD utilization
20348 pWDICtx->uBdSigSerialNum++;
20349#endif
20350
20351 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020352 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020353
Jeff Johnsone7245742012-09-05 17:12:55 -070020354 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020355}/*WDI_ProcessExitUapsdRsp*/
20356
20357/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020358 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020360
20361 @param pWDICtx: pointer to the WLAN DAL context
20362 pEventData: pointer to the event information structure
20363
Jeff Johnson295189b2012-06-20 16:38:30 -070020364 @see
20365 @return Result of the function call
20366*/
20367WDI_Status
20368WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020369(
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 WDI_ControlBlockType* pWDICtx,
20371 WDI_EventInfoType* pEventData
20372)
20373{
20374 WDI_Status wdiStatus;
20375 eHalStatus halStatus;
20376 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20378
20379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020380 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 -------------------------------------------------------------------------*/
20382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20383 ( NULL == pEventData->pEventData))
20384 {
20385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020389 }
20390
20391 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20392
20393 /*-------------------------------------------------------------------------
20394 Extract response and send it to UMAC
20395 -------------------------------------------------------------------------*/
20396 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020397 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020398
20399 /*Notify UMAC*/
20400 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20401
Jeff Johnsone7245742012-09-05 17:12:55 -070020402 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020403}/*WDI_ProcessSetUapsdAcParamsRsp*/
20404
20405/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020406 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020408
20409 @param pWDICtx: pointer to the WLAN DAL context
20410 pEventData: pointer to the event information structure
20411
Jeff Johnson295189b2012-06-20 16:38:30 -070020412 @see
20413 @return Result of the function call
20414*/
20415WDI_Status
20416WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020417(
Jeff Johnson295189b2012-06-20 16:38:30 -070020418 WDI_ControlBlockType* pWDICtx,
20419 WDI_EventInfoType* pEventData
20420)
20421{
20422 WDI_Status wdiStatus;
20423 eHalStatus halStatus;
20424 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20426
20427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020429 -------------------------------------------------------------------------*/
20430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20431 ( NULL == pEventData->pEventData))
20432 {
20433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020437 }
20438
20439 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20440
20441 /*-------------------------------------------------------------------------
20442 Extract response and send it to UMAC
20443 -------------------------------------------------------------------------*/
20444 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020445 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020446
20447 /*Notify UMAC*/
20448 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20449
Jeff Johnsone7245742012-09-05 17:12:55 -070020450 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020451}/*WDI_ProcessUpdateUapsdParamsRsp*/
20452
20453/**
20454 @brief Process Configure RXP filter Rsp function (called when a
20455 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020456
20457 @param pWDICtx: pointer to the WLAN DAL context
20458 pEventData: pointer to the event information structure
20459
Jeff Johnson295189b2012-06-20 16:38:30 -070020460 @see
20461 @return Result of the function call
20462*/
20463WDI_Status
20464WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020465(
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 WDI_ControlBlockType* pWDICtx,
20467 WDI_EventInfoType* pEventData
20468)
20469{
20470 WDI_Status wdiStatus;
20471 eHalStatus halStatus;
20472 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20474
20475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 -------------------------------------------------------------------------*/
20478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20479 ( NULL == pEventData->pEventData))
20480 {
20481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 }
20486
20487 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20488
20489 /*-------------------------------------------------------------------------
20490 Extract response and send it to UMAC
20491 -------------------------------------------------------------------------*/
20492 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020493 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020494
20495 /*Notify UMAC*/
20496 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20497
Jeff Johnsone7245742012-09-05 17:12:55 -070020498 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020499}/*WDI_ProcessConfigureRxpFilterRsp*/
20500
20501/**
20502 @brief Process Set beacon filter Rsp function (called when a
20503 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020504
20505 @param pWDICtx: pointer to the WLAN DAL context
20506 pEventData: pointer to the event information structure
20507
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 @see
20509 @return Result of the function call
20510*/
20511WDI_Status
20512WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020513(
Jeff Johnson295189b2012-06-20 16:38:30 -070020514 WDI_ControlBlockType* pWDICtx,
20515 WDI_EventInfoType* pEventData
20516)
20517{
20518 WDI_Status wdiStatus;
20519 eHalStatus halStatus;
20520 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20522
20523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 -------------------------------------------------------------------------*/
20526 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20527 ( NULL == pEventData->pEventData))
20528 {
20529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020533 }
20534
20535 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20536
20537 /*-------------------------------------------------------------------------
20538 Extract response and send it to UMAC
20539 -------------------------------------------------------------------------*/
20540 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020541 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020542
20543 /*Notify UMAC*/
20544 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20545
Jeff Johnsone7245742012-09-05 17:12:55 -070020546 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020547}/*WDI_ProcessSetBeaconFilterRsp*/
20548
20549/**
20550 @brief Process remove beacon filter Rsp function (called when a
20551 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020552
20553 @param pWDICtx: pointer to the WLAN DAL context
20554 pEventData: pointer to the event information structure
20555
Jeff Johnson295189b2012-06-20 16:38:30 -070020556 @see
20557 @return Result of the function call
20558*/
20559WDI_Status
20560WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020561(
Jeff Johnson295189b2012-06-20 16:38:30 -070020562 WDI_ControlBlockType* pWDICtx,
20563 WDI_EventInfoType* pEventData
20564)
20565{
20566 WDI_Status wdiStatus;
20567 eHalStatus halStatus;
20568 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20570
20571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020573 -------------------------------------------------------------------------*/
20574 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20575 ( NULL == pEventData->pEventData))
20576 {
20577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 }
20582
20583 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20584
20585 /*-------------------------------------------------------------------------
20586 Extract response and send it to UMAC
20587 -------------------------------------------------------------------------*/
20588 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020589 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020590
20591 /*Notify UMAC*/
20592 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20593
Jeff Johnsone7245742012-09-05 17:12:55 -070020594 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595}/*WDI_ProcessRemBeaconFilterRsp*/
20596
20597/**
20598 @brief Process set RSSI thresholds Rsp function (called when a
20599 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020600
20601 @param pWDICtx: pointer to the WLAN DAL context
20602 pEventData: pointer to the event information structure
20603
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 @see
20605 @return Result of the function call
20606*/
20607WDI_Status
20608WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020609(
Jeff Johnson295189b2012-06-20 16:38:30 -070020610 WDI_ControlBlockType* pWDICtx,
20611 WDI_EventInfoType* pEventData
20612)
20613{
20614 WDI_Status wdiStatus;
20615 eHalStatus halStatus;
20616 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20618
20619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020620 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020621 -------------------------------------------------------------------------*/
20622 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20623 ( NULL == pEventData->pEventData))
20624 {
20625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 }
20630
20631 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20632
20633 /*-------------------------------------------------------------------------
20634 Extract response and send it to UMAC
20635 -------------------------------------------------------------------------*/
20636 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020637 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020638
20639 /*Notify UMAC*/
20640 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20641
Jeff Johnsone7245742012-09-05 17:12:55 -070020642 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020643}/*WDI_ProcessSetRSSIThresoldsRsp*/
20644
20645/**
20646 @brief Process host offload Rsp function (called when a
20647 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020648
20649 @param pWDICtx: pointer to the WLAN DAL context
20650 pEventData: pointer to the event information structure
20651
Jeff Johnson295189b2012-06-20 16:38:30 -070020652 @see
20653 @return Result of the function call
20654*/
20655WDI_Status
20656WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020657(
Jeff Johnson295189b2012-06-20 16:38:30 -070020658 WDI_ControlBlockType* pWDICtx,
20659 WDI_EventInfoType* pEventData
20660)
20661{
20662 WDI_Status wdiStatus;
20663 eHalStatus halStatus;
20664 WDI_HostOffloadCb wdiHostOffloadCb;
20665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20666
20667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 -------------------------------------------------------------------------*/
20670 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20671 ( NULL == pEventData->pEventData))
20672 {
20673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 }
20678
20679 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20680
20681 /*-------------------------------------------------------------------------
20682 Extract response and send it to UMAC
20683 -------------------------------------------------------------------------*/
20684 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020685 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020686
20687 /*Notify UMAC*/
20688 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20689
Jeff Johnsone7245742012-09-05 17:12:55 -070020690 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020691}/*WDI_ProcessHostOffloadRsp*/
20692
20693/**
20694 @brief Process keep alive Rsp function (called when a
20695 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020696
20697 @param pWDICtx: pointer to the WLAN DAL context
20698 pEventData: pointer to the event information structure
20699
Jeff Johnson295189b2012-06-20 16:38:30 -070020700 @see
20701 @return Result of the function call
20702*/
20703WDI_Status
20704WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020705(
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 WDI_ControlBlockType* pWDICtx,
20707 WDI_EventInfoType* pEventData
20708)
20709{
20710 WDI_Status wdiStatus;
20711 eHalStatus halStatus;
20712 WDI_KeepAliveCb wdiKeepAliveCb;
20713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20715 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20716
20717
20718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020720 -------------------------------------------------------------------------*/
20721 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20722 ( NULL == pEventData->pEventData))
20723 {
20724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 }
20729
Jeff Johnsone7245742012-09-05 17:12:55 -070020730 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20731
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 /*-------------------------------------------------------------------------
20733 Extract response and send it to UMAC
20734 -------------------------------------------------------------------------*/
20735 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020736 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020737
20738 /*Notify UMAC*/
20739 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20740
Jeff Johnsone7245742012-09-05 17:12:55 -070020741 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020742}/*WDI_ProcessKeepAliveRsp*/
20743
20744/**
20745 @brief Process wowl add ptrn Rsp function (called when a
20746 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020747
20748 @param pWDICtx: pointer to the WLAN DAL context
20749 pEventData: pointer to the event information structure
20750
Jeff Johnson295189b2012-06-20 16:38:30 -070020751 @see
20752 @return Result of the function call
20753*/
20754WDI_Status
20755WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020756(
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 WDI_ControlBlockType* pWDICtx,
20758 WDI_EventInfoType* pEventData
20759)
20760{
Jeff Johnson295189b2012-06-20 16:38:30 -070020761 eHalStatus halStatus;
20762 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020763 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20764 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20765
Jeff Johnson295189b2012-06-20 16:38:30 -070020766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20767
20768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020769 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020770 -------------------------------------------------------------------------*/
20771 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20772 ( NULL == pEventData->pEventData))
20773 {
20774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020775 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 }
20779
20780 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20781
20782 /*-------------------------------------------------------------------------
20783 Extract response and send it to UMAC
20784 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020785 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20786 {
20787 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20788 pEventData->pEventData,
20789 sizeof(halAddWowlBcastPtrRsp));
20790
20791 wdiWowlAddBcPtrRsp.wdiStatus =
20792 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20793 }
20794 else
20795 {
20796 halStatus = *((eHalStatus*)pEventData->pEventData);
20797 wdiWowlAddBcPtrRsp.wdiStatus =
20798 WDI_HAL_2_WDI_STATUS(halStatus);
20799 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020800
20801 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020802 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020803
Jeff Johnsone7245742012-09-05 17:12:55 -070020804 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020805}/*WDI_ProcessWowlAddBcPtrnRsp*/
20806
20807/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020810
20811 @param pWDICtx: pointer to the WLAN DAL context
20812 pEventData: pointer to the event information structure
20813
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 @see
20815 @return Result of the function call
20816*/
20817WDI_Status
20818WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020819(
Jeff Johnson295189b2012-06-20 16:38:30 -070020820 WDI_ControlBlockType* pWDICtx,
20821 WDI_EventInfoType* pEventData
20822)
20823{
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 eHalStatus halStatus;
20825 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020826 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20827 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20829
20830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020831 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020832 -------------------------------------------------------------------------*/
20833 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20834 ( NULL == pEventData->pEventData))
20835 {
20836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020837 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 }
20841
20842 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20843
20844 /*-------------------------------------------------------------------------
20845 Extract response and send it to UMAC
20846 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020847 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20848 {
20849 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20850 pEventData->pEventData,
20851 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020852
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020853 wdiWowlDelBcstPtrRsp.wdiStatus =
20854 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20855 }
20856 else
20857 {
20858 halStatus = *((eHalStatus*)pEventData->pEventData);
20859 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20860 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020862 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020863
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020865}/*WDI_ProcessWowlDelBcPtrnRsp*/
20866
20867/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020868 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020869 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020870
20871 @param pWDICtx: pointer to the WLAN DAL context
20872 pEventData: pointer to the event information structure
20873
Jeff Johnson295189b2012-06-20 16:38:30 -070020874 @see
20875 @return Result of the function call
20876*/
20877WDI_Status
20878WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020879(
Jeff Johnson295189b2012-06-20 16:38:30 -070020880 WDI_ControlBlockType* pWDICtx,
20881 WDI_EventInfoType* pEventData
20882)
20883{
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 eHalStatus halStatus;
20885 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020886 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20887 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20889
20890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020892 -------------------------------------------------------------------------*/
20893 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20894 ( NULL == pEventData->pEventData))
20895 {
20896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 }
20901
20902 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20903
20904 /*-------------------------------------------------------------------------
20905 Extract response and send it to UMAC
20906 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020907 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20908 {
20909 wpalMemoryCopy( &halEnterWowlRspParams,
20910 (wpt_uint8*)pEventData->pEventData,
20911 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020912
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020913 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20914 wdiwowlEnterRsp.status =
20915 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20916 }
20917 else
20918 {
20919 halStatus = *((eHalStatus*)pEventData->pEventData);
20920 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20921 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020923 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020924
Jeff Johnsone7245742012-09-05 17:12:55 -070020925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020926}/*WDI_ProcessWowlEnterRsp*/
20927
20928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020931
20932 @param pWDICtx: pointer to the WLAN DAL context
20933 pEventData: pointer to the event information structure
20934
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 @see
20936 @return Result of the function call
20937*/
20938WDI_Status
20939WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020940(
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 WDI_ControlBlockType* pWDICtx,
20942 WDI_EventInfoType* pEventData
20943)
20944{
Jeff Johnson295189b2012-06-20 16:38:30 -070020945 eHalStatus halStatus;
20946 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020947 tHalExitWowlRspParams halExitWowlRspParams;
20948 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20949
Jeff Johnson295189b2012-06-20 16:38:30 -070020950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20951
20952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020954 -------------------------------------------------------------------------*/
20955 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20956 ( NULL == pEventData->pEventData))
20957 {
20958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020962 }
20963
20964 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20965
20966 /*-------------------------------------------------------------------------
20967 Extract response and send it to UMAC
20968 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020969 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20970 {
20971 wpalMemoryCopy( &halExitWowlRspParams,
20972 pEventData->pEventData,
20973 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020974
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020975 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20976 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20977
20978 }
20979 else
20980 {
20981 halStatus = *((eHalStatus*)pEventData->pEventData);
20982 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20983 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020984 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020985 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020986
Jeff Johnsone7245742012-09-05 17:12:55 -070020987 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020988}/*WDI_ProcessWowlExitRsp*/
20989
20990/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020992 (called when a response is being received over the bus
20993 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020994
20995 @param pWDICtx: pointer to the WLAN DAL context
20996 pEventData: pointer to the event information structure
20997
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 @see
20999 @return Result of the function call
21000*/
21001WDI_Status
21002WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021003(
Jeff Johnson295189b2012-06-20 16:38:30 -070021004 WDI_ControlBlockType* pWDICtx,
21005 WDI_EventInfoType* pEventData
21006)
21007{
21008 WDI_Status wdiStatus;
21009 eHalStatus halStatus;
21010 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21012
21013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021015 -------------------------------------------------------------------------*/
21016 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21017 ( NULL == pEventData->pEventData))
21018 {
21019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021023 }
21024
21025 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21026
21027 /*-------------------------------------------------------------------------
21028 Extract response and send it to UMAC
21029 -------------------------------------------------------------------------*/
21030 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021031 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021032
21033 /*Notify UMAC*/
21034 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21035
Jeff Johnsone7245742012-09-05 17:12:55 -070021036 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021037}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21038
21039
21040/**
21041 @brief Process Nv download(called when a response
21042 is being received over the bus from HAL,will check if the responce is )
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_ProcessNvDownloadRsp
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
21058 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21059 tHalNvImgDownloadRspParams halNvDownloadRsp;
21060 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
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 /*-------------------------------------------------------------------------
21075 Extract response and send it to UMAC
21076 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 wpalMemoryCopy( &halNvDownloadRsp,
21078 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021079 sizeof(halNvDownloadRsp));
21080
21081 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21082
21083 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021084 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21085 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021086 {
21087 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 }
21090 else
21091 {
21092 /*Reset the Nv related global information in WDI context information */
21093 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21094 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21095 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21096 /*call WDA callback function for last fragment */
21097 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21098 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21099 }
21100
Jeff Johnsone7245742012-09-05 17:12:55 -070021101 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021102}
21103#ifdef WLAN_FEATURE_VOWIFI_11R
21104/**
21105 @brief Process Add TSpec Rsp function (called when a response
21106 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021107
21108 @param pWDICtx: pointer to the WLAN DAL context
21109 pEventData: pointer to the event information structure
21110
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 @see
21112 @return Result of the function call
21113*/
21114WDI_Status
21115WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021116(
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 WDI_ControlBlockType* pWDICtx,
21118 WDI_EventInfoType* pEventData
21119)
21120{
21121 WDI_Status wdiStatus;
21122 tAggrAddTsRspParams aggrAddTsRsp;
21123 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21125
21126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021128 -------------------------------------------------------------------------*/
21129 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21130 ( NULL == pEventData->pEventData))
21131 {
21132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021136 }
21137
21138 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21139
21140 /*-------------------------------------------------------------------------
21141 Extract response and send it to UMAC
21142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 wpalMemoryCopy( &aggrAddTsRsp,
21144 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021145 sizeof(aggrAddTsRsp));
21146
21147 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021149
21150 /*Notify UMAC*/
21151 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21152
Jeff Johnsone7245742012-09-05 17:12:55 -070021153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021154}/*WDI_ProcessAddTSpecRsp*/
21155#endif /* WLAN_FEATURE_VOWIFI_11R */
21156
21157/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021158 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021159 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021160
21161 @param pWDICtx: pointer to the WLAN DAL context
21162 pEventData: pointer to the event information structure
21163
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 @see
21165 @return Result of the function call
21166*/
21167WDI_Status
21168WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021169(
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 WDI_ControlBlockType* pWDICtx,
21171 WDI_EventInfoType* pEventData
21172)
21173{
21174 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21175 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21176 tHalHostResumeRspParams hostResumeRspMsg;
21177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21178
21179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 -------------------------------------------------------------------------*/
21182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21183 ( NULL == pEventData->pEventData))
21184 {
21185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021189 }
21190
21191 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21192
21193 /*-------------------------------------------------------------------------
21194 Extract response and send it to UMAC
21195 -------------------------------------------------------------------------*/
21196
Jeff Johnsone7245742012-09-05 17:12:55 -070021197 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021198 (wpt_uint8*)pEventData->pEventData,
21199 sizeof(hostResumeRspMsg));
21200
Jeff Johnsone7245742012-09-05 17:12:55 -070021201 wdiResumeRspParams.wdiStatus =
21202 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021203
21204 /*Notify UMAC*/
21205 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21206
21207 return WDI_STATUS_SUCCESS;
21208}
21209
21210/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021211 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021212 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021213
21214 @param pWDICtx: pointer to the WLAN DAL context
21215 pEventData: pointer to the event information structure
21216
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 @see
21218 @return Result of the function call
21219*/
21220WDI_Status
21221WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021222(
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 WDI_ControlBlockType* pWDICtx,
21224 WDI_EventInfoType* pEventData
21225)
21226{
21227 WDI_Status wdiStatus;
21228 eHalStatus halStatus;
21229 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21231
21232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021234 -------------------------------------------------------------------------*/
21235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21236 ( NULL == pEventData->pEventData))
21237 {
21238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021242 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021243
21244 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021245
21246 /*-------------------------------------------------------------------------
21247 Extract response and send it to UMAC
21248 -------------------------------------------------------------------------*/
21249 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021250 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021251
21252 /*Notify UMAC*/
21253 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21254
Jeff Johnsone7245742012-09-05 17:12:55 -070021255 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021256}/*WDI_ProcessSetTxPerTrackingRsp*/
21257
21258/*==========================================================================
21259 Indications from HAL
21260 ==========================================================================*/
21261/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021263 indication of this kind is being received over the bus
21264 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021265
21266 @param pWDICtx: pointer to the WLAN DAL context
21267 pEventData: pointer to the event information structure
21268
Jeff Johnson295189b2012-06-20 16:38:30 -070021269 @see
21270 @return Result of the function call
21271*/
21272WDI_Status
21273WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021274(
Jeff Johnson295189b2012-06-20 16:38:30 -070021275 WDI_ControlBlockType* pWDICtx,
21276 WDI_EventInfoType* pEventData
21277)
21278{
21279 WDI_LowLevelIndType wdiInd;
21280 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21282
21283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021285 -------------------------------------------------------------------------*/
21286 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21287 ( NULL == pEventData->pEventData))
21288 {
21289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021290 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 }
21294
21295 /*-------------------------------------------------------------------------
21296 Extract indication and send it to UMAC
21297 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021298 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21299 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021300 sizeof(tHalRSSINotification));
21301
21302 /*Fill in the indication parameters*/
21303 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21304 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21305 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21306 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21307 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21308 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21309 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21310 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21311 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21312 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21313 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21314 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21315 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021316 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21317 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021318
ltimariub77f24b2013-01-24 18:54:33 -080021319 if ( pWDICtx->wdiLowLevelIndCB )
21320 {
21321 /*Notify UMAC of indication*/
21322 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21323 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021324
21325 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021326}/*WDI_ProcessLowRSSIInd*/
21327
21328
21329/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021330 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021331 an indication of this kind is being received over the
21332 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021333
21334 @param pWDICtx: pointer to the WLAN DAL context
21335 pEventData: pointer to the event information structure
21336
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 @see
21338 @return Result of the function call
21339*/
21340WDI_Status
21341WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021342(
Jeff Johnson295189b2012-06-20 16:38:30 -070021343 WDI_ControlBlockType* pWDICtx,
21344 WDI_EventInfoType* pEventData
21345)
21346{
21347 WDI_Status wdiStatus;
21348 eHalStatus halStatus;
21349 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021350 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21352
21353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 -------------------------------------------------------------------------*/
21356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21357 ( NULL == pEventData->pEventData))
21358 {
21359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021363 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021364 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021365 /*-------------------------------------------------------------------------
21366 Extract indication and send it to UMAC
21367 -------------------------------------------------------------------------*/
21368 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21369 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021370 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021371
21372 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021373 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021374 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21375 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021376 if ( pWDICtx->wdiLowLevelIndCB )
21377 {
21378 /*Notify UMAC*/
21379 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21380 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021381
21382 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021383}/*WDI_ProcessMissedBeaconInd*/
21384
21385
21386/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021387 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021388 an indication of this kind is being received over the
21389 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021390
21391 @param pWDICtx: pointer to the WLAN DAL context
21392 pEventData: pointer to the event information structure
21393
Jeff Johnson295189b2012-06-20 16:38:30 -070021394 @see
21395 @return Result of the function call
21396*/
21397WDI_Status
21398WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021399(
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 WDI_ControlBlockType* pWDICtx,
21401 WDI_EventInfoType* pEventData
21402)
21403{
21404 WDI_Status wdiStatus;
21405 eHalStatus halStatus;
21406 WDI_LowLevelIndType wdiInd;
21407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21408
21409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021411 -------------------------------------------------------------------------*/
21412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21413 ( NULL == pEventData->pEventData))
21414 {
21415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021419 }
21420
21421 /*-------------------------------------------------------------------------
21422 Extract indication and send it to UMAC
21423 -------------------------------------------------------------------------*/
21424 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21425 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021426 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021427
21428 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021429 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021430 /* ! TO DO - fill in from HAL struct:
21431 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21432
ltimariub77f24b2013-01-24 18:54:33 -080021433 if ( pWDICtx->wdiLowLevelIndCB )
21434 {
21435 /*Notify UMAC*/
21436 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21437 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021438
21439 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021440}/*WDI_ProcessUnkAddrFrameInd*/
21441
21442
21443/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021444 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 indication of this kind is being received over the bus
21446 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021447
21448 @param pWDICtx: pointer to the WLAN DAL context
21449 pEventData: pointer to the event information structure
21450
Jeff Johnson295189b2012-06-20 16:38:30 -070021451 @see
21452 @return Result of the function call
21453*/
21454WDI_Status
21455WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021456(
Jeff Johnson295189b2012-06-20 16:38:30 -070021457 WDI_ControlBlockType* pWDICtx,
21458 WDI_EventInfoType* pEventData
21459)
21460{
21461 WDI_LowLevelIndType wdiInd;
21462 tpSirMicFailureInd pHalMicFailureInd;
21463
21464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21465
21466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 -------------------------------------------------------------------------*/
21469 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21470 ( NULL == pEventData->pEventData))
21471 {
21472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021476 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021477
Jeff Johnson295189b2012-06-20 16:38:30 -070021478 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21479 /*-------------------------------------------------------------------------
21480 Extract indication and send it to UMAC
21481 -------------------------------------------------------------------------*/
21482
21483 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021484 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021485 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21486 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21487 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21488 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21489 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21490 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21491 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21492 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021493 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021494 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021497 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 pHalMicFailureInd->info.keyId;
21499 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21500 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21501 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21502 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021503
21504 if ( pWDICtx->wdiLowLevelIndCB )
21505 {
21506 /*Notify UMAC*/
21507 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21508 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021509
21510 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021511}/*WDI_ProcessMicFailureInd*/
21512
21513
21514/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021515 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021516 an indication of this kind is being received over the
21517 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021518
21519 @param pWDICtx: pointer to the WLAN DAL context
21520 pEventData: pointer to the event information structure
21521
Jeff Johnson295189b2012-06-20 16:38:30 -070021522 @see
21523 @return Result of the function call
21524*/
21525WDI_Status
21526WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021527(
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 WDI_ControlBlockType* pWDICtx,
21529 WDI_EventInfoType* pEventData
21530)
21531{
21532 WDI_Status wdiStatus;
21533 eHalStatus halStatus;
21534 WDI_LowLevelIndType wdiInd;
21535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21536
21537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021539 -------------------------------------------------------------------------*/
21540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21541 ( NULL == pEventData->pEventData))
21542 {
21543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 }
21548
21549 /*-------------------------------------------------------------------------
21550 Extract indication and send it to UMAC
21551 -------------------------------------------------------------------------*/
21552
21553 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21554 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021555 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021556
21557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21558 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021559
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021561 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21562 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021563
ltimariub77f24b2013-01-24 18:54:33 -080021564 if ( pWDICtx->wdiLowLevelIndCB )
21565 {
21566 /*Notify UMAC*/
21567 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21568 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021569
21570 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021571}/*WDI_ProcessFatalErrorInd*/
21572
21573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021574 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021575 an indication of this kind is being received over the
21576 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021577
21578 @param pWDICtx: pointer to the WLAN DAL context
21579 pEventData: pointer to the event information structure
21580
Jeff Johnson295189b2012-06-20 16:38:30 -070021581 @see
21582 @return Result of the function call
21583*/
21584WDI_Status
21585WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021586(
Jeff Johnson295189b2012-06-20 16:38:30 -070021587 WDI_ControlBlockType* pWDICtx,
21588 WDI_EventInfoType* pEventData
21589)
21590{
21591 tDeleteStaContextParams halDelSTACtx;
21592 WDI_LowLevelIndType wdiInd;
21593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21594
21595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021596 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021597 -------------------------------------------------------------------------*/
21598 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21599 ( NULL == pEventData->pEventData))
21600 {
21601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021602 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021605 }
21606
21607 /*-------------------------------------------------------------------------
21608 Extract indication and send it to UMAC
21609 -------------------------------------------------------------------------*/
21610
21611 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021612 wpalMemoryCopy( &halDelSTACtx,
21613 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 sizeof(halDelSTACtx));
21615
21616 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021617 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021618
21619 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21620 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21621 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21622 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21623
Jeff Johnsone7245742012-09-05 17:12:55 -070021624 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021625 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021626 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021627 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021628 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21629 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021630
ltimariub77f24b2013-01-24 18:54:33 -080021631 if ( pWDICtx->wdiLowLevelIndCB )
21632 {
21633 /*Notify UMAC*/
21634 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21635 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021636
21637 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021638}/*WDI_ProcessDelSTAInd*/
21639
21640/**
21641*@brief Process Coex Indication function (called when
21642 an indication of this kind is being received over the
21643 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021644
21645 @param pWDICtx: pointer to the WLAN DAL context
21646 pEventData: pointer to the event information structure
21647
Jeff Johnson295189b2012-06-20 16:38:30 -070021648 @see
21649 @return Result of the function call
21650*/
21651WDI_Status
21652WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021653(
Jeff Johnson295189b2012-06-20 16:38:30 -070021654 WDI_ControlBlockType* pWDICtx,
21655 WDI_EventInfoType* pEventData
21656)
21657{
21658 WDI_LowLevelIndType wdiInd;
21659 tCoexIndMsg halCoexIndMsg;
21660 wpt_uint32 index;
21661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21662
21663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021665 -------------------------------------------------------------------------*/
21666 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21667 ( NULL == pEventData->pEventData ))
21668 {
21669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021673 }
21674
21675 /*-------------------------------------------------------------------------
21676 Extract indication and send it to UMAC
21677 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21679 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021680 sizeof(halCoexIndMsg.coexIndParams) );
21681
21682 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021683 wdiInd.wdiIndicationType = WDI_COEX_IND;
21684 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21686 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021687 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 }
21689
21690 // DEBUG
21691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21692 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21694 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21695 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21696 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21697 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021698
ltimariub77f24b2013-01-24 18:54:33 -080021699 if ( pWDICtx->wdiLowLevelIndCB )
21700 {
21701 /*Notify UMAC*/
21702 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21703 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021704
21705 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021706}/*WDI_ProcessCoexInd*/
21707
21708/**
21709*@brief Process Tx Complete Indication function (called when
21710 an indication of this kind is being received over the
21711 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021712
21713 @param pWDICtx: pointer to the WLAN DAL context
21714 pEventData: pointer to the event information structure
21715
Jeff Johnson295189b2012-06-20 16:38:30 -070021716 @see
21717 @return Result of the function call
21718*/
21719WDI_Status
21720WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021721(
Jeff Johnson295189b2012-06-20 16:38:30 -070021722 WDI_ControlBlockType* pWDICtx,
21723 WDI_EventInfoType* pEventData
21724)
21725{
21726 WDI_LowLevelIndType wdiInd;
21727 tTxComplIndMsg halTxComplIndMsg;
21728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21729
21730 /*-------------------------------------------------------------------------
21731 Sanity check
21732 -------------------------------------------------------------------------*/
21733 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21734 ( NULL == pEventData->pEventData ))
21735 {
21736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021738 WDI_ASSERT( 0 );
21739 return WDI_STATUS_E_FAILURE;
21740 }
21741
21742 /*-------------------------------------------------------------------------
21743 Extract indication and send it to UMAC
21744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021745 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21746 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021747 sizeof(halTxComplIndMsg.txComplParams) );
21748
21749 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021750 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021751
21752 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21753 &halTxComplIndMsg.txComplParams,
21754 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021755
ltimariub77f24b2013-01-24 18:54:33 -080021756 if ( pWDICtx->wdiLowLevelIndCB )
21757 {
21758 /*Notify UMAC*/
21759 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21760 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021761
21762 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021763}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021764#ifdef FEATURE_WLAN_TDLS
21765/**
21766*@brief Process TDLS Indication function (called when
21767 an indication of this kind is being received over the
21768 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021769
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021770 @param pWDICtx: pointer to the WLAN DAL context
21771 pEventData: pointer to the event information structure
21772
21773 @see
21774 @return Result of the function call
21775*/
21776WDI_Status
21777WDI_ProcessTdlsInd
21778(
21779 WDI_ControlBlockType* pWDICtx,
21780 WDI_EventInfoType* pEventData
21781)
21782{
21783 WDI_LowLevelIndType wdiInd;
21784 tTdlsIndMsg halTdlsIndMsg;
21785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21786
21787 /*-------------------------------------------------------------------------
21788 Sanity check
21789 -------------------------------------------------------------------------*/
21790 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21791 ( NULL == pEventData->pEventData ))
21792 {
21793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21794 "%s: Invalid parameters", __func__);
21795 WDI_ASSERT( 0 );
21796 return WDI_STATUS_E_FAILURE;
21797 }
21798
21799 /*-------------------------------------------------------------------------
21800 Extract indication and send it to UMAC
21801 -------------------------------------------------------------------------*/
21802 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21803 pEventData->pEventData,
21804 sizeof(halTdlsIndMsg.tdlsIndParams) );
21805
21806 /*Fill in the indication parameters*/
21807 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21808
21809 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21810 = halTdlsIndMsg.tdlsIndParams.status;
21811
21812 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21813 = halTdlsIndMsg.tdlsIndParams.staIdx;
21814
21815 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21816 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21817
Atul Mittalbb2aad02014-09-22 19:09:36 +053021818 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21819 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021820 /*Notify UMAC*/
21821 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21822
21823 return WDI_STATUS_SUCCESS;
21824}/*WDI_ProcessTdlsInd*/
21825#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021826/**
Viral Modid86bde22012-12-10 13:09:21 -080021827*@brief Process Noa Start Indication function (called when
21828 an indication of this kind is being received over the
21829 bus from HAL)
21830
21831 @param pWDICtx: pointer to the WLAN DAL context
21832 pEventData: pointer to the event information structure
21833
21834 @see
21835 @return Result of the function call
21836*/
21837WDI_Status
21838WDI_ProcessP2pNoaStartInd
21839(
21840 WDI_ControlBlockType* pWDICtx,
21841 WDI_EventInfoType* pEventData
21842)
21843{
21844 WDI_LowLevelIndType wdiInd;
21845 tNoaStartIndMsg halNoaStartIndMsg;
21846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21847
21848 /*-------------------------------------------------------------------------
21849 Sanity check
21850 -------------------------------------------------------------------------*/
21851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21852 ( NULL == pEventData->pEventData ))
21853 {
21854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21855 "%s: Invalid parameters", __func__);
21856 WDI_ASSERT( 0 );
21857 return WDI_STATUS_E_FAILURE;
21858 }
21859
21860 /*-------------------------------------------------------------------------
21861 Extract indication and send it to UMAC
21862 -------------------------------------------------------------------------*/
21863 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21864 pEventData->pEventData,
21865 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21866
21867 /*Fill in the indication parameters*/
21868 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21869
21870 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21871 = halNoaStartIndMsg.noaStartIndParams.status;
21872
21873 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21874 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21875
21876 /*Notify UMAC*/
21877 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21878
21879 return WDI_STATUS_SUCCESS;
21880}/*WDI_ProcessNoaAttrInd*/
21881
21882/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021883*@brief Process Noa Attr Indication function (called when
21884 an indication of this kind is being received over the
21885 bus from HAL)
21886
21887 @param pWDICtx: pointer to the WLAN DAL context
21888 pEventData: pointer to the event information structure
21889
21890 @see
21891 @return Result of the function call
21892*/
21893WDI_Status
21894WDI_ProcessP2pNoaAttrInd
21895(
21896 WDI_ControlBlockType* pWDICtx,
21897 WDI_EventInfoType* pEventData
21898)
21899{
21900 WDI_LowLevelIndType wdiInd;
21901 tNoaAttrIndMsg halNoaAttrIndMsg;
21902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21903
21904 /*-------------------------------------------------------------------------
21905 Sanity check
21906 -------------------------------------------------------------------------*/
21907 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21908 ( NULL == pEventData->pEventData ))
21909 {
21910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 WDI_ASSERT( 0 );
21913 return WDI_STATUS_E_FAILURE;
21914 }
21915
21916 /*-------------------------------------------------------------------------
21917 Extract indication and send it to UMAC
21918 -------------------------------------------------------------------------*/
21919 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21920 pEventData->pEventData,
21921 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21922
21923 /*Fill in the indication parameters*/
21924 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021925
Jeff Johnson295189b2012-06-20 16:38:30 -070021926 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21927 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021928
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21930 = halNoaAttrIndMsg.noaAttrIndParams.index;
21931 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21932 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21933 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21934 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021935
Jeff Johnson295189b2012-06-20 16:38:30 -070021936 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21937 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21938 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21939 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21940 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21941 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21942 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21943 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021944
Jeff Johnson295189b2012-06-20 16:38:30 -070021945 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21946 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21947 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21948 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21949 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21950 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21951 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21952 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21953
ltimariub77f24b2013-01-24 18:54:33 -080021954 if ( pWDICtx->wdiLowLevelIndCB )
21955 {
21956 /*Notify UMAC*/
21957 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21958 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021959
21960 return WDI_STATUS_SUCCESS;
21961}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021962
21963/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021964 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 an indication of this kind is being received over the
21966 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021967
21968 @param pWDICtx: pointer to the WLAN DAL context
21969 pEventData: pointer to the event information structure
21970
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 @see
21972 @return Result of the function call
21973*/
21974WDI_Status
21975WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021976(
Jeff Johnson295189b2012-06-20 16:38:30 -070021977 WDI_ControlBlockType* pWDICtx,
21978 WDI_EventInfoType* pEventData
21979)
21980{
21981 WDI_LowLevelIndType wdiInd;
21982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021983
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 /*-------------------------------------------------------------------------
21985 Extract indication and send it to UMAC
21986 -------------------------------------------------------------------------*/
21987 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21989
ltimariub77f24b2013-01-24 18:54:33 -080021990 if ( pWDICtx->wdiLowLevelIndCB )
21991 {
21992 /*Notify UMAC*/
21993 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21994 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021995
Jeff Johnsone7245742012-09-05 17:12:55 -070021996 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021997}/*WDI_ProcessTxPerHitInd*/
21998
Jeff Johnson295189b2012-06-20 16:38:30 -070021999/**
Yue Mab9c86f42013-08-14 15:59:08 -070022000 @brief Process Periodic Tx Pattern Fw Indication function
22001
22002 @param pWDICtx: pointer to the WLAN DAL context
22003 pEventData: pointer to the event information structure
22004
22005 @see
22006 @return Result of the function call
22007*/
22008WDI_Status
22009WDI_ProcessPeriodicTxPtrnFwInd
22010(
22011 WDI_ControlBlockType* pWDICtx,
22012 WDI_EventInfoType* pEventData
22013)
22014{
22015 WDI_LowLevelIndType wdiInd;
22016
22017 /*-------------------------------------------------------------------------
22018 Sanity check
22019 -------------------------------------------------------------------------*/
22020 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22021 (NULL == pEventData->pEventData))
22022 {
22023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22024 "%s: Invalid parameters", __func__);
22025 WDI_ASSERT(0);
22026 return WDI_STATUS_E_FAILURE;
22027 }
22028
22029 /*-------------------------------------------------------------------------
22030 Extract indication and send it to UMAC
22031 -------------------------------------------------------------------------*/
22032 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22033 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22034 sizeof(tHalPeriodicTxPtrnFwInd));
22035
22036 if (pWDICtx->wdiLowLevelIndCB)
22037 {
22038 /*Notify UMAC*/
22039 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22040 }
22041
22042 return WDI_STATUS_SUCCESS;
22043}
22044
22045/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 @brief WDI_ProcessFTMCommandReq
22047 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022048
22049 @param pWDICtx: pointer to the WLAN DAL context
22050 pEventData: pointer to the event information structure
22051
Jeff Johnson295189b2012-06-20 16:38:30 -070022052 @see
22053 @return Result of the function call
22054*/
22055WDI_Status
22056WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022057(
Jeff Johnson295189b2012-06-20 16:38:30 -070022058 WDI_ControlBlockType* pWDICtx,
22059 WDI_EventInfoType* pEventData
22060)
22061{
22062 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22063 wpt_uint8 *ftmCommandBuffer = NULL;
22064 wpt_uint16 dataOffset;
22065 wpt_uint16 bufferSize;
22066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022067 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 -------------------------------------------------------------------------*/
22069 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22070 ( NULL == pEventData->pEventData))
22071
22072 {
22073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022077 }
22078
22079 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22080
22081 /* Get MSG Buffer */
22082 WDI_GetMessageBuffer(pWDICtx,
22083 WDI_FTM_CMD_REQ,
22084 ftmCommandReq->bodyLength,
22085 &ftmCommandBuffer,
22086 &dataOffset,
22087 &bufferSize);
22088
22089 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22090 ftmCommandReq->FTMCommandBody,
22091 ftmCommandReq->bodyLength);
22092
22093 /* Send MSG */
22094 return WDI_SendMsg(pWDICtx,
22095 ftmCommandBuffer,
22096 bufferSize,
22097 pEventData->pCBfnc,
22098 pEventData->pUserData,
22099 WDI_FTM_CMD_RESP);
22100}
22101
22102/**
22103 @brief WDI_ProcessFTMCommandRsp
22104 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022105
22106 @param pWDICtx: pointer to the WLAN DAL context
22107 pEventData: pointer to the event information structure
22108
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 @see
22110 @return Result of the function call
22111*/
22112WDI_Status
22113WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022114(
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 WDI_ControlBlockType* pWDICtx,
22116 WDI_EventInfoType* pEventData
22117)
22118{
22119 WDI_FTMCommandRspCb ftmCMDRspCb;
22120 tProcessPttRspParams *ftmCMDRspData = NULL;
22121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22122
22123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 -------------------------------------------------------------------------*/
22126 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22127 ( NULL == pEventData->pEventData))
22128 {
22129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 }
22134
22135 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22136
22137 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22138
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22140 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22142
22143 /*Notify UMAC*/
22144 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22145
Jeff Johnsone7245742012-09-05 17:12:55 -070022146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022147}
Jeff Johnson295189b2012-06-20 16:38:30 -070022148/**
22149 @brief WDI_ProcessHalDumpCmdReq
22150 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022151
22152 @param pWDICtx: pointer to the WLAN DAL context
22153 pEventData: pointer to the event information structure
22154
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 @see
22156 @return Result of the function call
22157*/
22158WDI_Status
22159WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022160(
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 WDI_ControlBlockType* pWDICtx,
22162 WDI_EventInfoType* pEventData
22163)
22164{
22165 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22166 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22167 wpt_uint16 usDataOffset = 0;
22168 wpt_uint16 usSendSize = 0;
22169 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022170 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022171
22172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 -------------------------------------------------------------------------*/
22175 if (( NULL == pEventData ) ||
22176 ( NULL == pEventData->pEventData) ||
22177 ( NULL == pEventData->pCBfnc ))
22178 {
22179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 }
22184
22185 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
22186 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
22187
22188 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022189 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022190 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070022195 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022196 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070022199
Jeff Johnson295189b2012-06-20 16:38:30 -070022200 /*-----------------------------------------------------------------------
22201 Get message buffer
22202 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022203 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
22205 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022206 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
22208 {
22209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022210 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022211 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
22212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022214 }
22215
Jeff Johnsone7245742012-09-05 17:12:55 -070022216 wpalMemoryCopy( pSendBuffer+usDataOffset,
22217 &halDumpCmdReqMsg.dumpCmdReqParams,
22218 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070022219
22220 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022221 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022222
22223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022224 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022226 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22227 wdiHALDumpCmdRspCb, pEventData->pUserData,
22228 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022229}
22230
22231/**
22232 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022233 Process hal Dump Command Response from HAL, simply route to HDD
22234
22235 @param pWDICtx: pointer to the WLAN DAL context
22236 pEventData: pointer to the event information structure
22237
Jeff Johnson295189b2012-06-20 16:38:30 -070022238 @see
22239 @return Result of the function call
22240*/
22241WDI_Status
22242WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022243(
Jeff Johnson295189b2012-06-20 16:38:30 -070022244 WDI_ControlBlockType* pWDICtx,
22245 WDI_EventInfoType* pEventData
22246)
22247{
22248 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022249 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22251
22252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 -------------------------------------------------------------------------*/
22255 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22256 ( NULL == pEventData->pEventData))
22257 {
22258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022262 }
22263
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022265
22266 /*Initialize the WDI Response structure */
22267 wdiHALDumpCmdRsp.usBufferLen = 0;
22268 wdiHALDumpCmdRsp.pBuffer = NULL;
22269
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022270 wpalMemoryCopy( &halDumpCmdRspParams,
22271 pEventData->pEventData,
22272 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022273
22274 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022275 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022276
22277 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022278 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 {
22280 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022281 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22282 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22283
22284 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22285 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022286 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022288
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 /*Notify UMAC*/
22290 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22291
22292 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22293 {
22294 /* Free the allocated buffer */
22295 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22296 }
22297 return WDI_STATUS_SUCCESS;
22298}
22299
22300/*==========================================================================
22301 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022302
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022304 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022305==========================================================================*/
22306/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022307 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022308 when it wishes to send up a notification like the ones
22309 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022310
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022312
22313 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022315 wctsNotifyCBData: the callback data of the user
22316
Jeff Johnson295189b2012-06-20 16:38:30 -070022317 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022318
22319 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022320*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022321void
Jeff Johnson295189b2012-06-20 16:38:30 -070022322WDI_NotifyMsgCTSCB
22323(
Jeff Johnsone7245742012-09-05 17:12:55 -070022324 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022325 WCTS_NotifyEventType wctsEvent,
22326 void* wctsNotifyCBData
22327)
22328{
Jeff Johnsone7245742012-09-05 17:12:55 -070022329 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22331
22332 if (NULL == pWDICtx )
22333 {
22334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022337 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022338 }
22339
22340 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22341 {
22342 /* callback presumably occurred after close */
22343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022344 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 }
22347
22348 if ( WCTS_EVENT_OPEN == wctsEvent )
22349 {
22350 /*Flag must be set atomically as it is checked from incoming request
22351 functions*/
22352 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022354
22355 /*Nothing to do - so try to dequeue any pending request that may have
22356 occurred while we were trying to establish this*/
22357 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022358 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022359 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022361 {
22362 /*Flag must be set atomically as it is checked from incoming request
22363 functions*/
22364 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022365 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022366
22367 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 wpalMutexRelease(&pWDICtx->wptMutex);
22370
22371 /*Notify that the Control Channel is closed */
22372 wpalEventSet(&pWDICtx->wctsActionEvent);
22373 }
22374
22375}/*WDI_NotifyMsgCTSCB*/
22376
22377
22378/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022379 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 when it wishes to send up a packet received over the
22381 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022382
Jeff Johnson295189b2012-06-20 16:38:30 -070022383 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022384
22385 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022386 pMsg: the packet
22387 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022388 wctsRxMsgCBData: the callback data of the user
22389
Jeff Johnson295189b2012-06-20 16:38:30 -070022390 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022391
22392 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022393*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022394void
22395WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022396(
Jeff Johnsone7245742012-09-05 17:12:55 -070022397 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 void* pMsg,
22399 wpt_uint32 uLen,
22400 void* wctsRxMsgCBData
22401)
22402{
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 tHalMsgHeader *pHalMsgHeader;
22404 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022405 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22407
22408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022411 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 ( uLen < sizeof(tHalMsgHeader)))
22413 {
22414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022415 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022417 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 }
22419
22420 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22421 {
22422 /* callback presumably occurred after close */
22423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022424 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022425 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022426 }
22427
Jeff Johnsone7245742012-09-05 17:12:55 -070022428 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022429 context - so no serialization is necessary here
22430 ! - revisit this assumption */
22431
22432 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22433
22434 if ( uLen != pHalMsgHeader->msgLen )
22435 {
22436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22437 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022439 wpalWlanReload();
22440
Jeff Johnsone7245742012-09-05 17:12:55 -070022441 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022442 }
22443
22444 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22445
22446 /*The message itself starts after the header*/
22447 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22448 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22449 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22450 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22451
22452
22453 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22454 {
22455 /*Stop the timer as the response was received */
22456 /*!UT - check for potential race conditions between stop and response */
22457 wpalTimerStop(&pWDICtx->wptResponseTimer);
22458 }
22459 /* Check if we receive a response message which is not expected */
22460 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22461 {
22462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22463 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22464 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022465 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22467 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022468
22469 if (gWDICb.bEnableSSR == false)
22470 {
22471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22472 "SSR is not enabled on WDI timeout");
22473 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22474 return;
22475 }
22476 wpalWcnssResetIntr();
22477 /* if this timer fires, it means Riva did not receive the FIQ */
22478 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22479
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 return;
22481 }
22482
22483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22484 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22485
22486 /*Post response event to the state machine*/
22487 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22488
22489}/*WDI_RXMsgCTSCB*/
22490
22491
22492/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022494========================================================================*/
22495
22496/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022497 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022498 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022499
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 @param pWDICtx - pointer to the control block
22501
22502 @return Result of the function call
22503*/
22504WPT_INLINE WDI_Status
22505WDI_CleanCB
22506(
22507 WDI_ControlBlockType* pWDICtx
22508)
22509{
22510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22511
22512 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022513 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022514
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22517 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22518
22519 WDI_ResetAssocSessions( pWDICtx );
22520
22521 return WDI_STATUS_SUCCESS;
22522}/*WDI_CleanCB*/
22523
22524
22525/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022527
Jeff Johnsone7245742012-09-05 17:12:55 -070022528
22529 @param pWDICtx: pointer to the WLAN DAL context
22530 pEventData: pointer to the event information structure
22531
Jeff Johnson295189b2012-06-20 16:38:30 -070022532 @see
22533 @return Result of the function call
22534*/
22535WPT_INLINE WDI_Status
22536WDI_ProcessRequest
22537(
22538 WDI_ControlBlockType* pWDICtx,
22539 WDI_EventInfoType* pEventData
22540)
22541{
22542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22543
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 already checked these pointers*/
22546
22547 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22548 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022549 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022551 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 WDI_getReqMsgString(pEventData->wdiRequest),
22553 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22554 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22555 }
22556 else
22557 {
22558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022559 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022560 pEventData->wdiRequest);
22561 return WDI_STATUS_E_NOT_IMPLEMENT;
22562 }
22563}/*WDI_ProcessRequest*/
22564
22565
22566/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022567 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022568 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022569 prefixes it with a send message header
22570
22571 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022572 wdiReqType: type of the request being sent
22573 uBufferLen: message buffer len
22574 pMsgBuffer: resulting allocated buffer
22575 pusDataOffset: offset in the buffer where the caller
22576 can start copying its message data
22577 puBufferSize: the resulting buffer size (offset+buff
22578 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022579
Jeff Johnson295189b2012-06-20 16:38:30 -070022580 @see
22581 @return Result of the function call
22582*/
22583WDI_Status
22584WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022585(
22586 WDI_ControlBlockType* pWDICtx,
22587 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 wpt_uint8** pMsgBuffer,
22590 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 wpt_uint16* pusBufferSize
22592)
22593{
22594 tHalMsgHeader halMsgHeader;
22595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22596
Jeff Johnsone7245742012-09-05 17:12:55 -070022597 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022598 again*/
22599
22600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022601 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022603 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22605 if ( NULL == *pMsgBuffer )
22606 {
22607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22608 "Unable to allocate message buffer for req %s (%d)",
22609 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022610 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022612 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022613 }
22614
22615 /*-------------------------------------------------------------------------
22616 Fill in the message header
22617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022618 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22619 /* Fill msgVersion */
22620#ifdef WLAN_FEATURE_11AC
22621 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022622 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022623 else
22624#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022625 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022626
Jeff Johnsone7245742012-09-05 17:12:55 -070022627 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22628 *pusDataOffset = sizeof(halMsgHeader);
22629 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22630
22631 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022632}/*WDI_GetMessageBuffer*/
22633
22634
22635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022636 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022638 the CB
22639
22640 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022642
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 usSendSize size of the buffer to be sent
22644 pRspCb: response callback - save in the WDI
22645 CB
22646 pUserData: user data associated with the
22647 callback
22648 wdiExpectedResponse: the code of the response that is
22649 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022650
Jeff Johnson295189b2012-06-20 16:38:30 -070022651 @see
22652 @return Result of the function call
22653*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022654WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022655WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022656(
22657 WDI_ControlBlockType* pWDICtx,
22658 wpt_uint8* pSendBuffer,
22659 wpt_uint32 usSendSize,
22660 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022661 void* pUserData,
22662 WDI_ResponseEnumType wdiExpectedResponse
22663)
22664{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022665 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022666 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22668
22669 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022670 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022671 ------------------------------------------------------------------------*/
22672 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022673 pWDICtx->pfncRspCB = pRspCb;
22674 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022675
22676 /*-----------------------------------------------------------------------
22677 Call the CTS to send this message over - free message afterwards
22678 - notify transport failure
22679 Note: CTS is reponsible for freeing the message buffer.
22680 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022681 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22682 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22683 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022684 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022686 "Failed to send message with expected response %s (%d)"
22687 " over the bus - catastrophic failure",
22688 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22689 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022690
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022691 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22692 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022694 else
22695 {
22696 /* even when message was placed in CTS deferred Q, we will treat it
22697 success but log this info
22698 */
22699 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22700 {
22701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22702 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22703 "response %s (%d)",
22704 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22705 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022706 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022707 }
22708 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022709
Jeff Johnsond13512a2012-07-17 11:42:19 -070022710 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022711 if ( NULL != pWDICtx->wdiReqStatusCB )
22712 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022713 /*Inform originator whether request went through or not*/
22714 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22715 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 pWDICtx->wdiReqStatusCB = NULL;
22717 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022718 callback(wdiStatus, callbackContext);
22719
22720 /*For WDI requests which have registered a request callback,
22721 inform the WDA caller of the same via setting the return value
22722 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22723 end up repeating the functonality in the req callback for the
22724 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022725 if (wdiStatus != WDI_STATUS_SUCCESS)
22726 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022727 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022728 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 }
22730
Jeff Johnsond13512a2012-07-17 11:42:19 -070022731 if ( wdiStatus == WDI_STATUS_SUCCESS )
22732 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 /*Start timer for the expected response */
22734 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022735
22736 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022737 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022738 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022739 }
22740 else
22741 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022742 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022743 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22744 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022745
Jeff Johnsond13512a2012-07-17 11:42:19 -070022746 return wdiStatus;
22747
Jeff Johnson295189b2012-06-20 16:38:30 -070022748}/*WDI_SendMsg*/
22749
22750
22751
22752/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 the bus using the control transport and saves some info
22755 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022756
22757 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 pSendBuffer: buffer to be sent
22759 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022760
Jeff Johnson295189b2012-06-20 16:38:30 -070022761 @see
22762 @return Result of the function call
22763*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022764WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022765WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022766(
22767 WDI_ControlBlockType* pWDICtx,
22768 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 wpt_uint32 usSendSize
22770)
22771{
22772 wpt_uint32 uStatus ;
22773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22774
22775 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022776 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 Note: CTS is reponsible for freeing the message buffer.
22778 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022779 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 (void*)pSendBuffer, usSendSize );
22781
22782 /*Inform Upper MAC about the outcome of the request*/
22783 if ( NULL != pWDICtx->wdiReqStatusCB )
22784 {
22785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22786 "Send indication status : %d", uStatus);
22787
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022788 /* even if CTS placed indication into its deferred Q, we treat it
22789 * as success and let CTS drain its queue as per smd interrupt to CTS
22790 */
22791 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 -070022792 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 }
22794
22795 /*If sending of the message failed - it is considered catastrophic and
22796 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022797 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22798 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22799
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 {
22801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022802 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022803
22804 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22805 return WDI_STATUS_E_FAILURE;
22806 }
22807
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022809}/*WDI_SendIndication*/
22810
22811
22812/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 @brief WDI_DetectedDeviceError - called internally by DAL when
22814 it has detected a failure in the device
22815
22816 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022817 usErrorCode: error code detected by WDI or received
22818 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022819
Jeff Johnson295189b2012-06-20 16:38:30 -070022820 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022821 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022822*/
22823void
22824WDI_DetectedDeviceError
22825(
22826 WDI_ControlBlockType* pWDICtx,
22827 wpt_uint16 usErrorCode
22828)
22829{
22830 WDI_LowLevelIndType wdiInd;
22831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22832
22833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22834 "Device Error detected code: %d - transitioning to stopped state",
22835 usErrorCode);
22836
Katya Nigamf02ad012014-05-05 16:12:49 +053022837 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22838
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 wpalMutexAcquire(&pWDICtx->wptMutex);
22840
22841 WDI_STATableStop(pWDICtx);
22842
22843 WDI_ResetAssocSessions(pWDICtx);
22844
22845 /*Set the expected state transition to stopped - because the device
22846 experienced a failure*/
22847 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22848
22849 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022850 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022851
Jeff Johnsone7245742012-09-05 17:12:55 -070022852 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022853
22854 /*TO DO: - there should be an attempt to reset the device here*/
22855
22856 wpalMutexRelease(&pWDICtx->wptMutex);
22857
22858 /*------------------------------------------------------------------------
22859 Notify UMAC if a handler is registered
22860 ------------------------------------------------------------------------*/
22861 if (pWDICtx->wdiLowLevelIndCB)
22862 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022863 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22864 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022865
22866 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22867 }
22868}/*WDI_DetectedDeviceError*/
22869
22870/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022871 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022872 we started on send message has expire - this should
22873 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022874 reply - trigger catastrophic failure
22875 @param
22876
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022878
22879 @see
22880 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022881*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022882void
Jeff Johnson295189b2012-06-20 16:38:30 -070022883WDI_ResponseTimerCB
22884(
22885 void *pUserData
22886)
22887{
22888 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22890
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022891 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022892 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022896 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 }
22898
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022899 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022900 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022901 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022902
22903 /* If response timer is running at this time that means this timer
22904 * event is not for the last request but rather last-to-last request and
22905 * this timer event has come after we recevied respone for last-to-last
22906 * message
22907 */
22908 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22909 {
22910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22911 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022912 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022913 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22915 "uArchTimeStampTmrStart: %llu seconds, "
22916 "uArchTimeStampTmrExp: %llu seconds",
22917 pWDICtx->uArchTimeStampRspTmrStart,
22918 pWDICtx->uArchTimeStampRspTmrExp);
22919
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022920 return;
22921 }
22922
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022923 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022924 {
22925
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022927 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022928 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022929 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022930 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22931 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22933 "uArchTimeStampTmrStart: %llu seconds, "
22934 "uArchTimeStampTmrExp: %llu seconds",
22935 pWDICtx->uArchTimeStampRspTmrStart,
22936 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022937
22938 /* WDI timeout means Riva is not responding or SMD communication to Riva
22939 * is not happening. The only possible way to recover from this error
22940 * is to initiate SSR from APPS.
22941 * There is also an option to re-enable wifi, which will eventually
22942 * trigger SSR
22943 */
22944 if (gWDICb.bEnableSSR == false)
22945 {
22946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22947 "SSR is not enabled on WDI timeout");
22948 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22949 return;
22950 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022951#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022952 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022953 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022954 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022955 if(wpalIsSsrPanicOnFailure())
22956 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022957 } else {
22958 /* if this timer fires, it means Riva did not receive the FIQ */
22959 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022960 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022961#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022962 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22963 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022964#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022965 }
22966 else
22967 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022969 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022970 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022971 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22972 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22974 "uArchTimeStampTmrStart: %llu seconds, "
22975 "uArchTimeStampTmrExp: %llu seconds",
22976 pWDICtx->uArchTimeStampRspTmrStart,
22977 pWDICtx->uArchTimeStampRspTmrExp);
22978
Jeff Johnson295189b2012-06-20 16:38:30 -070022979 }
22980
22981 return;
22982
22983}/*WDI_ResponseTimerCB*/
22984
22985
22986/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022987 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022988
Jeff Johnsone7245742012-09-05 17:12:55 -070022989
22990 @param pWDICtx: pointer to the WLAN DAL context
22991 pEventData: pointer to the event information structure
22992
Jeff Johnson295189b2012-06-20 16:38:30 -070022993 @see
22994 @return Result of the function call
22995*/
22996WPT_INLINE WDI_Status
22997WDI_ProcessResponse
22998(
22999 WDI_ControlBlockType* pWDICtx,
23000 WDI_EventInfoType* pEventData
23001)
23002{
23003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23004
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 already checked these pointers
23007 ! - revisit this assumption */
23008 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23009 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023010 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023012 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070023013 WDI_getRespMsgString(pEventData->wdiResponse),
23014 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23015 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23016 }
23017 else
23018 {
23019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023020 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023021 pEventData->wdiResponse);
23022 return WDI_STATUS_E_NOT_IMPLEMENT;
23023 }
23024}/*WDI_ProcessResponse*/
23025
23026
23027/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023029=========================================================================*/
23030
23031/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 @brief Utility function used by the DAL Core to help queue a
23033 request that cannot be processed right away.
23034 @param
23035
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 pWDICtx: - pointer to the WDI control block
23037 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023038 queued
23039
23040 @see
23041 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023042*/
23043WDI_Status
23044WDI_QueuePendingReq
23045(
23046 WDI_ControlBlockType* pWDICtx,
23047 WDI_EventInfoType* pEventData
23048)
23049{
Jeff Johnsone7245742012-09-05 17:12:55 -070023050 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023051 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023052 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23054
23055 if ( NULL == pEventDataQueue )
23056 {
23057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023058 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023059 WDI_ASSERT(0);
23060 return WDI_STATUS_MEM_FAILURE;
23061 }
23062
23063 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23064 pEventDataQueue->pUserData = pEventData->pUserData;
23065 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23066 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023067 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023068
23069 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23070 {
23071 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023072
Jeff Johnson295189b2012-06-20 16:38:30 -070023073 if ( NULL == pEventInfo )
23074 {
23075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023076 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 WDI_ASSERT(0);
23078 wpalMemoryFree(pEventDataQueue);
23079 return WDI_STATUS_MEM_FAILURE;
23080 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023081
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23083
23084 }
23085 pEventDataQueue->pEventData = pEventInfo;
23086
23087 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023088 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023089
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023090 if (eWLAN_PAL_STATUS_E_FAILURE ==
23091 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23092 {
23093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23094 "pEventDataQueue wpal_list_insert_back failed");
23095 WDI_ASSERT(0);
23096 wpalMemoryFree(pEventDataQueue);
23097 wpalMemoryFree(pEventInfo);
23098 return WDI_STATUS_MEM_FAILURE;
23099 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023100
23101 return WDI_STATUS_SUCCESS;
23102}/*WDI_QueuePendingReq*/
23103
23104/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023105 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023106 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023107 @param
23108
23109 pMsg - pointer to the message
23110
23111 @see
23112 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023113*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023114void
Jeff Johnson295189b2012-06-20 16:38:30 -070023115WDI_PALCtrlMsgCB
23116(
23117 wpt_msg *pMsg
23118)
23119{
23120 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023121 WDI_ControlBlockType* pWDICtx = NULL;
23122 WDI_Status wdiStatus;
23123 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023124 void* pUserData;
23125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23126
23127 if (( NULL == pMsg )||
23128 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23129 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23130 {
23131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023132 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023134 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023135 }
23136
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023137 /*Access to the global state must be locked */
23138 wpalMutexAcquire(&pWDICtx->wptMutex);
23139
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 /*Transition back to the state that we had before serialization
23141 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023142 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023143 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023144 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023145
23146 /*-----------------------------------------------------------------------
23147 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023148 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023149 -----------------------------------------------------------------------*/
23150 switch ( pEventData->wdiRequest )
23151 {
23152
Jeff Johnsone7245742012-09-05 17:12:55 -070023153 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023154 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23155 break;
23156
Jeff Johnson295189b2012-06-20 16:38:30 -070023157 case WDI_NV_DOWNLOAD_REQ:
23158 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23159 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23160 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23161 {
23162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023163 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23165 }
23166 else
23167 {
23168 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
23169 }
23170
23171 break;
23172
23173 default:
23174 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23175 break;
23176 }/*switch ( pEventData->wdiRequest )*/
23177
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053023178 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053023179 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070023180 {
23181 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
23182
23183 if ( NULL != pfnReqStatusCB )
23184 {
23185 /*Fail the request*/
23186 pfnReqStatusCB( wdiStatus, pUserData);
23187 }
23188 }
23189
23190 /* Free data - that was allocated when queueing*/
23191 if( pEventData != NULL )
23192 {
23193 if( pEventData->pEventData != NULL )
23194 {
23195 wpalMemoryFree(pEventData->pEventData);
23196 }
23197 wpalMemoryFree(pEventData);
23198 }
23199
23200 if( pMsg != NULL )
23201 {
23202 wpalMemoryFree(pMsg);
23203 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023204
Jeff Johnson295189b2012-06-20 16:38:30 -070023205}/*WDI_PALCtrlMsgCB*/
23206
23207/**
23208 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 and schedule for execution a pending request
23210 @param
23211
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 pWDICtx: - pointer to the WDI control block
23213 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 queued
23215
23216 @see
23217 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023218*/
23219WDI_Status
23220WDI_DequeuePendingReq
23221(
23222 WDI_ControlBlockType* pWDICtx
23223)
23224{
Jeff Johnsone7245742012-09-05 17:12:55 -070023225 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023227 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23229
Jeff Johnsone7245742012-09-05 17:12:55 -070023230 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023231
23232 if ( NULL == pNode )
23233 {
23234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023235 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 return WDI_STATUS_SUCCESS;
23237 }
23238
23239 /*The node actually points to the 1st element inside the Event Data struct -
23240 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023241 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023242
23243 /*Serialize processing in the control thread
23244 !TO DO: - check to see if these are all the messages params that need
23245 to be filled in*/
23246 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23247
23248 if ( NULL == palMsg )
23249 {
23250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023251 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023253 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023254 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023255 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023256 palMsg->callback = WDI_PALCtrlMsgCB;
23257 palMsg->ptr = pEventData;
23258
23259 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023261 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023262
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 /*Transition back to BUSY as we need to handle a queued request*/
23264 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023265
Jeff Johnson295189b2012-06-20 16:38:30 -070023266 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23267
23268 return WDI_STATUS_PENDING;
23269}/*WDI_DequeuePendingReq*/
23270
23271
23272/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023273 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023275 away.- The assoc requests will be queued by BSSID
23276 @param
23277
Jeff Johnson295189b2012-06-20 16:38:30 -070023278 pWDICtx: - pointer to the WDI control block
23279 pEventData: pointer to the evnt info that needs to be queued
23280 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023281
23282 @see
23283 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023284*/
23285WDI_Status
23286WDI_QueueNewAssocRequest
23287(
23288 WDI_ControlBlockType* pWDICtx,
23289 WDI_EventInfoType* pEventData,
23290 wpt_macAddr macBSSID
23291)
23292{
Jeff Johnsone7245742012-09-05 17:12:55 -070023293 wpt_uint8 i;
23294 WDI_BSSSessionType* pSession = NULL;
23295 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023296 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023297 void* pEventInfo;
23298 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023300
Jeff Johnsone7245742012-09-05 17:12:55 -070023301
23302 /*------------------------------------------------------------------------
23303 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023304 ------------------------------------------------------------------------*/
23305 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23306 {
23307 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23308 {
23309 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 pSession = &pWDICtx->aBSSSessions[i];
23311 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 }
23313 }
23314
23315 if ( i >= WDI_MAX_BSS_SESSIONS )
23316 {
23317 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023319 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023320
Jeff Johnson295189b2012-06-20 16:38:30 -070023321 /*------------------------------------------------------------------------
23322 Fill in the BSSID for this session and set the usage flag
23323 ------------------------------------------------------------------------*/
23324 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023325 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023326
23327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023328 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023329 ------------------------------------------------------------------------*/
23330 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23331 if ( NULL == pEventDataQueue )
23332 {
23333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023334 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023335 WDI_ASSERT(0);
23336 return WDI_STATUS_MEM_FAILURE;
23337 }
23338
23339 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23340 if ( NULL == pSessionIdElement )
23341 {
23342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023343 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023344 WDI_ASSERT(0);
23345 wpalMemoryFree(pEventDataQueue);
23346 return WDI_STATUS_MEM_FAILURE;
23347 }
23348
23349 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23350 if ( NULL == pEventInfo )
23351 {
23352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023353 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 WDI_ASSERT(0);
23355 wpalMemoryFree(pSessionIdElement);
23356 wpalMemoryFree(pEventDataQueue);
23357 return WDI_STATUS_MEM_FAILURE;
23358 }
23359
23360 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23361 pEventDataQueue->pUserData = pEventData->pUserData;
23362 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23363 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023364 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023365
23366 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23367 pEventDataQueue->pEventData = pEventInfo;
23368
23369 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023370 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023371
23372 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023374
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023375 if (eWLAN_PAL_STATUS_E_FAILURE ==
23376 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23377 {
23378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23379 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23380 WDI_ASSERT(0);
23381 wpalMemoryFree(pSessionIdElement);
23382 wpalMemoryFree(pEventDataQueue);
23383 wpalMemoryFree(pEventInfo);
23384 return WDI_STATUS_MEM_FAILURE;
23385 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023386
23387 /*We need to maintain a separate list that keeps track of the order in which
23388 the new assoc requests are being queued such that we can start processing
23389 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023390 pSessionIdElement->ucIndex = i;
23391 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023392
23393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23394 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023395 if (eWLAN_PAL_STATUS_E_FAILURE ==
23396 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23397 {
23398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23399 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23400 WDI_ASSERT(0);
23401 wpalMemoryFree(pSessionIdElement);
23402 wpalMemoryFree(pEventDataQueue);
23403 wpalMemoryFree(pEventInfo);
23404 return WDI_STATUS_MEM_FAILURE;
23405 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023406
23407 /*Return pending as this is what the status of the request is since it has
23408 been queued*/
23409 return WDI_STATUS_PENDING;
23410}/*WDI_QueueNewAssocRequest*/
23411
23412/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023413 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023414 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023415 away.- The assoc requests will be queued by BSSID
23416 @param
23417
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 pWDICtx: - pointer to the WDI control block
23419 pSession: - session in which to queue
23420 pEventData: pointer to the event info that needs to be
23421 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023422
23423 @see
23424 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023425*/
23426WDI_Status
23427WDI_QueueAssocRequest
23428(
23429 WDI_ControlBlockType* pWDICtx,
23430 WDI_BSSSessionType* pSession,
23431 WDI_EventInfoType* pEventData
23432)
23433{
Jeff Johnsone7245742012-09-05 17:12:55 -070023434 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023435 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023438
23439 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023440 Sanity check
23441 ------------------------------------------------------------------------*/
23442 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23443 {
23444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023446
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 }
23449
23450 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023451 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 ------------------------------------------------------------------------*/
23453 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23454 if ( NULL == pEventDataQueue )
23455 {
23456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023457 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023458 WDI_ASSERT(0);
23459 return WDI_STATUS_MEM_FAILURE;
23460 }
23461
23462 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23463 if ( NULL == pEventInfo )
23464 {
23465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23466 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023467 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023468 WDI_ASSERT(0);
23469 wpalMemoryFree(pEventDataQueue);
23470 return WDI_STATUS_MEM_FAILURE;
23471 }
23472
23473 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23474 pEventDataQueue->pUserData = pEventData->pUserData;
23475 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23476 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023477 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023478 pEventDataQueue->pEventData = pEventInfo;
23479
23480 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23481
23482 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023484
23485 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023486 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023487
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023488 if (eWLAN_PAL_STATUS_E_FAILURE ==
23489 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23490 {
23491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23492 "%s: Cannot allocate memory for queueing event data info",
23493 __func__);
23494 WDI_ASSERT(0);
23495 wpalMemoryFree(pEventDataQueue);
23496 wpalMemoryFree(pEventInfo);
23497 return WDI_STATUS_MEM_FAILURE;
23498 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023499
23500 /*The result of this operation is pending because the request has been
23501 queued and it will be processed at a later moment in time */
23502 return WDI_STATUS_PENDING;
23503}/*WDI_QueueAssocRequest*/
23504
23505/**
23506 @brief Utility function used by the DAL Core to help dequeue
23507 an association request that was pending
23508 The request will be queued up in front of the main
23509 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023510 @param
23511
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023513
23514
23515 @see
23516 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023517*/
23518WDI_Status
23519WDI_DequeueAssocRequest
23520(
23521 WDI_ControlBlockType* pWDICtx
23522)
23523{
Jeff Johnsone7245742012-09-05 17:12:55 -070023524 wpt_list_node* pNode = NULL;
23525 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 WDI_BSSSessionType* pSession;
23527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023528
23529 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023530 Sanity check
23531 ------------------------------------------------------------------------*/
23532 if ( NULL == pWDICtx )
23533 {
23534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023535 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023536
Jeff Johnsone7245742012-09-05 17:12:55 -070023537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023538 }
23539
23540 /*------------------------------------------------------------------------
23541 An association has been completed => a new association can occur
23542 Check to see if there are any pending associations ->
23543 If so , transfer all the pending requests into the busy queue for
23544 processing
23545 These requests have arrived prior to the requests in the busy queue
23546 (bc they needed to be processed in order to be placed in this queue)
23547 => they will be placed at the front of the busy queue
23548 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023549 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023550
23551 if ( NULL == pNode )
23552 {
23553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023554 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023555 return WDI_STATUS_SUCCESS;
23556 }
23557
23558 /*The node actually points to the 1st element inside the Session Id struct -
23559 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023561
23562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23563 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23564
23565 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23566 {
23567 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023568
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023570 the front of the main waiting queue for subsequent execution*/
23571 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023572 while ( NULL != pNode )
23573 {
23574 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23576 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023577 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023578 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 }
23580 else
23581 {
23582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023583 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 WPAL_ASSERT(0);
23585 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023588
Jeff Johnson295189b2012-06-20 16:38:30 -070023589 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23590 wpalMemoryFree(pSessionIdElement);
23591 return WDI_STATUS_SUCCESS;
23592}/*WDI_DequeueAssocRequest*/
23593
23594/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023595 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023596 pending requests - all req cb will be called with
23597 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 @param
23599
Jeff Johnson295189b2012-06-20 16:38:30 -070023600 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023601
23602 @see
23603 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023604*/
23605WDI_Status
23606WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023607(
Jeff Johnson295189b2012-06-20 16:38:30 -070023608 WDI_ControlBlockType* pWDICtx
23609)
23610{
Jeff Johnsone7245742012-09-05 17:12:55 -070023611 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023612 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023613 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 void* pUserData;
23615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23616
Jeff Johnsone7245742012-09-05 17:12:55 -070023617 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023618
23619 /*------------------------------------------------------------------------
23620 Go through all the requests and fail them - this will only be called
23621 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023622 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023623 ------------------------------------------------------------------------*/
23624 while( pNode )
23625 {
23626 /*The node actually points to the 1st element inside the Event Data struct -
23627 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023628 pEventDataQueue = (WDI_EventInfoType*)pNode;
23629
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23631 if ( NULL != pfnReqStatusCB )
23632 {
23633 /*Fail the request*/
23634 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23635 }
23636 /* Free data - that was allocated when queueing */
23637 if ( pEventDataQueue->pEventData != NULL )
23638 {
23639 wpalMemoryFree(pEventDataQueue->pEventData);
23640 }
23641 wpalMemoryFree(pEventDataQueue);
23642
23643 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23644 {
23645 break;
23646 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023647 }
23648
Jeff Johnson295189b2012-06-20 16:38:30 -070023649 return WDI_STATUS_SUCCESS;
23650}/*WDI_ClearPendingRequests*/
23651
23652/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023653 @brief Helper routine used to init the BSS Sessions in the WDI control block
23654
23655
23656 @param pWDICtx: pointer to the WLAN DAL context
23657
Jeff Johnson295189b2012-06-20 16:38:30 -070023658 @see
23659*/
23660void
23661WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023662(
Jeff Johnson295189b2012-06-20 16:38:30 -070023663 WDI_ControlBlockType* pWDICtx
23664)
23665{
Jeff Johnsone7245742012-09-05 17:12:55 -070023666 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23668
23669 /*-------------------------------------------------------------------------
23670 No Sanity check
23671 -------------------------------------------------------------------------*/
23672 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23673 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023674 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023675 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23676 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23677 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23678 }
23679}/*WDI_ResetAssocSessions*/
23680
23681/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023682 @brief Helper routine used to find a session based on the BSSID
23683
23684
23685 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023686 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023687 pSession: pointer to the session (if found)
23688
Jeff Johnson295189b2012-06-20 16:38:30 -070023689 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023690 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023691*/
23692wpt_uint8
23693WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023694(
Jeff Johnson295189b2012-06-20 16:38:30 -070023695 WDI_ControlBlockType* pWDICtx,
23696 wpt_macAddr macBSSID,
23697 WDI_BSSSessionType** ppSession
23698)
23699{
Jeff Johnsone7245742012-09-05 17:12:55 -070023700 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23702
23703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023704 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023705 -------------------------------------------------------------------------*/
23706 if ( NULL == ppSession )
23707 {
23708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023709 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023710 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023711 }
23712
Jeff Johnsone7245742012-09-05 17:12:55 -070023713 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023714
Jeff Johnsone7245742012-09-05 17:12:55 -070023715 /*------------------------------------------------------------------------
23716 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 ------------------------------------------------------------------------*/
23718 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23719 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023720 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23721 (eWLAN_PAL_TRUE ==
23722 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23723 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 {
23725 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023726 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 return i;
23728 }
23729 }
23730
Jeff Johnsone7245742012-09-05 17:12:55 -070023731 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023732}/*WDI_FindAssocSession*/
23733
23734/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 @brief Helper routine used to find a session based on the BSSID
23736
23737
23738 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023739 ucBSSIdx: BSS Index of the session
23740 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023741
Jeff Johnson295189b2012-06-20 16:38:30 -070023742 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023744*/
23745wpt_uint8
23746WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023747(
Jeff Johnson295189b2012-06-20 16:38:30 -070023748 WDI_ControlBlockType* pWDICtx,
23749 wpt_uint16 ucBSSIdx,
23750 WDI_BSSSessionType** ppSession
23751)
23752{
Jeff Johnsone7245742012-09-05 17:12:55 -070023753 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23755
23756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 -------------------------------------------------------------------------*/
23759 if ( NULL == ppSession )
23760 {
23761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023762 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023763 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023764 }
23765
Jeff Johnsone7245742012-09-05 17:12:55 -070023766 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023767
Jeff Johnsone7245742012-09-05 17:12:55 -070023768 /*------------------------------------------------------------------------
23769 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023770 ------------------------------------------------------------------------*/
23771 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23772 {
23773 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23774 {
23775 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023776 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023777 return i;
23778 }
23779 }
23780
Jeff Johnsone7245742012-09-05 17:12:55 -070023781 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023782}/*WDI_FindAssocSessionByBSSIdx*/
23783
23784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023785 @brief Helper routine used to find a session based on the BSSID
23786
23787
23788 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023789 ucBSSIdx: BSS Index of the session
23790 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023791
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023793 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023794*/
23795wpt_uint8
23796WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023797(
Jeff Johnson295189b2012-06-20 16:38:30 -070023798 WDI_ControlBlockType* pWDICtx,
23799 wpt_uint16 usIdx,
23800 WDI_BSSSessionType** ppSession
23801)
23802{
23803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23804
23805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 -------------------------------------------------------------------------*/
23808 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
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
23815 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023816 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023817
23818 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023819
Jeff Johnson295189b2012-06-20 16:38:30 -070023820}/*WDI_FindAssocSessionByBSSIdx*/
23821
23822/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023823 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023824 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023825
23826
23827 @param pWDICtx: pointer to the WLAN DAL context
23828 pSession: pointer to the session (if found)
23829
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023831 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023832*/
23833wpt_uint8
23834WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023835(
Jeff Johnson295189b2012-06-20 16:38:30 -070023836 WDI_ControlBlockType* pWDICtx,
23837 WDI_BSSSessionType** ppSession
23838)
23839{
Jeff Johnsone7245742012-09-05 17:12:55 -070023840 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023844 -------------------------------------------------------------------------*/
23845 if ( NULL == ppSession )
23846 {
23847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023848 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023849 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023850 }
23851
Jeff Johnsone7245742012-09-05 17:12:55 -070023852 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023853
Jeff Johnsone7245742012-09-05 17:12:55 -070023854 /*------------------------------------------------------------------------
23855 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 ------------------------------------------------------------------------*/
23857 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23858 {
23859 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23860 {
23861 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023862 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023863 return i;
23864 }
23865 }
23866
Jeff Johnsone7245742012-09-05 17:12:55 -070023867 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023868}/*WDI_FindEmptySession*/
23869
23870
23871/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023872 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023873 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023874
23875
23876 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023877 macBSSID: pointer to BSSID. If NULL, get all the session.
23878 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23879 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23880 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023881 @see
23882 @return Number of sessions in use
23883*/
23884wpt_uint8
23885WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023886(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023887 WDI_ControlBlockType* pWDICtx,
23888 wpt_macAddr macBSSID,
23889 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023890)
23891{
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023894
23895 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023896 Count all sessions in use
23897 ------------------------------------------------------------------------*/
23898 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23899 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023900 if ( macBSSID && skipBSSID &&
23901 (eWLAN_PAL_TRUE ==
23902 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23903 WDI_MAC_ADDR_LEN)))
23904 {
23905 continue;
23906 }
23907 else if ( pWDICtx->aBSSSessions[i].bInUse )
23908 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023909 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023910 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023911 }
23912
Jeff Johnsone7245742012-09-05 17:12:55 -070023913 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023914}/*WDI_GetActiveSessionsCount*/
23915
23916/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023917 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023918 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023919
23920
23921 @param pWDICtx: pointer to the WLAN DAL context
23922 pSession: pointer to the session (if found)
23923
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023925 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023926*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023927void
Jeff Johnson295189b2012-06-20 16:38:30 -070023928WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023929(
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 WDI_ControlBlockType* pWDICtx,
23931 WDI_BSSSessionType* ppSession
23932)
23933{
23934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023936 -------------------------------------------------------------------------*/
23937 if ( NULL == ppSession )
23938 {
23939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023940 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 }
23943
Jeff Johnsone7245742012-09-05 17:12:55 -070023944 /*------------------------------------------------------------------------
23945 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023946 ------------------------------------------------------------------------*/
23947 wpal_list_destroy(&ppSession->wptPendingQueue);
23948 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023949 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23950 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023951 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23952 wpal_list_init(&ppSession->wptPendingQueue);
23953
23954}/*WDI_DeleteSession*/
23955
23956/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023957 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023959 @param
23960
Jeff Johnson295189b2012-06-20 16:38:30 -070023961 WDI_AddStaParams: - pointer to the WDI Add STA params
23962 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023963
23964 @see
23965 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023966*/
23967void
23968WDI_AddBcastSTAtoSTATable
23969(
23970 WDI_ControlBlockType* pWDICtx,
23971 WDI_AddStaParams * staParams,
23972 wpt_uint16 usBcastStaIdx
23973)
23974{
23975 WDI_AddStaParams wdiAddSTAParam = {0};
23976 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23978
23979 /*---------------------------------------------------------------------
23980 Sanity check
23981 ---------------------------------------------------------------------*/
23982 if ( NULL == staParams )
23983 {
23984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023986
Jeff Johnsone7245742012-09-05 17:12:55 -070023987 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 }
23989
23990 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23991 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23992 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23993 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23994 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23995 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23996 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23997 WDI_MAC_ADDR_LEN );
23998 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23999 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24000 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24001 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24002 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24003 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24004 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024005
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24007}
24008
24009/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 @brief NV blob will be divided into fragments of size 4kb and
24011 Sent to HAL
24012
24013 @param pWDICtx: pointer to the WLAN DAL context
24014 pEventData: pointer to the event information structure
24015
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 @see
24017 @return Result of the function call
24018 */
24019
24020WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024021(
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 WDI_ControlBlockType* pWDICtx,
24023 WDI_EventInfoType* pEventData
24024)
24025{
24026
24027 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24028 wpt_uint8* pSendBuffer = NULL;
24029 wpt_uint16 usDataOffset = 0;
24030 wpt_uint16 usSendSize = 0;
24031 wpt_uint16 usCurrentFragmentSize =0;
24032 wpt_uint8* pSrcBuffer = NULL;
24033 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24034 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24035
24036 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24037 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24038 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24039
Jeff Johnsone7245742012-09-05 17:12:55 -070024040 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024041 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24042
24043 /* Update the current Fragment Number */
24044 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24045
24046 /*Update the HAL REQ structure */
24047 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24048 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24049 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24050
24051 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024052 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 image will be sent to HAL*/
24054
Jeff Johnsone7245742012-09-05 17:12:55 -070024055 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024056 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024057 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024058 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024059 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024060 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24061 usCurrentFragmentSize = FRAGMENT_SIZE;
24062
24063 /*Update the HAL REQ structure */
24064 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24065 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24066
24067 }
24068 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024069 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024070 usCurrentFragmentSize = FRAGMENT_SIZE;
24071
24072 /*Update the HAL REQ structure */
24073 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24074 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24075 }
24076
24077 /*-----------------------------------------------------------------------
24078 Get message buffer
24079 -----------------------------------------------------------------------*/
24080 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24081 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24082 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024083 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024084 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24085 {
24086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024087 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 pEventData, pwdiNvDownloadReqParams);
24089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024091 }
24092
24093 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024094 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024095 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24096
24097 /* Appending the NV image fragment */
24098 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24099 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24100 usCurrentFragmentSize);
24101
24102 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024103 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024104
Jeff Johnsone7245742012-09-05 17:12:55 -070024105 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24106 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 WDI_NV_DOWNLOAD_RESP);
24108
24109}
Jeff Johnsone7245742012-09-05 17:12:55 -070024110/*============================================================================
24111 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024112 ============================================================================*/
24113/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024114 @brief Helper routine used to find a session based on the BSSID
24115 @param pContext: pointer to the WLAN DAL context
24116 @param pDPContext: pointer to the Datapath context
24117
Jeff Johnson295189b2012-06-20 16:38:30 -070024118 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024119 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024120*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024121WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024122WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24123{
24124 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24125
24126 pCB->pDPContext = pDPContext;
24127 return;
24128}
24129
24130/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024131 @brief Helper routine used to find a session based on the BSSID
24132
24133
24134 @param pContext: pointer to the WLAN DAL context
24135
Jeff Johnson295189b2012-06-20 16:38:30 -070024136 @see
24137 @return pointer to Datapath context
24138*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024139WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024140WDI_DS_GetDatapathContext (void *pContext)
24141{
24142 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24143 return pCB->pDPContext;
24144}
24145/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024146 @brief Helper routine used to find a session based on the BSSID
24147
24148
24149 @param pContext: pointer to the WLAN DAL context
24150 @param pDTDriverContext: pointer to the Transport Driver context
24151
Jeff Johnson295189b2012-06-20 16:38:30 -070024152 @see
24153 @return void
24154*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024155WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024156WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24157{
24158 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24159
24160 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024161 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024162}
24163
24164/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024165 @brief Helper routine used to find a session based on the BSSID
24166
24167
24168 @param pWDICtx: pointer to the WLAN DAL context
24169
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024171 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070024172*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024173WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024174WDT_GetTransportDriverContext (void *pContext)
24175{
24176 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024177 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070024178}
24179
Jeff Johnsone7245742012-09-05 17:12:55 -070024180/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070024181 Helper inline converters
24182 ============================================================================*/
24183/*Convert WDI driver type into HAL driver type*/
24184WPT_STATIC WPT_INLINE WDI_Status
24185WDI_HAL_2_WDI_STATUS
24186(
24187 eHalStatus halStatus
24188)
24189{
Jeff Johnsone7245742012-09-05 17:12:55 -070024190 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024191 the chances of getting inlined*/
24192 switch( halStatus )
24193 {
24194 case eHAL_STATUS_SUCCESS:
24195 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24196 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24197 return WDI_STATUS_SUCCESS;
24198 case eHAL_STATUS_FAILURE:
24199 return WDI_STATUS_E_FAILURE;
24200 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070024201 return WDI_STATUS_MEM_FAILURE;
24202 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070024203 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024204 default:
24205 return WDI_STATUS_DEV_INTERNAL_FAILURE;
24206 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024207
Jeff Johnsone7245742012-09-05 17:12:55 -070024208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024209}/*WDI_HAL_2_WDI_STATUS*/
24210
24211/*Convert WDI request type into HAL request type*/
24212WPT_STATIC WPT_INLINE tHalHostMsgType
24213WDI_2_HAL_REQ_TYPE
24214(
24215 WDI_RequestEnumType wdiReqType
24216)
24217{
Jeff Johnsone7245742012-09-05 17:12:55 -070024218 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024219 the chances of getting inlined*/
24220 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070024221 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024222 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024223 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024224 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024225 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024226 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024227 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024228 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024229 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024230 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024231 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024232 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024233 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024234 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024235 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024237 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024239 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024241 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024243 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024244 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024245 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024246 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024247 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024248 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024249 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024251 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024253 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024254 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024255 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 return WLAN_HAL_RMV_STAKEY_REQ;
24257 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024258 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024259 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024260 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024261 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024262 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024263 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024264 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 case WDI_DEL_BA_REQ:
24266 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024267#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 case WDI_TSM_STATS_REQ:
24269 return WLAN_HAL_TSM_STATS_REQ;
24270#endif
24271 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024272 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024273 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024274 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024276 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024277 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024278 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024279 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024280 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024281 case WDI_ADD_BA_SESSION_REQ:
24282 return WLAN_HAL_ADD_BA_SESSION_REQ;
24283 case WDI_TRIGGER_BA_REQ:
24284 return WLAN_HAL_TRIGGER_BA_REQ;
24285 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024287 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024288 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24290 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24291 case WDI_SET_MAX_TX_POWER_REQ:
24292 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024293 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24294 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024295 case WDI_SET_TX_POWER_REQ:
24296 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024297 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24298 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024299#ifdef FEATURE_WLAN_TDLS
24300 case WDI_TDLS_LINK_ESTABLISH_REQ:
24301 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024302 case WDI_TDLS_CHAN_SWITCH_REQ:
24303 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024304#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024306 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024307 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024308 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024309 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024310 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024311 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024312 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024314 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024315 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024316 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024318 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024319 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024320 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024321 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024322 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024325 case WDI_REM_BEACON_FILTER_REQ:
24326 return WLAN_HAL_REM_BCN_FILTER_REQ;
24327 case WDI_SET_RSSI_THRESHOLDS_REQ:
24328 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24329 case WDI_HOST_OFFLOAD_REQ:
24330 return WLAN_HAL_HOST_OFFLOAD_REQ;
24331 case WDI_WOWL_ADD_BC_PTRN_REQ:
24332 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24333 case WDI_WOWL_DEL_BC_PTRN_REQ:
24334 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24335 case WDI_WOWL_ENTER_REQ:
24336 return WLAN_HAL_ENTER_WOWL_REQ;
24337 case WDI_WOWL_EXIT_REQ:
24338 return WLAN_HAL_EXIT_WOWL_REQ;
24339 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24340 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24341 case WDI_NV_DOWNLOAD_REQ:
24342 return WLAN_HAL_DOWNLOAD_NV_REQ;
24343 case WDI_FLUSH_AC_REQ:
24344 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24345 case WDI_BTAMP_EVENT_REQ:
24346 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24347#ifdef WLAN_FEATURE_VOWIFI_11R
24348 case WDI_AGGR_ADD_TS_REQ:
24349 return WLAN_HAL_AGGR_ADD_TS_REQ;
24350#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024351 case WDI_FTM_CMD_REQ:
24352 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 case WDI_ADD_STA_SELF_REQ:
24354 return WLAN_HAL_ADD_STA_SELF_REQ;
24355 case WDI_DEL_STA_SELF_REQ:
24356 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024357#ifdef FEATURE_OEM_DATA_SUPPORT
24358 case WDI_START_OEM_DATA_REQ:
24359 return WLAN_HAL_START_OEM_DATA_REQ;
24360#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 case WDI_HOST_RESUME_REQ:
24362 return WLAN_HAL_HOST_RESUME_REQ;
24363 case WDI_HOST_SUSPEND_IND:
24364 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024365 case WDI_TRAFFIC_STATS_IND:
24366 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024367#ifdef WLAN_FEATURE_11W
24368 case WDI_EXCLUDE_UNENCRYPTED_IND:
24369 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24370#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 case WDI_KEEP_ALIVE_REQ:
24372 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024373#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024374 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24375 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024376#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024377#ifdef FEATURE_WLAN_SCAN_PNO
24378 case WDI_SET_PREF_NETWORK_REQ:
24379 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24380 case WDI_SET_RSSI_FILTER_REQ:
24381 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24382 case WDI_UPDATE_SCAN_PARAMS_REQ:
24383 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24384#endif // FEATURE_WLAN_SCAN_PNO
24385 case WDI_SET_TX_PER_TRACKING_REQ:
24386 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24387#ifdef WLAN_FEATURE_PACKET_FILTERING
24388 case WDI_8023_MULTICAST_LIST_REQ:
24389 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24390 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024391 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024392 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24393 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24394 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24395 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24396#endif // WLAN_FEATURE_PACKET_FILTERING
24397 case WDI_HAL_DUMP_CMD_REQ:
24398 return WLAN_HAL_DUMP_COMMAND_REQ;
24399#ifdef WLAN_FEATURE_GTK_OFFLOAD
24400 case WDI_GTK_OFFLOAD_REQ:
24401 return WLAN_HAL_GTK_OFFLOAD_REQ;
24402 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24403 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24404#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24405
24406 case WDI_INIT_SCAN_CON_REQ:
24407 return WLAN_HAL_INIT_SCAN_CON_REQ;
24408 case WDI_SET_POWER_PARAMS_REQ:
24409 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24410 case WDI_SET_TM_LEVEL_REQ:
24411 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24412 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24413 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024414#ifdef WLAN_FEATURE_11AC
24415 case WDI_UPDATE_VHT_OP_MODE_REQ:
24416 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24417#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024418 case WDI_GET_ROAM_RSSI_REQ:
24419 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024420 case WDI_DHCP_START_IND:
24421 return WLAN_HAL_DHCP_START_IND;
24422 case WDI_DHCP_STOP_IND:
24423 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024424#ifdef FEATURE_WLAN_LPHB
24425 case WDI_LPHB_CFG_REQ:
24426 return WLAN_HAL_LPHB_CFG_REQ;
24427#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024428 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24429 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24430 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24431 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24432
Rajeev79dbe4c2013-10-05 11:03:42 +053024433#ifdef FEATURE_WLAN_BATCH_SCAN
24434 case WDI_SET_BATCH_SCAN_REQ:
24435 return WLAN_HAL_BATCHSCAN_SET_REQ;
24436 case WDI_STOP_BATCH_SCAN_IND:
24437 return WLAN_HAL_BATCHSCAN_STOP_IND;
24438 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24439 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24440#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024441 case WDI_RATE_UPDATE_IND:
24442 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024443 case WDI_START_HT40_OBSS_SCAN_IND:
24444 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24445 case WDI_STOP_HT40_OBSS_SCAN_IND:
24446 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024447 case WDI_UPDATE_CHAN_REQ:
24448 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024449 case WDI_CH_SWITCH_REQ_V1:
24450 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024451 case WDI_GET_BCN_MISS_RATE_REQ:
24452 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024453
24454#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24455 case WDI_LL_STATS_SET_REQ:
24456 return WLAN_HAL_LL_SET_STATS_REQ;
24457 case WDI_LL_STATS_GET_REQ:
24458 return WLAN_HAL_LL_GET_STATS_REQ;
24459 case WDI_LL_STATS_CLEAR_REQ:
24460 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24461#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024462#ifdef WLAN_FEATURE_EXTSCAN
24463 case WDI_EXTSCAN_START_REQ:
24464 return WLAN_HAL_EXT_SCAN_START_REQ;
24465 case WDI_EXTSCAN_STOP_REQ:
24466 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24467 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24468 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24469 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24470 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24471 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24472 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24473 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24474 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024475 case WDI_EXTSCAN_SET_SSID_HOTLIST_REQ:
24476 return WLAN_HAL_SSID_HOTLIST_SET_REQ;
24477 case WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ:
24478 return WLAN_HAL_SSID_HOTLIST_RESET_REQ;
24479
Dino Mycle41bdc942014-06-10 11:30:24 +053024480#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024481 case WDI_SPOOF_MAC_ADDR_REQ:
24482 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024483 case WDI_GET_FW_STATS_REQ:
24484 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024485 case WDI_ENCRYPT_MSG_REQ:
24486 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024487 case WDI_FW_LOGGING_INIT_REQ:
24488 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024489 case WDI_GET_FRAME_LOG_REQ:
24490 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024491 case WDI_NAN_REQUEST:
24492 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024493 case WDI_SET_RTS_CTS_HTVHT_IND:
24494 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024495 case WDI_MON_START_REQ:
24496 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24497 case WDI_MON_STOP_REQ:
24498 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024499 case WDI_FW_LOGGING_DXE_DONE_IND:
24500 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024501 case WDI_FATAL_EVENT_LOGGING_REQ:
24502 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024503 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24504 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053024505 case WDI_FWR_MEM_DUMP_REQ:
24506 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024507 case WDI_START_RSSI_MONITOR_REQ:
24508 return WLAN_HAL_START_RSSI_MONITORING_REQ;
24509 case WDI_STOP_RSSI_MONITOR_REQ:
24510 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024511 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024512 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024513 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024514
Jeff Johnson295189b2012-06-20 16:38:30 -070024515}/*WDI_2_HAL_REQ_TYPE*/
24516
24517/*Convert WDI response type into HAL response type*/
24518WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24519HAL_2_WDI_RSP_TYPE
24520(
24521 tHalHostMsgType halMsg
24522)
24523{
Jeff Johnsone7245742012-09-05 17:12:55 -070024524 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024525 the chances of getting inlined*/
24526 switch( halMsg )
24527 {
24528 case WLAN_HAL_START_RSP:
24529 return WDI_START_RESP;
24530 case WLAN_HAL_STOP_RSP:
24531 return WDI_STOP_RESP;
24532 case WLAN_HAL_INIT_SCAN_RSP:
24533 return WDI_INIT_SCAN_RESP;
24534 case WLAN_HAL_START_SCAN_RSP:
24535 return WDI_START_SCAN_RESP;
24536 case WLAN_HAL_END_SCAN_RSP:
24537 return WDI_END_SCAN_RESP;
24538 case WLAN_HAL_FINISH_SCAN_RSP:
24539 return WDI_FINISH_SCAN_RESP;
24540 case WLAN_HAL_CONFIG_STA_RSP:
24541 return WDI_CONFIG_STA_RESP;
24542 case WLAN_HAL_DELETE_STA_RSP:
24543 return WDI_DEL_STA_RESP;
24544 case WLAN_HAL_CONFIG_BSS_RSP:
24545 return WDI_CONFIG_BSS_RESP;
24546 case WLAN_HAL_DELETE_BSS_RSP:
24547 return WDI_DEL_BSS_RESP;
24548 case WLAN_HAL_JOIN_RSP:
24549 return WDI_JOIN_RESP;
24550 case WLAN_HAL_POST_ASSOC_RSP:
24551 return WDI_POST_ASSOC_RESP;
24552 case WLAN_HAL_SET_BSSKEY_RSP:
24553 return WDI_SET_BSS_KEY_RESP;
24554 case WLAN_HAL_SET_STAKEY_RSP:
24555 return WDI_SET_STA_KEY_RESP;
24556 case WLAN_HAL_RMV_BSSKEY_RSP:
24557 return WDI_RMV_BSS_KEY_RESP;
24558 case WLAN_HAL_RMV_STAKEY_RSP:
24559 return WDI_RMV_STA_KEY_RESP;
24560 case WLAN_HAL_SET_BCASTKEY_RSP:
24561 return WDI_SET_STA_BCAST_KEY_RESP;
24562 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24563 // return WDI_RMV_STA_BCAST_KEY_RESP;
24564 case WLAN_HAL_ADD_TS_RSP:
24565 return WDI_ADD_TS_RESP;
24566 case WLAN_HAL_DEL_TS_RSP:
24567 return WDI_DEL_TS_RESP;
24568 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24569 return WDI_UPD_EDCA_PRMS_RESP;
24570 case WLAN_HAL_ADD_BA_RSP:
24571 return WDI_ADD_BA_RESP;
24572 case WLAN_HAL_DEL_BA_RSP:
24573 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024574#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024575 case WLAN_HAL_TSM_STATS_RSP:
24576 return WDI_TSM_STATS_RESP;
24577#endif
24578 case WLAN_HAL_CH_SWITCH_RSP:
24579 return WDI_CH_SWITCH_RESP;
24580 case WLAN_HAL_SET_LINK_ST_RSP:
24581 return WDI_SET_LINK_ST_RESP;
24582 case WLAN_HAL_GET_STATS_RSP:
24583 return WDI_GET_STATS_RESP;
24584 case WLAN_HAL_UPDATE_CFG_RSP:
24585 return WDI_UPDATE_CFG_RESP;
24586 case WLAN_HAL_ADD_BA_SESSION_RSP:
24587 return WDI_ADD_BA_SESSION_RESP;
24588 case WLAN_HAL_TRIGGER_BA_RSP:
24589 return WDI_TRIGGER_BA_RESP;
24590 case WLAN_HAL_UPDATE_BEACON_RSP:
24591 return WDI_UPD_BCON_PRMS_RESP;
24592 case WLAN_HAL_SEND_BEACON_RSP:
24593 return WDI_SND_BCON_RESP;
24594 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24595 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24596 /*Indications*/
24597 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24598 return WDI_HAL_RSSI_NOTIFICATION_IND;
24599 case WLAN_HAL_MISSED_BEACON_IND:
24600 return WDI_HAL_MISSED_BEACON_IND;
24601 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24602 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24603 case WLAN_HAL_MIC_FAILURE_IND:
24604 return WDI_HAL_MIC_FAILURE_IND;
24605 case WLAN_HAL_FATAL_ERROR_IND:
24606 return WDI_HAL_FATAL_ERROR_IND;
24607 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24608 return WDI_HAL_DEL_STA_IND;
24609 case WLAN_HAL_COEX_IND:
24610 return WDI_HAL_COEX_IND;
24611 case WLAN_HAL_OTA_TX_COMPL_IND:
24612 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024613 case WLAN_HAL_P2P_NOA_ATTR_IND:
24614 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024615 case WLAN_HAL_P2P_NOA_START_IND:
24616 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024617 case WLAN_HAL_DEL_BA_IND:
24618 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024619 case WLAN_HAL_TX_PER_HIT_IND:
24620 return WDI_HAL_TX_PER_HIT_IND;
24621 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24622 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024623 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24624 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024625 case WLAN_HAL_SET_TX_POWER_RSP:
24626 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024627 case WLAN_HAL_SET_P2P_GONOA_RSP:
24628 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024629#ifdef FEATURE_WLAN_TDLS
24630 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24631 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024632 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24633 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024634 case WLAN_HAL_TDLS_IND:
24635 return WDI_HAL_TDLS_IND;
24636#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024638 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024639 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024640 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024641 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024642 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024643 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024644 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024645 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024646 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024647 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024648 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024649 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024650 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024651 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024652 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024653 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024655 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24656 return WDI_SET_BEACON_FILTER_RESP;
24657 case WLAN_HAL_REM_BCN_FILTER_RSP:
24658 return WDI_REM_BEACON_FILTER_RESP;
24659 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24660 return WDI_SET_RSSI_THRESHOLDS_RESP;
24661 case WLAN_HAL_HOST_OFFLOAD_RSP:
24662 return WDI_HOST_OFFLOAD_RESP;
24663 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24664 return WDI_WOWL_ADD_BC_PTRN_RESP;
24665 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24666 return WDI_WOWL_DEL_BC_PTRN_RESP;
24667 case WLAN_HAL_ENTER_WOWL_RSP:
24668 return WDI_WOWL_ENTER_RESP;
24669 case WLAN_HAL_EXIT_WOWL_RSP:
24670 return WDI_WOWL_EXIT_RESP;
24671 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24672 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24673 case WLAN_HAL_DOWNLOAD_NV_RSP:
24674 return WDI_NV_DOWNLOAD_RESP;
24675 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24676 return WDI_FLUSH_AC_RESP;
24677 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24678 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024679 case WLAN_HAL_PROCESS_PTT_RSP:
24680 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024681 case WLAN_HAL_ADD_STA_SELF_RSP:
24682 return WDI_ADD_STA_SELF_RESP;
24683case WLAN_HAL_DEL_STA_SELF_RSP:
24684 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024685#ifdef FEATURE_OEM_DATA_SUPPORT
24686 case WLAN_HAL_START_OEM_DATA_RSP:
24687 return WDI_START_OEM_DATA_RESP;
24688#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024689 case WLAN_HAL_HOST_RESUME_RSP:
24690 return WDI_HOST_RESUME_RESP;
24691 case WLAN_HAL_KEEP_ALIVE_RSP:
24692 return WDI_KEEP_ALIVE_RESP;
24693#ifdef FEATURE_WLAN_SCAN_PNO
24694 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24695 return WDI_SET_PREF_NETWORK_RESP;
24696 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024697 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024698 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24699 return WDI_UPDATE_SCAN_PARAMS_RESP;
24700 case WLAN_HAL_PREF_NETW_FOUND_IND:
24701 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24702#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024703#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024704 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24705 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024706#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024707 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24708 return WDI_SET_TX_PER_TRACKING_RESP;
24709#ifdef WLAN_FEATURE_PACKET_FILTERING
24710 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24711 return WDI_8023_MULTICAST_LIST_RESP;
24712 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24713 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24714 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24715 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24716 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24717 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24718#endif // WLAN_FEATURE_PACKET_FILTERING
24719
24720 case WLAN_HAL_DUMP_COMMAND_RSP:
24721 return WDI_HAL_DUMP_CMD_RESP;
24722 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24723 return WDI_SET_POWER_PARAMS_RESP;
24724#ifdef WLAN_FEATURE_VOWIFI_11R
24725 case WLAN_HAL_AGGR_ADD_TS_RSP:
24726 return WDI_AGGR_ADD_TS_RESP;
24727#endif
24728
24729#ifdef WLAN_FEATURE_GTK_OFFLOAD
24730 case WLAN_HAL_GTK_OFFLOAD_RSP:
24731 return WDI_GTK_OFFLOAD_RESP;
24732 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24733 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24734#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24735#ifdef WLAN_WAKEUP_EVENTS
24736 case WLAN_HAL_WAKE_REASON_IND:
24737 return WDI_HAL_WAKE_REASON_IND;
24738#endif // WLAN_WAKEUP_EVENTS
24739
24740 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24741 return WDI_SET_TM_LEVEL_RESP;
24742 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24743 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024744#ifdef WLAN_FEATURE_11AC
24745 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24746 return WDI_UPDATE_VHT_OP_MODE_RESP;
24747#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024748#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024749 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24750 return WDI_GET_ROAM_RSSI_RESP;
24751#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024752
Leo Chang9056f462013-08-01 19:21:11 -070024753#ifdef FEATURE_WLAN_LPHB
24754 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024755 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024756 case WLAN_HAL_LPHB_CFG_RSP:
24757 return WDI_LPHB_CFG_RESP;
24758#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024759
24760 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24761 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024762 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24763 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024764
Rajeev79dbe4c2013-10-05 11:03:42 +053024765#ifdef FEATURE_WLAN_BATCH_SCAN
24766 case WLAN_HAL_BATCHSCAN_SET_RSP:
24767 return WDI_SET_BATCH_SCAN_RESP;
24768 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24769 return WDI_BATCHSCAN_RESULT_IND;
24770#endif // FEATURE_WLAN_BATCH_SCAN
24771
Leo Chang0b0e45a2013-12-15 15:18:55 -080024772#ifdef FEATURE_WLAN_CH_AVOID
24773 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24774 return WDI_HAL_CH_AVOID_IND;
24775#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024776 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24777 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024778 case WLAN_HAL_PRINT_REG_INFO_IND:
24779 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024780 case WLAN_HAL_CH_SWITCH_V1_RSP:
24781 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024782 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24783 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024784#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24785 case WLAN_HAL_LL_SET_STATS_RSP:
24786 return WDI_LL_STATS_SET_RSP;
24787 case WLAN_HAL_LL_GET_STATS_RSP:
24788 return WDI_LL_STATS_GET_RSP;
24789 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24790 return WDI_LL_STATS_CLEAR_RSP;
24791 case WLAN_HAL_LL_NOTIFY_STATS:
24792 return WDI_HAL_LL_STATS_RESULTS_IND;
24793#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024794#ifdef WLAN_FEATURE_EXTSCAN
24795 case WLAN_HAL_EXT_SCAN_START_RSP:
24796 return WDI_EXTSCAN_START_RSP;
24797 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24798 return WDI_EXTSCAN_STOP_RSP;
24799 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24800 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24801 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24802 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24803 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24804 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24805 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24806 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024807 case WLAN_HAL_SSID_HOTLIST_SET_RSP:
24808 return WDI_EXTSCAN_SET_HOTLIST_SSID_RSP;
24809 case WLAN_HAL_SSID_HOTLIST_RESET_RSP:
24810 return WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053024811 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24812 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24813 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24814 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24815 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24816 return WDI_HAL_EXTSCAN_RESULT_IND;
24817 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24818 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024819 case WLAN_HAL_SSID_HOTLIST_RESULT_IND:
24820 return WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND;
24821
Dino Mycle41bdc942014-06-10 11:30:24 +053024822#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024823 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24824 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024825 case WLAN_HAL_FW_STATS_RSP:
24826 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024827 case WLAN_HAL_ENCRYPT_DATA_RSP:
24828 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024829 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24830 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024831 case WLAN_HAL_GET_FRAME_LOG_RSP:
24832 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024833 case WLAN_HAL_NAN_RSP:
24834 return WDI_NAN_RESPONSE;
24835 case WLAN_HAL_NAN_EVT:
24836 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053024837 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
24838 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024839 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24840 return WDI_MON_START_RSP;
24841 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24842 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024843 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24844 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053024845 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
24846 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024847 case WLAN_HAL_START_RSSI_MONITORING_RSP:
24848 return WDI_START_RSSI_MONITOR_RSP;
24849 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
24850 return WDI_STOP_RSSI_MONITOR_RSP;
24851 case WLAN_HAL_RSSI_MONITORING_IND:
24852 return WDI_HAL_RSSI_BREACHED_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024853 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024854 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024855 }
24856
24857}/*HAL_2_WDI_RSP_TYPE*/
24858
24859
24860/*Convert WDI driver type into HAL driver type*/
24861WPT_STATIC WPT_INLINE tDriverType
24862WDI_2_HAL_DRV_TYPE
24863(
24864 WDI_DriverType wdiDriverType
24865)
24866{
Jeff Johnsone7245742012-09-05 17:12:55 -070024867 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024868 the chances of getting inlined*/
24869 switch( wdiDriverType )
24870 {
24871 case WDI_DRIVER_TYPE_PRODUCTION:
24872 return eDRIVER_TYPE_PRODUCTION;
24873 case WDI_DRIVER_TYPE_MFG:
24874 return eDRIVER_TYPE_MFG;
24875 case WDI_DRIVER_TYPE_DVT:
24876 return eDRIVER_TYPE_DVT;
24877 }
24878
Jeff Johnsone7245742012-09-05 17:12:55 -070024879 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024880}/*WDI_2_HAL_DRV_TYPE*/
24881
24882
24883/*Convert WDI stop reason into HAL stop reason*/
24884WPT_STATIC WPT_INLINE tHalStopType
24885WDI_2_HAL_STOP_REASON
24886(
24887 WDI_StopType wdiDriverType
24888)
24889{
Jeff Johnsone7245742012-09-05 17:12:55 -070024890 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024891 the chances of getting inlined*/
24892 switch( wdiDriverType )
24893 {
24894 case WDI_STOP_TYPE_SYS_RESET:
24895 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024896 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24897 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024898 case WDI_STOP_TYPE_RF_KILL:
24899 return HAL_STOP_TYPE_RF_KILL;
24900 }
24901
Jeff Johnsone7245742012-09-05 17:12:55 -070024902 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024903}/*WDI_2_HAL_STOP_REASON*/
24904
24905
24906/*Convert WDI scan mode type into HAL scan mode type*/
24907WPT_STATIC WPT_INLINE eHalSysMode
24908WDI_2_HAL_SCAN_MODE
24909(
24910 WDI_ScanMode wdiScanMode
24911)
24912{
Jeff Johnsone7245742012-09-05 17:12:55 -070024913 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024914 the chances of getting inlined*/
24915 switch( wdiScanMode )
24916 {
24917 case WDI_SCAN_MODE_NORMAL:
24918 return eHAL_SYS_MODE_NORMAL;
24919 case WDI_SCAN_MODE_LEARN:
24920 return eHAL_SYS_MODE_LEARN;
24921 case WDI_SCAN_MODE_SCAN:
24922 return eHAL_SYS_MODE_SCAN;
24923 case WDI_SCAN_MODE_PROMISC:
24924 return eHAL_SYS_MODE_PROMISC;
24925 case WDI_SCAN_MODE_SUSPEND_LINK:
24926 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024927 case WDI_SCAN_MODE_ROAM_SCAN:
24928 return eHAL_SYS_MODE_ROAM_SCAN;
24929 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24930 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024931 }
24932
Jeff Johnsone7245742012-09-05 17:12:55 -070024933 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024934}/*WDI_2_HAL_SCAN_MODE*/
24935
24936/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024937WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024938WDI_2_HAL_SEC_CH_OFFSET
24939(
24940 WDI_HTSecondaryChannelOffset wdiSecChOffset
24941)
24942{
Jeff Johnsone7245742012-09-05 17:12:55 -070024943 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024944 the chances of getting inlined*/
24945 switch( wdiSecChOffset )
24946 {
24947 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024948 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024949 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024950 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024951 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024952 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24953#ifdef WLAN_FEATURE_11AC
24954 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24955 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24956 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24957 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24958 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24959 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24960 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24961 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24962 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24963 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24964 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24965 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24966 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24967 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24968#endif
24969 default:
24970 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024971 }
24972
Jeff Johnsone7245742012-09-05 17:12:55 -070024973 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024974}/*WDI_2_HAL_SEC_CH_OFFSET*/
24975
24976/*Convert WDI BSS type into HAL BSS type*/
24977WPT_STATIC WPT_INLINE tSirBssType
24978WDI_2_HAL_BSS_TYPE
24979(
24980 WDI_BssType wdiBSSType
24981)
24982{
Jeff Johnsone7245742012-09-05 17:12:55 -070024983 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024984 the chances of getting inlined*/
24985 switch( wdiBSSType )
24986 {
24987 case WDI_INFRASTRUCTURE_MODE:
24988 return eSIR_INFRASTRUCTURE_MODE;
24989 case WDI_INFRA_AP_MODE:
24990 return eSIR_INFRA_AP_MODE;
24991 case WDI_IBSS_MODE:
24992 return eSIR_IBSS_MODE;
24993 case WDI_BTAMP_STA_MODE:
24994 return eSIR_BTAMP_STA_MODE;
24995 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024996 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024997 case WDI_BSS_AUTO_MODE:
24998 return eSIR_AUTO_MODE;
24999 }
25000
Jeff Johnsone7245742012-09-05 17:12:55 -070025001 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025002}/*WDI_2_HAL_BSS_TYPE*/
25003
25004/*Convert WDI NW type into HAL NW type*/
25005WPT_STATIC WPT_INLINE tSirNwType
25006WDI_2_HAL_NW_TYPE
25007(
25008 WDI_NwType wdiNWType
25009)
25010{
Jeff Johnsone7245742012-09-05 17:12:55 -070025011 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025012 the chances of getting inlined*/
25013 switch( wdiNWType )
25014 {
25015 case WDI_11A_NW_TYPE:
25016 return eSIR_11A_NW_TYPE;
25017 case WDI_11B_NW_TYPE:
25018 return eSIR_11B_NW_TYPE;
25019 case WDI_11G_NW_TYPE:
25020 return eSIR_11G_NW_TYPE;
25021 case WDI_11N_NW_TYPE:
25022 return eSIR_11N_NW_TYPE;
25023 }
25024
Jeff Johnsone7245742012-09-05 17:12:55 -070025025 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025026}/*WDI_2_HAL_NW_TYPE*/
25027
25028/*Convert WDI chanel bonding type into HAL cb type*/
25029WPT_STATIC WPT_INLINE ePhyChanBondState
25030WDI_2_HAL_CB_STATE
25031(
25032 WDI_PhyChanBondState wdiCbState
25033)
25034{
Jeff Johnsone7245742012-09-05 17:12:55 -070025035 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025036 the chances of getting inlined*/
25037 switch ( wdiCbState )
25038 {
25039 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25040 return PHY_SINGLE_CHANNEL_CENTERED;
25041 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25042 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25043 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25044 return PHY_DOUBLE_CHANNEL_CENTERED;
25045 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25046 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025047#ifdef WLAN_FEATURE_11AC
25048 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25049 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25050 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25051 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25052 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25053 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25054 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25055 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25056 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25057 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25058 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25059 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25060 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25061 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25062#endif
25063 case WDI_MAX_CB_STATE:
25064 default:
25065 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025066 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025067
Jeff Johnson295189b2012-06-20 16:38:30 -070025068 return PHY_CHANNEL_BONDING_STATE_MAX;
25069}/*WDI_2_HAL_CB_STATE*/
25070
25071/*Convert WDI chanel bonding type into HAL cb type*/
25072WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
25073WDI_2_HAL_HT_OPER_MODE
25074(
25075 WDI_HTOperatingMode wdiHTOperMode
25076)
25077{
Jeff Johnsone7245742012-09-05 17:12:55 -070025078 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025079 the chances of getting inlined*/
25080 switch ( wdiHTOperMode )
25081 {
25082 case WDI_HT_OP_MODE_PURE:
25083 return eSIR_HT_OP_MODE_PURE;
25084 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
25085 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
25086 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
25087 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
25088 case WDI_HT_OP_MODE_MIXED:
25089 return eSIR_HT_OP_MODE_MIXED;
25090 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025091
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 return eSIR_HT_OP_MODE_MAX;
25093}/*WDI_2_HAL_HT_OPER_MODE*/
25094
25095/*Convert WDI mimo PS type into HAL mimo PS type*/
25096WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
25097WDI_2_HAL_MIMO_PS
25098(
25099 WDI_HTMIMOPowerSaveState wdiHTOperMode
25100)
25101{
Jeff Johnsone7245742012-09-05 17:12:55 -070025102 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025103 the chances of getting inlined*/
25104 switch ( wdiHTOperMode )
25105 {
25106 case WDI_HT_MIMO_PS_STATIC:
25107 return eSIR_HT_MIMO_PS_STATIC;
25108 case WDI_HT_MIMO_PS_DYNAMIC:
25109 return eSIR_HT_MIMO_PS_DYNAMIC;
25110 case WDI_HT_MIMO_PS_NA:
25111 return eSIR_HT_MIMO_PS_NA;
25112 case WDI_HT_MIMO_PS_NO_LIMIT:
25113 return eSIR_HT_MIMO_PS_NO_LIMIT;
25114 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025115
Jeff Johnson295189b2012-06-20 16:38:30 -070025116 return eSIR_HT_MIMO_PS_MAX;
25117}/*WDI_2_HAL_MIMO_PS*/
25118
25119/*Convert WDI ENC type into HAL ENC type*/
25120WPT_STATIC WPT_INLINE tAniEdType
25121WDI_2_HAL_ENC_TYPE
25122(
25123 WDI_EncryptType wdiEncType
25124)
25125{
Jeff Johnsone7245742012-09-05 17:12:55 -070025126 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 the chances of getting inlined*/
25128 switch ( wdiEncType )
25129 {
25130 case WDI_ENCR_NONE:
25131 return eSIR_ED_NONE;
25132
25133 case WDI_ENCR_WEP40:
25134 return eSIR_ED_WEP40;
25135
25136 case WDI_ENCR_WEP104:
25137 return eSIR_ED_WEP104;
25138
25139 case WDI_ENCR_TKIP:
25140 return eSIR_ED_TKIP;
25141
25142 case WDI_ENCR_CCMP:
25143 return eSIR_ED_CCMP;
25144
25145 case WDI_ENCR_AES_128_CMAC:
25146 return eSIR_ED_AES_128_CMAC;
25147#if defined(FEATURE_WLAN_WAPI)
25148 case WDI_ENCR_WPI:
25149 return eSIR_ED_WPI;
25150#endif
25151 default:
25152 return eSIR_ED_NOT_IMPLEMENTED;
25153 }
25154
25155}/*WDI_2_HAL_ENC_TYPE*/
25156
25157/*Convert WDI WEP type into HAL WEP type*/
25158WPT_STATIC WPT_INLINE tAniWepType
25159WDI_2_HAL_WEP_TYPE
25160(
25161 WDI_WepType wdiWEPType
25162)
25163{
Jeff Johnsone7245742012-09-05 17:12:55 -070025164 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 the chances of getting inlined*/
25166 switch ( wdiWEPType )
25167 {
25168 case WDI_WEP_STATIC:
25169 return eSIR_WEP_STATIC;
25170
25171 case WDI_WEP_DYNAMIC:
25172 return eSIR_WEP_DYNAMIC;
25173 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025174
Jeff Johnson295189b2012-06-20 16:38:30 -070025175 return eSIR_WEP_MAX;
25176}/*WDI_2_HAL_WEP_TYPE*/
25177
25178WPT_STATIC WPT_INLINE tSirLinkState
25179WDI_2_HAL_LINK_STATE
25180(
25181 WDI_LinkStateType wdiLinkState
25182)
25183{
Jeff Johnsone7245742012-09-05 17:12:55 -070025184 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025185 the chances of getting inlined*/
25186 switch ( wdiLinkState )
25187 {
25188 case WDI_LINK_IDLE_STATE:
25189 return eSIR_LINK_IDLE_STATE;
25190
25191 case WDI_LINK_PREASSOC_STATE:
25192 return eSIR_LINK_PREASSOC_STATE;
25193
25194 case WDI_LINK_POSTASSOC_STATE:
25195 return eSIR_LINK_POSTASSOC_STATE;
25196
25197 case WDI_LINK_AP_STATE:
25198 return eSIR_LINK_AP_STATE;
25199
25200 case WDI_LINK_IBSS_STATE:
25201 return eSIR_LINK_IBSS_STATE;
25202
25203 case WDI_LINK_BTAMP_PREASSOC_STATE:
25204 return eSIR_LINK_BTAMP_PREASSOC_STATE;
25205
25206 case WDI_LINK_BTAMP_POSTASSOC_STATE:
25207 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
25208
25209 case WDI_LINK_BTAMP_AP_STATE:
25210 return eSIR_LINK_BTAMP_AP_STATE;
25211
25212 case WDI_LINK_BTAMP_STA_STATE:
25213 return eSIR_LINK_BTAMP_STA_STATE;
25214
25215 case WDI_LINK_LEARN_STATE:
25216 return eSIR_LINK_LEARN_STATE;
25217
25218 case WDI_LINK_SCAN_STATE:
25219 return eSIR_LINK_SCAN_STATE;
25220
25221 case WDI_LINK_FINISH_SCAN_STATE:
25222 return eSIR_LINK_FINISH_SCAN_STATE;
25223
25224 case WDI_LINK_INIT_CAL_STATE:
25225 return eSIR_LINK_INIT_CAL_STATE;
25226
25227 case WDI_LINK_FINISH_CAL_STATE:
25228 return eSIR_LINK_FINISH_CAL_STATE;
25229
Jeff Johnson295189b2012-06-20 16:38:30 -070025230 case WDI_LINK_LISTEN_STATE:
25231 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025232
Gopichand Nakkala924e4552013-05-08 19:18:14 +053025233 case WDI_LINK_SEND_ACTION_STATE:
25234 return eSIR_LINK_SEND_ACTION_STATE;
25235
Jeff Johnson295189b2012-06-20 16:38:30 -070025236 default:
25237 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070025238 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025239}
25240
Jeff Johnsone7245742012-09-05 17:12:55 -070025241/*Translate a STA Context from WDI into HAL*/
25242WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025243void
25244WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025245(
Jeff Johnson295189b2012-06-20 16:38:30 -070025246 tConfigStaParams* phalConfigSta,
25247 WDI_ConfigStaReqInfoType* pwdiConfigSta
25248)
25249{
25250 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025251#ifdef WLAN_FEATURE_11AC
25252 /* Get the Version 1 Handler */
25253 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25254 if (WDI_getFwWlanFeatCaps(DOT11AC))
25255 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025256 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025257 }
25258#endif
25259 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025260 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025261
Jeff Johnsone7245742012-09-05 17:12:55 -070025262 wpalMemoryCopy(phalConfigSta->bssId,
25263 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25264
25265 wpalMemoryCopy(phalConfigSta->staMac,
25266 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025267
25268 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25269 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25270 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25271 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25272 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25273 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25274 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25275 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25276 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25277 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25278 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25279 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25280 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25281 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25282 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25283 phalConfigSta->action = pwdiConfigSta->wdiAction;
25284 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25285 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25286 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25287 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25288 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25289 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25290 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025291
Jeff Johnson295189b2012-06-20 16:38:30 -070025292 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25293
Jeff Johnsone7245742012-09-05 17:12:55 -070025294 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 pwdiConfigSta->wdiSupportedRates.opRateMode;
25296 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25297 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025298 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025299 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25300 }
25301 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25302 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025303 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025304 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25305 }
25306 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25307 {
25308 phalConfigSta->supportedRates.aniLegacyRates[i] =
25309 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25310 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025311 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025312 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25313 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25314 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025315 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025316 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25317 }
25318 phalConfigSta->supportedRates.rxHighestDataRate =
25319 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25320
Jeff Johnsone7245742012-09-05 17:12:55 -070025321#ifdef WLAN_FEATURE_11AC
25322 if(phalConfigSta_V1 != NULL)
25323 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025324 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25325 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25326 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25327 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025328 }
25329#endif
25330
Jeff Johnson295189b2012-06-20 16:38:30 -070025331 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025332
Jeff Johnsone7245742012-09-05 17:12:55 -070025333#ifdef WLAN_FEATURE_11AC
25334 if(phalConfigSta_V1 != NULL)
25335 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025336 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25337 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025338 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025339 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025340 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25341 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25342
Jeff Johnsone7245742012-09-05 17:12:55 -070025343 }
25344#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025345}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025346
25347/*Translate a Rate set info from WDI into HAL*/
25348WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025349WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025350(
Jeff Johnson295189b2012-06-20 16:38:30 -070025351 tSirMacRateSet* pHalRateSet,
25352 WDI_RateSet* pwdiRateSet
25353)
25354{
Jeff Johnsone7245742012-09-05 17:12:55 -070025355 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25357
25358 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25359 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25360
25361 for ( i = 0; i < pHalRateSet->numRates; i++ )
25362 {
25363 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25364 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025365
Jeff Johnson295189b2012-06-20 16:38:30 -070025366}/*WDI_CopyWDIRateSetToHALRateSet*/
25367
25368
25369/*Translate an EDCA Parameter Record from WDI into HAL*/
25370WPT_STATIC WPT_INLINE void
25371WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025372(
Jeff Johnson295189b2012-06-20 16:38:30 -070025373 tSirMacEdcaParamRecord* phalEdcaParam,
25374 WDI_EdcaParamRecord* pWDIEdcaParam
25375)
25376{
Jeff Johnsone7245742012-09-05 17:12:55 -070025377 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025378 the chances of getting inlined*/
25379
25380 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25381 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25382 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25383 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25384
25385 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25386 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25387 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25388}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25389
25390
25391/*Copy a management frame header from WDI fmt into HAL fmt*/
25392WPT_STATIC WPT_INLINE void
25393WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25394(
25395 tSirMacMgmtHdr* pmacMgmtHdr,
25396 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25397)
25398{
25399 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25400 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25401 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25402 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25403 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25404 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25405 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25406 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25407 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25408 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25409 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25410
25411 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25412 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25413
Jeff Johnsone7245742012-09-05 17:12:55 -070025414 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025415 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025416 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025417 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025418 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025419 pwdiMacMgmtHdr->bssId, 6);
25420
25421 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25422 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25423 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25424
25425}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25426
25427
25428/*Copy config bss parameters from WDI fmt into HAL fmt*/
25429WPT_STATIC WPT_INLINE void
25430WDI_CopyWDIConfigBSSToHALConfigBSS
25431(
25432 tConfigBssParams* phalConfigBSS,
25433 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25434)
25435{
25436
25437 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025438#ifdef WLAN_FEATURE_11AC
25439 /* Get the Version 1 Handler */
25440 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25441 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025442 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025443#endif
25444
Jeff Johnson295189b2012-06-20 16:38:30 -070025445 wpalMemoryCopy( phalConfigBSS->bssId,
25446 pwdiConfigBSS->macBSSID,
25447 WDI_MAC_ADDR_LEN);
25448
25449#ifdef HAL_SELF_STA_PER_BSS
25450 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25451 pwdiConfigBSS->macSelfAddr,
25452 WDI_MAC_ADDR_LEN);
25453#endif
25454
25455 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25456
25457 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25458 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25459
Jeff Johnsone7245742012-09-05 17:12:55 -070025460 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025461 pwdiConfigBSS->ucShortSlotTimeSupported;
25462 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25463 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25464 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25465 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25466 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025467 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025468 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25469 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25470 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25471 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25472 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25473 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25474 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25475 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25476 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25477 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25478 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25479
Jeff Johnsone7245742012-09-05 17:12:55 -070025480 phalConfigBSS->htOperMode =
25481 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025482
25483 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25484 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25485 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25486 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25487
25488#ifdef WLAN_FEATURE_VOWIFI
25489 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25490#endif
25491
25492 /*! Used 32 as magic number because that is how the ssid is declared inside the
25493 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025494 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025495 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25496 pwdiConfigBSS->wdiSSID.ucLength : 32;
25497 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025498 pwdiConfigBSS->wdiSSID.sSSID,
25499 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025500
25501 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25502 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025503
Jeff Johnson295189b2012-06-20 16:38:30 -070025504 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25505 &pwdiConfigBSS->wdiRateSet);
25506
25507 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25508
25509 if(phalConfigBSS->edcaParamsValid)
25510 {
25511 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25512 &pwdiConfigBSS->wdiBEEDCAParams);
25513 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25514 &pwdiConfigBSS->wdiBKEDCAParams);
25515 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25516 &pwdiConfigBSS->wdiVIEDCAParams);
25517 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25518 &pwdiConfigBSS->wdiVOEDCAParams);
25519 }
25520
Jeff Johnsone7245742012-09-05 17:12:55 -070025521 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025522
25523 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25524
25525#ifdef WLAN_FEATURE_VOWIFI_11R
25526
Jeff Johnsone7245742012-09-05 17:12:55 -070025527 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025529
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 if( phalConfigBSS->extSetStaKeyParamValid )
25531 {
25532 /*-----------------------------------------------------------------------
25533 Copy the STA Key parameters into the HAL message
25534 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025535 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025536 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25537
Jeff Johnsone7245742012-09-05 17:12:55 -070025538 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25540
25541 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25542
25543 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25544
25545 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25546
Jeff Johnson295189b2012-06-20 16:38:30 -070025547 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25548 keyIndex++)
25549 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025550 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025551 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25552 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25553 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25554 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25555 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25556 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025559 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025560 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025561 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025562 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25563 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 WDI_MAX_KEY_LENGTH);
25566 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 }
25568 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25569 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025570 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025571 sizeof(phalConfigBSS->extSetStaKeyParam) );
25572 }
25573
25574#endif /*WLAN_FEATURE_VOWIFI_11R*/
25575
Jeff Johnsone7245742012-09-05 17:12:55 -070025576#ifdef WLAN_FEATURE_11AC
25577 if(phalConfigBSS_V1 != NULL)
25578 {
25579 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25580 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25581 }
25582#endif
25583
Jeff Johnson295189b2012-06-20 16:38:30 -070025584}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25585
25586
Jeff Johnsone7245742012-09-05 17:12:55 -070025587/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025588 pointed to by user data */
25589WPT_STATIC WPT_INLINE void
25590WDI_ExtractRequestCBFromEvent
25591(
25592 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025593 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025594 void** ppUserData
25595)
25596{
25597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25598 switch ( pEvent->wdiRequest )
25599 {
25600 case WDI_START_REQ:
25601 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25602 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25603 break;
25604 case WDI_STOP_REQ:
25605 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25606 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25607 break;
25608 case WDI_INIT_SCAN_REQ:
25609 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25610 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25611 break;
25612 case WDI_START_SCAN_REQ:
25613 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25614 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25615 break;
25616 case WDI_END_SCAN_REQ:
25617 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25618 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25619 break;
25620 case WDI_FINISH_SCAN_REQ:
25621 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25622 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25623 break;
25624 case WDI_JOIN_REQ:
25625 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25626 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25627 break;
25628 case WDI_CONFIG_BSS_REQ:
25629 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25630 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25631 break;
25632 case WDI_DEL_BSS_REQ:
25633 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25634 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25635 break;
25636 case WDI_POST_ASSOC_REQ:
25637 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25638 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25639 break;
25640 case WDI_DEL_STA_REQ:
25641 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25642 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25643 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025644
25645 case WDI_ADD_STA_SELF_REQ:
25646 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25647 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25648 break;
25649
Jeff Johnson295189b2012-06-20 16:38:30 -070025650 case WDI_DEL_STA_SELF_REQ:
25651 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25652 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25653 break;
25654
25655 case WDI_SET_BSS_KEY_REQ:
25656 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25657 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25658 break;
25659 case WDI_RMV_BSS_KEY_REQ:
25660 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25661 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25662 break;
25663 case WDI_SET_STA_KEY_REQ:
25664 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25665 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25666 break;
25667 case WDI_RMV_STA_KEY_REQ:
25668 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25669 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25670 break;
25671 case WDI_ADD_TS_REQ:
25672 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25673 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25674 break;
25675 case WDI_DEL_TS_REQ:
25676 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25677 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25678 break;
25679 case WDI_UPD_EDCA_PRMS_REQ:
25680 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25681 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25682 break;
25683 case WDI_ADD_BA_SESSION_REQ:
25684 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25685 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25686 break;
25687 case WDI_DEL_BA_REQ:
25688 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25689 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25690 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025691#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025692 case WDI_TSM_STATS_REQ:
25693 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25694 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25695 break;
25696#endif
25697 case WDI_CH_SWITCH_REQ:
25698 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25699 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25700 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025701 case WDI_CH_SWITCH_REQ_V1:
25702 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25703 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25704 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025705 case WDI_CONFIG_STA_REQ:
25706 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25707 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25708 break;
25709 case WDI_SET_LINK_ST_REQ:
25710 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25711 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25712 break;
25713 case WDI_GET_STATS_REQ:
25714 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25715 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25716 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025717#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025718 case WDI_GET_ROAM_RSSI_REQ:
25719 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25720 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25721 break;
25722#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025723 case WDI_UPDATE_CFG_REQ:
25724 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25725 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25726 break;
25727 case WDI_ADD_BA_REQ:
25728 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25729 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25730 break;
25731 case WDI_TRIGGER_BA_REQ:
25732 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25733 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25734 break;
25735 case WDI_UPD_BCON_PRMS_REQ:
25736 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25737 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25738 break;
25739 case WDI_SND_BCON_REQ:
25740 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25741 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25742 break;
25743 case WDI_ENTER_BMPS_REQ:
25744 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25745 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25746 break;
25747 case WDI_EXIT_BMPS_REQ:
25748 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25749 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25750 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025751 case WDI_ENTER_IMPS_REQ:
25752 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25753 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25754 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025755 case WDI_ENTER_UAPSD_REQ:
25756 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25757 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25758 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025759 case WDI_EXIT_UAPSD_REQ:
25760 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25761 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25762 break;
25763 case WDI_SET_UAPSD_PARAM_REQ:
25764 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25765 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25766 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 case WDI_UPDATE_UAPSD_PARAM_REQ:
25768 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25769 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25770 break;
25771 case WDI_CONFIGURE_RXP_FILTER_REQ:
25772 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25773 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25774 break;
25775 case WDI_SET_BEACON_FILTER_REQ:
25776 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25777 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25778 break;
25779 case WDI_REM_BEACON_FILTER_REQ:
25780 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25781 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025782 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025783 case WDI_SET_RSSI_THRESHOLDS_REQ:
25784 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25785 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25786 break;
25787 case WDI_HOST_OFFLOAD_REQ:
25788 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25789 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25790 break;
25791 case WDI_WOWL_ADD_BC_PTRN_REQ:
25792 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25793 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25794 break;
25795 case WDI_WOWL_DEL_BC_PTRN_REQ:
25796 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25797 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25798 break;
25799 case WDI_WOWL_ENTER_REQ:
25800 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25801 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25802 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025803 case WDI_WOWL_EXIT_REQ:
25804 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25805 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25806 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025807 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25808 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25809 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25810 break;
25811 case WDI_FLUSH_AC_REQ:
25812 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25813 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25814 break;
25815 case WDI_BTAMP_EVENT_REQ:
25816 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25817 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25818 break;
25819 case WDI_KEEP_ALIVE_REQ:
25820 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25821 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25822 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025823#if defined FEATURE_WLAN_SCAN_PNO
25824 case WDI_SET_PREF_NETWORK_REQ:
25825 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25826 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25827 break;
25828 case WDI_SET_RSSI_FILTER_REQ:
25829 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25830 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25831 break;
25832 case WDI_UPDATE_SCAN_PARAMS_REQ:
25833 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25834 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25835 break;
25836#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025837 case WDI_SET_TX_PER_TRACKING_REQ:
25838 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25839 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025840 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025841#if defined WLAN_FEATURE_PACKET_FILTERING
25842 case WDI_8023_MULTICAST_LIST_REQ:
25843 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25844 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25845 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025846 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25847 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25848 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25849 break;
25850 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25851 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25852 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25853 break;
25854 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25855 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25856 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25857 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025858#endif
25859 case WDI_SET_POWER_PARAMS_REQ:
25860 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25861 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25862 break;
25863#if defined WLAN_FEATURE_GTK_OFFLOAD
25864 case WDI_GTK_OFFLOAD_REQ:
25865 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25866 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25867 break;
25868 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25869 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25870 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25871 break;
25872#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025873
Jeff Johnson295189b2012-06-20 16:38:30 -070025874 default:
25875 *ppfnReqCB = NULL;
25876 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025877 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025878 }
25879}/*WDI_ExtractRequestCBFromEvent*/
25880
25881
25882/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025883 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025884 frame xtl is enabled for a particular STA.
25885
25886 WDI_PostAssocReq must have been called.
25887
Jeff Johnsone7245742012-09-05 17:12:55 -070025888 @param uSTAIdx: STA index
25889
Jeff Johnson295189b2012-06-20 16:38:30 -070025890 @see WDI_PostAssocReq
25891 @return Result of the function call
25892*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025893wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025894WDI_IsHwFrameTxTranslationCapable
25895(
25896 wpt_uint8 uSTAIdx
25897)
25898{
Jeff Johnsone7245742012-09-05 17:12:55 -070025899 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025900 uma value*/
25901 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025902 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025903 ------------------------------------------------------------------------*/
25904 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25905 {
25906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25907 "WDI API call before module is initialized - Fail request");
25908
Jeff Johnsone7245742012-09-05 17:12:55 -070025909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 }
25911
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025912#ifdef WLAN_SOFTAP_VSTA_FEATURE
25913 if (IS_VSTA_IDX(uSTAIdx))
25914 {
25915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25916 "STA %d is a Virtual STA, "
25917 "HW frame translation disabled", uSTAIdx);
25918 return eWLAN_PAL_FALSE;
25919 }
25920#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025921
Jeff Johnson295189b2012-06-20 16:38:30 -070025922 return gWDICb.bFrameTransEnabled;
25923}/*WDI_IsHwFrameTxTranslationCapable*/
25924
Katya Nigam6201c3e2014-05-27 17:51:42 +053025925
25926/**
25927 @brief WDI_IsSelfSTA - check if staid is self sta index
25928
25929
25930 @param pWDICtx: pointer to the WLAN DAL context
25931 ucSTAIdx: station index
25932
25933 @return Result of the function call
25934*/
25935wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25936{
25937 wpt_uint8 ucSTAType;
25938
25939 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25940 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25941 {
25942 if( ucSTAType == WDI_STA_ENTRY_SELF )
25943 return eWLAN_PAL_TRUE;
25944 }
25945
25946 return eWLAN_PAL_FALSE;
25947}
25948
25949
25950
Jeff Johnson295189b2012-06-20 16:38:30 -070025951#ifdef FEATURE_WLAN_SCAN_PNO
25952/**
25953 @brief WDI_SetPreferredNetworkList
25954
Jeff Johnsone7245742012-09-05 17:12:55 -070025955 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025956 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025957
Jeff Johnson295189b2012-06-20 16:38:30 -070025958 wdiPNOScanCb: callback for passing back the response
25959 of the Set PNO operation received from the
25960 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025961
Jeff Johnson295189b2012-06-20 16:38:30 -070025962 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025963 callback
25964
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 @return Result of the function call
25966*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025967WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025968WDI_SetPreferredNetworkReq
25969(
25970 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25971 WDI_PNOScanCb wdiPNOScanCb,
25972 void* pUserData
25973)
25974{
25975 WDI_EventInfoType wdiEventData = {{0}};
25976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25977
25978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025980 ------------------------------------------------------------------------*/
25981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25982 {
25983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25984 "WDI API call before module is initialized - Fail request");
25985
Jeff Johnsone7245742012-09-05 17:12:55 -070025986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025987 }
25988
25989 /*------------------------------------------------------------------------
25990 Fill in Event data and post to the Main FSM
25991 ------------------------------------------------------------------------*/
25992 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025993 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025994 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025995 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025996 wdiEventData.pUserData = pUserData;
25997
25998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25999}
26000
26001
26002/**
26003 @brief WDI_SetRssiFilterReq
26004
Jeff Johnsone7245742012-09-05 17:12:55 -070026005 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026006 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026007
Jeff Johnson295189b2012-06-20 16:38:30 -070026008 wdiRssiFilterCb: callback for passing back the response
26009 of the Set RSSI Filter operation received from the
26010 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026011
Jeff Johnson295189b2012-06-20 16:38:30 -070026012 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026013 callback
26014
Jeff Johnson295189b2012-06-20 16:38:30 -070026015 @return Result of the function call
26016*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026017WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026018WDI_SetRssiFilterReq
26019(
26020 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26021 WDI_RssiFilterCb wdiRssiFilterCb,
26022 void* pUserData
26023)
26024{
26025 WDI_EventInfoType wdiEventData = {{0}};
26026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26027
26028 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026029 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026030 ------------------------------------------------------------------------*/
26031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26032 {
26033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26034 "WDI API call before module is initialized - Fail request");
26035
Jeff Johnsone7245742012-09-05 17:12:55 -070026036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026037 }
26038
26039 /*------------------------------------------------------------------------
26040 Fill in Event data and post to the Main FSM
26041 ------------------------------------------------------------------------*/
26042 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026043 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026044 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026045 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026046 wdiEventData.pUserData = pUserData;
26047
26048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26049}/*WDI_SetRssiFilterReq*/
26050
26051/**
26052 @brief WDI_UpdateScanParamsReq
26053
Jeff Johnsone7245742012-09-05 17:12:55 -070026054 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026055 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026056
Jeff Johnson295189b2012-06-20 16:38:30 -070026057 wdiUpdateScanParamsCb: callback for passing back the response
26058 of the Set PNO operation received from the
26059 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026060
Jeff Johnson295189b2012-06-20 16:38:30 -070026061 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026062 callback
26063
Jeff Johnson295189b2012-06-20 16:38:30 -070026064 @return Result of the function call
26065*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026067WDI_UpdateScanParamsReq
26068(
26069 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
26070 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
26071 void* pUserData
26072)
26073{
26074 WDI_EventInfoType wdiEventData = {{0}};
26075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26076
26077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026079 ------------------------------------------------------------------------*/
26080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26081 {
26082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26083 "WDI API call before module is initialized - Fail request");
26084
Jeff Johnsone7245742012-09-05 17:12:55 -070026085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026086 }
26087
26088 /*------------------------------------------------------------------------
26089 Fill in Event data and post to the Main FSM
26090 ------------------------------------------------------------------------*/
26091 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026092 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026093 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026094 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026095 wdiEventData.pUserData = pUserData;
26096
26097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26098}
26099
26100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026101 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026102 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026103
26104 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026105 pwdiPNOScanReqParams: pointer to the info received
26106 from upper layers
26107 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026108 and its size
26109
Jeff Johnson295189b2012-06-20 16:38:30 -070026110 @return Result of the function call
26111*/
26112
26113WDI_Status
26114WDI_PackPreferredNetworkList
26115(
26116 WDI_ControlBlockType* pWDICtx,
26117 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26118 wpt_uint8** ppSendBuffer,
26119 wpt_uint16* pSize
26120)
26121{
Jeff Johnsone7245742012-09-05 17:12:55 -070026122 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026123 wpt_uint16 usDataOffset = 0;
26124 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026125 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026126 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026127 /*-----------------------------------------------------------------------
26128 Get message buffer
26129 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026130 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026131 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026132 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026133 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026134 {
26135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026136 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026137 pwdiPNOScanReqParams);
26138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026140 }
26141
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026142 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
26143
Jeff Johnson295189b2012-06-20 16:38:30 -070026144 /*-------------------------------------------------------------------------
26145 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26146 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026147 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026148 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026149 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026150 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26151
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026152 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026153 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026155 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026156 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26157
26158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026159 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026160 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26161 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26162 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26163
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026164 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026165 {
26166 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026167 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026168 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26169
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026170 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026171 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026172 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026173
26174 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026175 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026176 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026177
26178 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026179 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026180 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026181
Jeff Johnsone7245742012-09-05 17:12:55 -070026182 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026183 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026184 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070026185 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
26186 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26187 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
26188 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026189
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026190 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026191 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026192 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026193
26194 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026195 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026196 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26197
26198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026199 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026200 pPrefNetwListParams->aNetworks[i].ssId.length,
26201 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026202 }
26203
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026204 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026205 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026206 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26207 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26208 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26209
26210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026211 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026212 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026213 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26214 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26215
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026216 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026217 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026218 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026219 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026220 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026221 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26222 }
26223
26224 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026225 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026226 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26227 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26228 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026229 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026230
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026231 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026232 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026233 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026234
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026235 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026236 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26237 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26238 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026239 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026240
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026241 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026242 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026243 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026244
26245 /*Set the output values*/
26246 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026247 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026248
26249 return WDI_STATUS_SUCCESS;
26250}/*WDI_PackPreferredNetworkList*/
26251
26252/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026253 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026254 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026255
26256 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026257 pwdiPNOScanReqParams: pointer to the info received
26258 from upper layers
26259 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026260 and its size
26261
Jeff Johnson295189b2012-06-20 16:38:30 -070026262 @return Result of the function call
26263*/
26264
26265WDI_Status
26266WDI_PackPreferredNetworkListNew
26267(
26268 WDI_ControlBlockType* pWDICtx,
26269 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26270 wpt_uint8** ppSendBuffer,
26271 wpt_uint16* pSize
26272)
26273{
Jeff Johnsone7245742012-09-05 17:12:55 -070026274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026275 wpt_uint16 usDataOffset = 0;
26276 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026277 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026278 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026279
26280 /*-----------------------------------------------------------------------
26281 Get message buffer
26282 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026283 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026284 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026285 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026286 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026287 {
26288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026289 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 pwdiPNOScanReqParams);
26291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026293 }
26294
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026295 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26296
Jeff Johnson295189b2012-06-20 16:38:30 -070026297 /*-------------------------------------------------------------------------
26298 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26299 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026300 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026301 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026302 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026303 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26304
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026305 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026306 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026307 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026308 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026309 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26310
26311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026312 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026313 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26314 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26315 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26316
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026317 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026318 {
26319 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026320 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026321 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26322
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026323 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026324 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026325 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026326
26327 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026328 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026329 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026330
26331 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026332 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026333 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026334
26335 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026336 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026337 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026338
Jeff Johnsone7245742012-09-05 17:12:55 -070026339 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026340 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026341 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026342 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26343
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026344 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026345 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026346 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026347
26348 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026349 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026350 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26351
26352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026353 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026354 pPrefNetwListParams->aNetworks[i].ssId.length,
26355 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026356 }
26357
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026358 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026359 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026360 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26361 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26362 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26363
26364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026365 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026366 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026367 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26368 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26369
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026370 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026371 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026372 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026373 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026374 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026375 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26376 }
26377
26378 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026379 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026380 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26381 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26382 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026383 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026384
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026385 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026386 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026387 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026388
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026389 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026390 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26391 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26392 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026393 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026394
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026395 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026396 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026397 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026398
Jeff Johnson295189b2012-06-20 16:38:30 -070026399
26400 /*Set the output values*/
26401 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026402 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026403
26404 return WDI_STATUS_SUCCESS;
26405}/*WDI_PackPreferredNetworkListNew*/
26406
26407/**
26408 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026409
26410 @param pWDICtx: pointer to the WLAN DAL context
26411 pEventData: pointer to the event information structure
26412
Jeff Johnson295189b2012-06-20 16:38:30 -070026413 @return Result of the function call
26414*/
26415WDI_Status
26416WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026417(
Jeff Johnson295189b2012-06-20 16:38:30 -070026418 WDI_ControlBlockType* pWDICtx,
26419 WDI_EventInfoType* pEventData
26420)
26421{
26422 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26423 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026424 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026425 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026426 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026427
26428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026430 -------------------------------------------------------------------------*/
26431 if (( NULL == pEventData ) ||
26432 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26433 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26434 {
26435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026439 }
26440
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026441 /*----------------------------------------------------------------------
26442 Avoid Enable PNO during any active session or an ongoing session
26443 ----------------------------------------------------------------------*/
26444 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26445 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26446 {
26447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26448 "%s:(Active/Ongoing Session) - Fail request", __func__);
26449
26450 return WDI_STATUS_E_FAILURE;
26451 }
26452
Jeff Johnson295189b2012-06-20 16:38:30 -070026453 /*-------------------------------------------------------------------------
26454 Pack the PNO request structure based on version
26455 -------------------------------------------------------------------------*/
26456 if ( pWDICtx->wdiPNOVersion > 0 )
26457 {
26458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026459 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026460 pWDICtx->wdiPNOVersion);
26461
26462 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26463 &pSendBuffer, &usSendSize);
26464 }
26465 else
26466 {
26467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026468 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026469 pWDICtx->wdiPNOVersion);
26470
26471 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26472 &pSendBuffer, &usSendSize);
26473 }
26474
26475 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26476 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26477 {
26478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026479 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026481 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026482 }
26483
26484 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026485 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026486
26487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026488 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26491 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026492}
26493
26494/**
26495 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026496
26497 @param pWDICtx: pointer to the WLAN DAL context
26498 pEventData: pointer to the event information structure
26499
Jeff Johnson295189b2012-06-20 16:38:30 -070026500 @see
26501 @return Result of the function call
26502*/
26503WDI_Status
26504WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026505(
Jeff Johnson295189b2012-06-20 16:38:30 -070026506 WDI_ControlBlockType* pWDICtx,
26507 WDI_EventInfoType* pEventData
26508)
26509{
26510 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26511 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026513 wpt_uint16 usDataOffset = 0;
26514 wpt_uint16 usSendSize = 0;
26515 wpt_uint8 ucRssiThreshold;
26516
26517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026519 -------------------------------------------------------------------------*/
26520 if (( NULL == pEventData ) ||
26521 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26522 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26523 {
26524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026528 }
26529
26530 /*-----------------------------------------------------------------------
26531 Get message buffer
26532 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026534 sizeof(ucRssiThreshold),
26535 &pSendBuffer, &usDataOffset, &usSendSize))||
26536 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26537 {
26538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026539 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026540 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026543 }
26544
26545 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26546
Jeff Johnsone7245742012-09-05 17:12:55 -070026547 wpalMemoryCopy( pSendBuffer+usDataOffset,
26548 &ucRssiThreshold,
26549 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026550
26551 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026552 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026553
26554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026555 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26558 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026559}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026560#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26561/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026562 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026563
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026564 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026565 by the Device Interface
26566
26567 wdiRoamOffloadScancb: callback for passing back the response
26568 of the Roam Candidate Lookup Req operation received from the
26569 device
26570
26571 pUserData: user data will be passed back with the
26572 callback
26573 @return Result of the function call
26574*/
26575WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026576WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026577(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026578 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026579 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26580 void* pUserData
26581)
26582{
26583 WDI_EventInfoType wdiEventData = {{0}};
26584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26585
26586 /*------------------------------------------------------------------------
26587 Sanity Check
26588 ------------------------------------------------------------------------*/
26589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26590 {
26591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26592 "WDI API call before module is initialized - Fail request");
26593
26594 return WDI_STATUS_E_NOT_ALLOWED;
26595 }
26596
26597 /*------------------------------------------------------------------------
26598 Fill in Event data and post to the Main FSM
26599 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026600 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26601 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26602 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026603 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26604 wdiEventData.pUserData = pUserData;
26605
26606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26607}
26608
26609void
26610WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26611{
26612 switch (wdiEdType)
26613 {
26614 case WDI_ED_NONE:
26615 *EdType = eED_NONE;
26616 break;
26617 case WDI_ED_WEP40:
26618 case WDI_ED_WEP104:
26619 *EdType = eED_WEP;
26620 break;
26621 case WDI_ED_TKIP:
26622 *EdType = eED_TKIP;
26623 break;
26624 case WDI_ED_CCMP:
26625#ifdef WLAN_FEATURE_11W
26626 case WDI_ED_AES_128_CMAC:
26627#endif
26628 *EdType = eED_CCMP;
26629 break;
26630#ifdef FEATURE_WLAN_WAPI
26631 case WDI_ED_WPI:
26632 *EdType = eED_WPI;
26633 break;
26634#endif
26635 case WDI_ED_ANY:
26636 *EdType = eED_ANY;
26637 break;
26638
26639 default:
26640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26641 "%s: Unknown Encryption Type", __func__);
26642 break;
26643 }
26644}
26645
26646/**
26647 @brief Helper function to pack Start Roam Candidate Lookup
26648 Request parameters
26649
26650 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026651 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026652 from upper layers
26653 ppSendBuffer, pSize - out pointers of the packed buffer
26654 and its size
26655
26656 @return Result of the function call
26657*/
26658
26659WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026660WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026661(
26662 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026663 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026664 wpt_uint8** ppSendBuffer,
26665 wpt_uint16* pSize
26666)
26667{
26668 wpt_uint8* pSendBuffer = NULL;
26669 wpt_uint16 usDataOffset = 0;
26670 wpt_uint16 usSendSize = 0;
26671 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26672 wpt_uint8 i;
26673 /*-----------------------------------------------------------------------
26674 Get message buffer
26675 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026676 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026677 sizeof(tRoamCandidateListParams),
26678 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026679 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026680 {
26681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026682 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026683 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026684 WDI_ASSERT(0);
26685 return WDI_STATUS_E_FAILURE;
26686 }
26687 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026688 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026689 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026690 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026691 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026692 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026693 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026694 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026695 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026696 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026697 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026698
26699 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026700 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026701 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026702 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026703 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26704 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026705 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26706 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26707 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26708 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26709 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026710 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026711 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026712 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026713 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26714 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26715 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26716 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26717 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26718 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26719 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026720 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026721 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026722 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26723 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26724 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026725
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26727 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26728 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26729 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26730 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26731 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026732 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026733 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26734 pRoamCandidateListParams->RoamScanOffloadEnabled,
26735 pRoamCandidateListParams->Command,
26736 pRoamCandidateListParams->StartScanReason,
26737 pRoamCandidateListParams->NeighborScanTimerPeriod,
26738 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26739 pRoamCandidateListParams->NeighborScanChannelMinTime,
26740 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26741 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26742 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26743 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26744 pRoamCandidateListParams->ConnectedNetwork.authentication,
26745 pRoamCandidateListParams->ConnectedNetwork.encryption,
26746 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26747 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26748 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026749 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026750 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026751 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026752 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026753 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26754 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026755 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026756 pRoamCandidateListParams->us24GProbeSize);
26757 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026758 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026759 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026760 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026761 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26762 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026763 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026764 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026765 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26766 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26767 pRoamCandidateListParams->nProbes =
26768 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26769 pRoamCandidateListParams->HomeAwayTime =
26770 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026772 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26773 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026775 }
26776
26777
26778 /*Set the output values*/
26779 *ppSendBuffer = pSendBuffer;
26780 *pSize = usSendSize;
26781 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026782}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026783
26784/**
26785 @brief Process Start Roam Candidate Lookup Request function
26786
26787 @param pWDICtx: pointer to the WLAN DAL context
26788 pEventData: pointer to the event information structure
26789
26790 @return Result of the function call
26791*/
26792WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026793WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026794(
26795 WDI_ControlBlockType* pWDICtx,
26796 WDI_EventInfoType* pEventData
26797)
26798{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026799 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026800 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26801 wpt_uint8* pSendBuffer = NULL;
26802 wpt_uint16 usSendSize = 0;
26803 WDI_Status wdiStatus;
26804 /*-------------------------------------------------------------------------
26805 Sanity check
26806 -------------------------------------------------------------------------*/
26807 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026808 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026809 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26810 {
26811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26812 "%s: Invalid parameters", __func__);
26813 WDI_ASSERT(0);
26814 return WDI_STATUS_E_FAILURE;
26815 }
26816
26817 /*-------------------------------------------------------------------------
26818 Pack the Start Roam Candidate Lookup request structure based on version
26819 -------------------------------------------------------------------------*/
26820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26821 "%s: Packing Roam Candidate Lookup request ", __func__);
26822
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026823 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026824 &pSendBuffer, &usSendSize);
26825
26826 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26827 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26828 {
26829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26830 "%s: failed to pack request parameters", __func__);
26831 WDI_ASSERT(0);
26832 return wdiStatus;
26833 }
26834
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026835 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26836 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026837
26838 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026839 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026840 -------------------------------------------------------------------------*/
26841 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026842 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026843}
26844
26845/**
26846 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26847 response is being received over the bus from HAL)
26848
26849 @param pWDICtx: pointer to the WLAN DAL context
26850 pEventData: pointer to the event information structure
26851
26852 @see
26853 @return Result of the function call
26854*/
26855WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026856WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026857(
26858 WDI_ControlBlockType* pWDICtx,
26859 WDI_EventInfoType* pEventData
26860)
26861{
26862 WDI_Status wdiStatus;
26863 eHalStatus halStatus;
26864 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26865
26866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26867
26868 /*-------------------------------------------------------------------------
26869 Sanity check
26870 -------------------------------------------------------------------------*/
26871 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26872 ( NULL == pEventData->pEventData ))
26873 {
26874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26875 "%s: Invalid parameters", __func__);
26876 WDI_ASSERT(0);
26877 return WDI_STATUS_E_FAILURE;
26878 }
26879
26880 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26881
26882 /*-------------------------------------------------------------------------
26883 Extract response and send it to UMAC
26884 -------------------------------------------------------------------------*/
26885 halStatus = *((eHalStatus*)pEventData->pEventData);
26886 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26887
26888 /*Notify UMAC*/
26889 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26890
26891 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026892}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026893#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026894
26895/**
26896 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026897
26898 @param pWDICtx: pointer to the WLAN DAL context
26899 pEventData: pointer to the event information structure
26900
Jeff Johnson295189b2012-06-20 16:38:30 -070026901 @see
26902 @return Result of the function call
26903*/
26904WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026905WDI_PackUpdateScanParamsReq
26906(
26907 WDI_ControlBlockType* pWDICtx,
26908 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26909 wpt_uint8** ppSendBuffer,
26910 wpt_uint16* pSize
26911)
26912{
26913 wpt_uint8* pSendBuffer = NULL;
26914 wpt_uint16 usDataOffset = 0;
26915 wpt_uint16 usSendSize = 0;
26916 tUpdateScanParams updateScanParams = {0};
26917
26918
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026920 "Begin WDI Update Scan Parameters Old Style Params");
26921 /*-----------------------------------------------------------------------
26922 Get message buffer
26923 -----------------------------------------------------------------------*/
26924 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26925 sizeof(updateScanParams),
26926 &pSendBuffer, &usDataOffset, &usSendSize))||
26927 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26928 {
26929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026930 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026931 pwdiUpdateScanParams);
26932 WDI_ASSERT(0);
26933 return WDI_STATUS_E_FAILURE;
26934 }
26935
26936 //
26937 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26938 //
26939
26940 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26941 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26942
26943 updateScanParams.ucChannelCount =
26944 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26945 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26946 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26947 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26948
26949 wpalMemoryCopy( updateScanParams.aChannels,
26950 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26951 updateScanParams.ucChannelCount);
26952
26953
26954 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26955 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26956 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26957 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26958 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26959
26960 wpalMemoryCopy( pSendBuffer+usDataOffset,
26961 &updateScanParams,
26962 sizeof(updateScanParams));
26963
26964 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26965 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26966
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026968 "End Update Scan Parameters Old Style");
26969
26970 /*Set the output values*/
26971 *ppSendBuffer = pSendBuffer;
26972 *pSize = usSendSize;
26973
26974 return WDI_STATUS_SUCCESS;
26975}
26976
26977/**
26978 @brief Process Update Scan Params function
26979
26980 @param pWDICtx: pointer to the WLAN DAL context
26981 pEventData: pointer to the event information structure
26982
26983 @see
26984 @return Result of the function call
26985*/
26986WDI_Status
26987WDI_PackUpdateScanParamsReqEx
26988(
26989 WDI_ControlBlockType* pWDICtx,
26990 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26991 wpt_uint8** ppSendBuffer,
26992 wpt_uint16* pSize
26993)
26994{
26995 wpt_uint8* pSendBuffer = NULL;
26996 wpt_uint16 usDataOffset = 0;
26997 wpt_uint16 usSendSize = 0;
26998 tUpdateScanParamsEx updateScanParams = {0};
26999
27000
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027001 /*-----------------------------------------------------------------------
27002 Get message buffer
27003 -----------------------------------------------------------------------*/
27004 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27005 sizeof(updateScanParams),
27006 &pSendBuffer, &usDataOffset, &usSendSize))||
27007 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27008 {
27009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027010 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027011 pwdiUpdateScanParams);
27012 WDI_ASSERT(0);
27013 return WDI_STATUS_E_FAILURE;
27014 }
27015
27016 //
27017 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27018 //
27019
27020 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27021 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27022
27023 updateScanParams.ucChannelCount =
27024 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27025 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
27026 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27027 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
27028
27029 wpalMemoryCopy( updateScanParams.aChannels,
27030 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27031 updateScanParams.ucChannelCount);
27032
27033
27034 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27035 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27036 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27037 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27038 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27039
27040 wpalMemoryCopy( pSendBuffer+usDataOffset,
27041 &updateScanParams,
27042 sizeof(updateScanParams));
27043
27044 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27045 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27046
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027047 /*Set the output values*/
27048 *ppSendBuffer = pSendBuffer;
27049 *pSize = usSendSize;
27050
27051 return WDI_STATUS_SUCCESS;
27052}
27053
27054/**
27055 @brief Process Update Scan Params function
27056
27057 @param pWDICtx: pointer to the WLAN DAL context
27058 pEventData: pointer to the event information structure
27059
27060 @see
27061 @return Result of the function call
27062*/
27063WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027064WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027065(
Jeff Johnson295189b2012-06-20 16:38:30 -070027066 WDI_ControlBlockType* pWDICtx,
27067 WDI_EventInfoType* pEventData
27068)
27069{
27070 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
27071 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027072 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027073 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027074 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027075
27076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027078 -------------------------------------------------------------------------*/
27079 if (( NULL == pEventData ) ||
27080 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
27081 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
27082 {
27083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027087 }
27088
27089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27090 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070027091
27092 //
27093 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27094 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027095 if ( pWDICtx->wlanVersion.revision < 1 )
27096 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027097 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027098 &pSendBuffer, &usSendSize);
27099 }
27100 else
27101 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027102 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
27103 &pSendBuffer, &usSendSize);
27104 }
27105
27106 if(WDI_STATUS_SUCCESS != wdiStatus)
27107 {
27108 //memory allocation failed
27109 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027110 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027111
Jeff Johnson295189b2012-06-20 16:38:30 -070027112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027113 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027114 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027115 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027116 wdiUpdateScanParamsCb, pEventData->pUserData,
27117 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027118}
27119
27120/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027121 @brief Process Update Channel Params function
27122
27123 @param pWDICtx: pointer to the WLAN DAL context
27124 pEventData: pointer to the event information structure
27125
27126 @see
27127 @return Result of the function call
27128*/
27129WDI_Status
27130WDI_ProcessUpdateChannelParamsReq
27131(
27132 WDI_ControlBlockType* pWDICtx,
27133 WDI_EventInfoType* pEventData
27134)
27135{
27136 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
27137 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
27138 wpt_uint8* pSendBuffer = NULL;
27139 wpt_uint16 usDataOffset = 0;
27140 wpt_uint16 usSendSize = 0;
27141 tUpdateChannelReqType *updateChannelParams;
27142 wpt_uint32 usUpdateChanParamSize;
27143 wpt_uint8 num_channels = 0;
27144
27145 /*-------------------------------------------------------------------------
27146 Sanity check
27147 -------------------------------------------------------------------------*/
27148 if (( NULL == pEventData ) ||
27149 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
27150 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
27151 {
27152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27153 "%s: Invalid parameters", __func__);
27154 WDI_ASSERT(0);
27155 return WDI_STATUS_E_FAILURE;
27156 }
27157 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053027158 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027159
27160 /*-----------------------------------------------------------------------
27161 Get message buffer
27162 -----------------------------------------------------------------------*/
27163 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27164 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
27165 &pSendBuffer, &usDataOffset, &usSendSize))||
27166 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
27167 {
27168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27169 "Unable to get send buffer in Update Channel Params req %p",
27170 pwdiUpdateChanListParams);
27171 WDI_ASSERT(0);
27172 return WDI_STATUS_E_FAILURE;
27173 }
27174 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
27175
27176 updateChannelParams->numChan = num_channels;
27177 wpalMemoryCopy(&updateChannelParams->chanParam,
27178 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
27179 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
27180
27181 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
27182 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
27183
27184 /*-------------------------------------------------------------------------
27185 Send Update channel request to fw
27186 -------------------------------------------------------------------------*/
27187 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27188 wdiUpdateChanParamsCb, pEventData->pUserData,
27189 WDI_UPDATE_CHAN_RESP);
27190}
27191
27192/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027193 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070027194
27195 @param pWDICtx: pointer to the WLAN DAL context
27196 pEventData: pointer to the event information structure
27197
Jeff Johnson295189b2012-06-20 16:38:30 -070027198 @see
27199 @return Result of the function call
27200*/
27201WDI_Status
27202WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070027203(
Jeff Johnson295189b2012-06-20 16:38:30 -070027204 WDI_ControlBlockType* pWDICtx,
27205 WDI_EventInfoType* pEventData
27206)
27207{
Srikant Kuppa066904f2013-05-07 13:56:02 -070027208 WDI_LowLevelIndType wdiInd;
27209 tpPrefNetwFoundParams pNetwFoundParams;
27210 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027211
27212
27213 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027214 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027215 -------------------------------------------------------------------------*/
27216 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27217 ( NULL == pEventData->pEventData ))
27218 {
27219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027220 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027221 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070027222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027223 }
27224
27225 /*-------------------------------------------------------------------------
27226 Extract indication and send it to UMAC
27227 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070027228 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
27229
27230 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
27231 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
27232 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
27233
27234 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
27235 {
27236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27237 "%s: fail to allocate memory", __func__);
27238 return WDI_STATUS_MEM_FAILURE;
27239 }
27240
27241 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27242 (pNetwFoundParams->ssId.length < 32 )?
27243 pNetwFoundParams->ssId.length : 32;
27244 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27245 pNetwFoundParams->ssId.ssId,
27246 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27247 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27248 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27249 pNetwFoundParams->frameLength;
27250 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27251 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27252 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027253
27254 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027255 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027256
Jeff Johnson295189b2012-06-20 16:38:30 -070027257 // DEBUG
27258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027259 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027260 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027261 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027262 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027263 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027264 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27265
ltimariub77f24b2013-01-24 18:54:33 -080027266 if ( pWDICtx->wdiLowLevelIndCB )
27267 {
27268 /*Notify UMAC*/
27269 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27270 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027271
27272 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027273}
27274
27275/**
27276 @brief Process PNO Rsp function (called when a
27277 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027278
27279 @param pWDICtx: pointer to the WLAN DAL context
27280 pEventData: pointer to the event information structure
27281
Jeff Johnson295189b2012-06-20 16:38:30 -070027282 @see
27283 @return Result of the function call
27284*/
27285WDI_Status
27286WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027287(
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 WDI_ControlBlockType* pWDICtx,
27289 WDI_EventInfoType* pEventData
27290)
27291{
27292 WDI_Status wdiStatus;
27293 eHalStatus halStatus;
27294 WDI_PNOScanCb wdiPNOScanCb = NULL;
27295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27296
27297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027299 -------------------------------------------------------------------------*/
27300 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27301 ( NULL == pEventData->pEventData ))
27302 {
27303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027307 }
27308
27309
Jeff Johnsone7245742012-09-05 17:12:55 -070027310 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027311
27312 /*-------------------------------------------------------------------------
27313 Extract response and send it to UMAC
27314 -------------------------------------------------------------------------*/
27315 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027316 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027317
27318 /*Notify UMAC*/
27319 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27320
Jeff Johnsone7245742012-09-05 17:12:55 -070027321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027322}/*WDI_ProcessSetPreferredNetworkRsp*/
27323
27324/**
27325 @brief Process RSSI Filter Rsp function (called when a
27326 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027327
27328 @param pWDICtx: pointer to the WLAN DAL context
27329 pEventData: pointer to the event information structure
27330
Jeff Johnson295189b2012-06-20 16:38:30 -070027331 @see
27332 @return Result of the function call
27333*/
27334WDI_Status
27335WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027336(
Jeff Johnson295189b2012-06-20 16:38:30 -070027337 WDI_ControlBlockType* pWDICtx,
27338 WDI_EventInfoType* pEventData
27339)
27340{
27341 WDI_Status wdiStatus;
27342 eHalStatus halStatus;
27343 WDI_RssiFilterCb wdiRssiFilterCb;
27344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27345
27346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027348 -------------------------------------------------------------------------*/
27349 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27350 ( NULL == pEventData->pEventData ))
27351 {
27352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027356 }
27357
Jeff Johnsone7245742012-09-05 17:12:55 -070027358 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027359
27360 /*-------------------------------------------------------------------------
27361 Extract response and send it to UMAC
27362 -------------------------------------------------------------------------*/
27363 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027364 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027365
27366 /*Notify UMAC*/
27367 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27368
Jeff Johnsone7245742012-09-05 17:12:55 -070027369 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027370}/*WDI_ProcessSetRssiFilterRsp*/
27371
27372/**
27373 @brief Process Update Scan Params Rsp function (called when a
27374 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027375
27376 @param pWDICtx: pointer to the WLAN DAL context
27377 pEventData: pointer to the event information structure
27378
Jeff Johnson295189b2012-06-20 16:38:30 -070027379 @see
27380 @return Result of the function call
27381*/
27382WDI_Status
27383WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027384(
Jeff Johnson295189b2012-06-20 16:38:30 -070027385 WDI_ControlBlockType* pWDICtx,
27386 WDI_EventInfoType* pEventData
27387)
27388{
27389 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027390 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027391 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027392 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27394
27395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027397 -------------------------------------------------------------------------*/
27398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27399 ( NULL == pEventData->pEventData ))
27400 {
27401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027405 }
27406
27407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027408 "%s: Process UPD scan params ptr : %p",
27409 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027410
Jeff Johnsone7245742012-09-05 17:12:55 -070027411 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027412
27413 /*-------------------------------------------------------------------------
27414 Extract response and send it to UMAC
27415 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027416 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27417 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027418 sizeof(halUpdScanParams.status));
27419
27420 uStatus = halUpdScanParams.status;
27421
27422 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027423 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027424
27425 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027426 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027427
Jeff Johnsone7245742012-09-05 17:12:55 -070027428 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027429
27430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027431 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027432 halUpdScanParams.status);
27433
27434 /*Notify UMAC*/
27435 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27436
Jeff Johnsone7245742012-09-05 17:12:55 -070027437 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027438}
27439#endif // FEATURE_WLAN_SCAN_PNO
27440
27441#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027442WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027443WDI_8023MulticastListReq
27444(
27445 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27446 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27447 void* pUserData
27448)
27449{
27450 WDI_EventInfoType wdiEventData;
27451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27452
27453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027454 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027455
27456 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027457 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027458 ------------------------------------------------------------------------*/
27459 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27460 {
27461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27462 "WDI API call before module is initialized - Fail request");
27463
Jeff Johnsone7245742012-09-05 17:12:55 -070027464 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027465 }
27466
27467 /*------------------------------------------------------------------------
27468 Fill in Event data and post to the Main FSM
27469 ------------------------------------------------------------------------*/
27470 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027471 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027472 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027473 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027474 wdiEventData.pUserData = pUserData;
27475
27476 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27477}
27478
Jeff Johnsone7245742012-09-05 17:12:55 -070027479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027480WDI_ReceiveFilterSetFilterReq
27481(
27482 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27483 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27484 void* pUserData
27485)
27486{
27487 WDI_EventInfoType wdiEventData;
27488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27489
27490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027491 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027492
27493 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027494 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027495 ------------------------------------------------------------------------*/
27496 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27497 {
27498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27499 "WDI API call before module is initialized - Fail request");
27500
Jeff Johnsone7245742012-09-05 17:12:55 -070027501 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027502 }
27503
27504 /*------------------------------------------------------------------------
27505 Fill in Event data and post to the Main FSM
27506 ------------------------------------------------------------------------*/
27507 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027508 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27509 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027510 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27511 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027512 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027513 wdiEventData.pUserData = pUserData;
27514
27515
27516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27517}
27518
Jeff Johnsone7245742012-09-05 17:12:55 -070027519WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027520WDI_FilterMatchCountReq
27521(
27522 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27523 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27524 void* pUserData
27525)
27526{
27527 WDI_EventInfoType wdiEventData;
27528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27529
27530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027531 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027532
27533 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027534 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027535 ------------------------------------------------------------------------*/
27536 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27537 {
27538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27539 "WDI API call before module is initialized - Fail request");
27540
Jeff Johnsone7245742012-09-05 17:12:55 -070027541 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027542 }
27543
27544 /*------------------------------------------------------------------------
27545 Fill in Event data and post to the Main FSM
27546 ------------------------------------------------------------------------*/
27547 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027548 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027549 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027550 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027551 wdiEventData.pUserData = pUserData;
27552
27553
27554 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27555}
27556
Jeff Johnsone7245742012-09-05 17:12:55 -070027557WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027558WDI_ReceiveFilterClearFilterReq
27559(
27560 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27561 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27562 void* pUserData
27563)
27564{
27565 WDI_EventInfoType wdiEventData;
27566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27567
27568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027569 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027570
27571 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027572 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027573 ------------------------------------------------------------------------*/
27574 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27575 {
27576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27577 "WDI API call before module is initialized - Fail request");
27578
Jeff Johnsone7245742012-09-05 17:12:55 -070027579 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027580 }
27581
27582 /*------------------------------------------------------------------------
27583 Fill in Event data and post to the Main FSM
27584 ------------------------------------------------------------------------*/
27585 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027586 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027587 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027588 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027589 wdiEventData.pUserData = pUserData;
27590
27591
27592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27593}
27594
27595/**
27596 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027597
27598 @param pWDICtx: pointer to the WLAN DAL context
27599 pEventData: pointer to the event information structure
27600
Jeff Johnson295189b2012-06-20 16:38:30 -070027601 @see
27602 @return Result of the function call
27603*/
27604WDI_Status
27605WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027606(
Jeff Johnson295189b2012-06-20 16:38:30 -070027607 WDI_ControlBlockType* pWDICtx,
27608 WDI_EventInfoType* pEventData
27609)
27610{
27611 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27612 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027613 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027614 wpt_uint16 usDataOffset = 0;
27615 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027616 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027617 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027618 wpt_uint8 ucCurrentBSSSesIdx = 0;
27619 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027620
27621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027622 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027623
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027624 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27625 if( NULL == pRcvFltMcAddrListType )
27626 {
27627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27628 "Failed to alloc in WDI_Process8023MulticastListReq");
27629 return WDI_STATUS_E_FAILURE;
27630 }
27631
Jeff Johnson295189b2012-06-20 16:38:30 -070027632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027634 -------------------------------------------------------------------------*/
27635 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027636 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027637 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027638 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027639 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27640 {
27641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027642 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027643 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027645 return WDI_STATUS_E_FAILURE;
27646 }
27647
27648 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27649 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27650 &pBSSSes);
27651 if ( NULL == pBSSSes )
27652 {
27653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027654 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027655 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027657 }
27658
27659 /*-----------------------------------------------------------------------
27660 Get message buffer
27661 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027662 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27663 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027664 sizeof(tHalRcvFltMcAddrListType),
27665 &pSendBuffer, &usDataOffset, &usSendSize))||
27666 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27667 {
27668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27669 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027670 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027671 pEventData, pwdiFltPktSetMcListReqParamsType,
27672 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027673 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027676 }
27677
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027678 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027679 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027680 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027681 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027682 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027683 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27684 sizeof(tSirMacAddr));
27685 }
27686
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027687 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027688 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027689 pRcvFltMcAddrListType,
27690 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027691
27692 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027693 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027694
27695
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027696 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027698 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027699 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027700 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027701 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027702 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027703}
27704
27705/**
27706 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027707
27708 @param pWDICtx: pointer to the WLAN DAL context
27709 pEventData: pointer to the event information structure
27710
Jeff Johnson295189b2012-06-20 16:38:30 -070027711 @see
27712 @return Result of the function call
27713*/
27714WDI_Status
27715WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027716(
Jeff Johnson295189b2012-06-20 16:38:30 -070027717 WDI_ControlBlockType* pWDICtx,
27718 WDI_EventInfoType* pEventData
27719)
27720{
27721 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27722 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027723 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027724 wpt_uint16 usDataOffset = 0;
27725 wpt_uint16 usSendSize = 0;
27726 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027727 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027728 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027729 wpt_uint8 ucCurrentBSSSesIdx = 0;
27730 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027731 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27732 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027733
27734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027735 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027736
27737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027739 -------------------------------------------------------------------------*/
27740 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027741 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027742 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027743 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027744 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27745 {
27746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027749 return WDI_STATUS_E_FAILURE;
27750 }
27751
27752 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27753 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27754 &pBSSSes);
27755 if ( NULL == pBSSSes )
27756 {
27757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027758 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027759 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027760 }
27761
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027762 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27763 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027764
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027765 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27766 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27767 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27768
27769 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27770 usSessRcvPktFilterCfgSize);
27771
27772 if(NULL == pSessRcvPktFilterCfg)
27773 {
27774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27775 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027776 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027777 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027778 WDI_ASSERT(0);
27779 return WDI_STATUS_E_FAILURE;
27780 }
27781
27782 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27783
27784 /*-----------------------------------------------------------------------
27785 Get message buffer
27786 -----------------------------------------------------------------------*/
27787
27788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27789 usSessRcvPktFilterCfgSize,
27790 &pSendBuffer, &usDataOffset, &usSendSize))||
27791 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27792 {
27793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27794 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027795 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027796 pEventData, pwdiSetRcvPktFilterReqInfo,
27797 wdiReceiveFilterSetFilterCb);
27798 WDI_ASSERT(0);
27799 wpalMemoryFree(pSessRcvPktFilterCfg);
27800 return WDI_STATUS_E_FAILURE;
27801 }
27802
27803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027804 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027805 usSendSize,pSessRcvPktFilterCfg);
27806
27807 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27808 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27809 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27810 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27811
27812 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27813
27814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27815 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27816 pSessRcvPktFilterCfg->filterType);
27817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27818 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27819 pSessRcvPktFilterCfg->coleasceTime);
27820
27821 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27822 {
27823 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27824 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27825 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27826 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27827 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27828 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27829 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27830 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27831
27832 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27833 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27834 8);
27835 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27836 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27837 8);
27838
27839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027840 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027841 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27842 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27843
27844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027845 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027846 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27847 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27848
27849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027850 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027851 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27852 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27853 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27854 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27855 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27856 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27857
27858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027859 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027860 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27861 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27862 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27863 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27864 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27865 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27866 }
27867
27868 wpalMemoryCopy( pSendBuffer+usDataOffset,
27869 pSessRcvPktFilterCfg,
27870 usSessRcvPktFilterCfgSize);
27871
27872
27873 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27874 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27875
27876 wpalMemoryFree(pSessRcvPktFilterCfg);
27877
27878 }
27879 /*If SLM_SESSIONIZATION is not supported then do this */
27880 else
27881 {
27882 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27883 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27884 * sizeof(tHalRcvPktFilterParams));
27885
27886 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027887 usRcvPktFilterCfgSize);
27888
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027889 if(NULL == pRcvPktFilterCfg)
27890 {
27891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27892 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027893 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027894 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027895 WDI_ASSERT(0);
27896 return WDI_STATUS_E_FAILURE;
27897 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027898
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027899 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027900
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027901 /*-----------------------------------------------------------------------
27902 Get message buffer
27903 -----------------------------------------------------------------------*/
27904 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027905 usRcvPktFilterCfgSize,
27906 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027907 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27908 {
27909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027910 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027911 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027912 pEventData, pwdiSetRcvPktFilterReqInfo,
27913 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027914 WDI_ASSERT(0);
27915 wpalMemoryFree(pRcvPktFilterCfg);
27916 return WDI_STATUS_E_FAILURE;
27917 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027918
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027920 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027921 usSendSize,usRcvPktFilterCfgSize);
27922
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027923 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27924 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27925 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27926 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027927
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027929 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027930 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027932 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027933 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027934
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027935 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27936 {
27937 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27938 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27939 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27940 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27941 pRcvPktFilterCfg->paramsData[i].dataOffset =
27942 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27943 pRcvPktFilterCfg->paramsData[i].dataLength =
27944 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027945
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027946 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027947 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27948 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027949 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027950 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27951 8);
27952
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027954 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027955 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027956 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27957
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027959 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027960 pRcvPktFilterCfg->paramsData[i].dataOffset,
27961 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027962
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027964 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027965 pRcvPktFilterCfg->paramsData[i].compareData[0],
27966 pRcvPktFilterCfg->paramsData[i].compareData[1],
27967 pRcvPktFilterCfg->paramsData[i].compareData[2],
27968 pRcvPktFilterCfg->paramsData[i].compareData[3],
27969 pRcvPktFilterCfg->paramsData[i].compareData[4],
27970 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027971
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027973 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027974 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27975 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27976 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27977 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27978 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27979 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27980 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027981
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027982 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027983 pRcvPktFilterCfg,
27984 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027985
27986
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027987 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27988 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027989
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027991 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027992 wpalMemoryFree(pRcvPktFilterCfg);
27993 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027995 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027996 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027997 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027998 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027999 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028000}
28001
28002/**
28003 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028004
28005 @param pWDICtx: pointer to the WLAN DAL context
28006 pEventData: pointer to the event information structure
28007
Jeff Johnson295189b2012-06-20 16:38:30 -070028008 @see
28009 @return Result of the function call
28010*/
28011WDI_Status
28012WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028013(
Jeff Johnson295189b2012-06-20 16:38:30 -070028014 WDI_ControlBlockType* pWDICtx,
28015 WDI_EventInfoType* pEventData
28016)
28017{
28018 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
28019 NULL;
28020 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
28021 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028022 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028023 wpt_uint16 usDataOffset = 0;
28024 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028025 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
28026 wpt_uint8 ucCurrentBSSSesIdx = 0;
28027 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028028
28029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028030 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028031
28032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028034 -------------------------------------------------------------------------*/
28035 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028036 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028037 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028038 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028039 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
28040 {
28041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028045 }
28046
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028047 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28048 pwdiRcvFltPktMatchCntReqParamsType->bssId,
28049 &pBSSSes);
28050 if ( NULL == pBSSSes )
28051 {
28052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028053 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028054 return WDI_STATUS_E_FAILURE;
28055 }
28056
Jeff Johnson295189b2012-06-20 16:38:30 -070028057 /*-----------------------------------------------------------------------
28058 Get message buffer
28059 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028060 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28061 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028062 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028063 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028064 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028065 {
28066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28067 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028068 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028069 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
28070 wdiFilterMatchCountCb);
28071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028073 }
28074
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028075 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
28076 wpalMemoryCopy( pSendBuffer+usDataOffset,
28077 &rcvFltPktMatchCntReqParam,
28078 sizeof(rcvFltPktMatchCntReqParam));
28079
Jeff Johnson295189b2012-06-20 16:38:30 -070028080 //
28081 // Don't need to fill send buffer other than header
28082 //
28083 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028084 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028085
28086
28087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028088 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028089 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028090 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28091 wdiFilterMatchCountCb,
28092 pEventData->pUserData,
28093 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028094}
28095
28096/**
28097 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028098
28099 @param pWDICtx: pointer to the WLAN DAL context
28100 pEventData: pointer to the event information structure
28101
Jeff Johnson295189b2012-06-20 16:38:30 -070028102 @see
28103 @return Result of the function call
28104*/
28105WDI_Status
28106WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028107(
Jeff Johnson295189b2012-06-20 16:38:30 -070028108 WDI_ControlBlockType* pWDICtx,
28109 WDI_EventInfoType* pEventData
28110)
Jeff Johnsone7245742012-09-05 17:12:55 -070028111{
Jeff Johnson295189b2012-06-20 16:38:30 -070028112 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
28113 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028114 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028115 wpt_uint16 usDataOffset = 0;
28116 wpt_uint16 usSendSize = 0;
28117 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028118 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070028119 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028120
28121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028122 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028123
28124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028126 -------------------------------------------------------------------------*/
28127 if (( NULL == pEventData ) ||
28128 ( NULL == (pwdiRcvFltPktClearReqParamsType =
28129 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028130 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028131 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
28132 {
28133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028136 return WDI_STATUS_E_FAILURE;
28137 }
28138
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028139 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028140 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
28141 &pBSSSes);
28142 if ( NULL == pBSSSes )
28143 {
28144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028145 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028147 }
28148
28149 /*-----------------------------------------------------------------------
28150 Get message buffer
28151 -----------------------------------------------------------------------*/
28152 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028153 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028154 sizeof(tHalRcvFltPktClearParam),
28155 &pSendBuffer, &usDataOffset, &usSendSize))||
28156 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
28157 {
28158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28159 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028160 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028161 pEventData, pwdiRcvFltPktClearReqParamsType,
28162 wdiRcvFltPktClearFilterCb);
28163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028165 }
28166
28167
28168 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028169 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070028170 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028171 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070028172
Jeff Johnsone7245742012-09-05 17:12:55 -070028173 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
28174 wpalMemoryCopy( pSendBuffer+usDataOffset,
28175 &rcvFltPktClearParam,
28176 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070028177
28178 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028179 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028180
28181
28182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028183 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028184 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028185 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028186 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028187 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028188}
28189
28190/**
28191 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028192
28193 @param pWDICtx: pointer to the WLAN DAL context
28194 pEventData: pointer to the event information structure
28195
Jeff Johnson295189b2012-06-20 16:38:30 -070028196 @see
28197 @return Result of the function call
28198*/
28199WDI_Status
28200WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028201(
Jeff Johnson295189b2012-06-20 16:38:30 -070028202 WDI_ControlBlockType* pWDICtx,
28203 WDI_EventInfoType* pEventData
28204)
28205{
Jeff Johnson295189b2012-06-20 16:38:30 -070028206 eHalStatus halStatus;
28207 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028208 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
28209 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28211
28212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028213 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028214
28215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028216 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028217 -------------------------------------------------------------------------*/
28218 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28219 ( NULL == pEventData->pEventData ))
28220 {
28221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028222 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028225 }
28226
Jeff Johnsone7245742012-09-05 17:12:55 -070028227 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028228
28229 /*-------------------------------------------------------------------------
28230 Extract response and send it to UMAC
28231 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028232 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28233 {
28234 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
28235 pEventData->pEventData,
28236 sizeof(halRcvFltPktSetMcListRsp));
28237
28238 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
28239 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
28240 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28241 halRcvFltPktSetMcListRsp.bssIdx;
28242 }
28243 else
28244 {
28245 halStatus = *((eHalStatus*)pEventData->pEventData);
28246 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28247 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028248
28249 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028250 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028251
Jeff Johnsone7245742012-09-05 17:12:55 -070028252 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028253}
28254
28255/**
28256 @brief Process Set Rsp function (called when a
28257 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028258
28259 @param pWDICtx: pointer to the WLAN DAL context
28260 pEventData: pointer to the event information structure
28261
Jeff Johnson295189b2012-06-20 16:38:30 -070028262 @see
28263 @return Result of the function call
28264*/
28265WDI_Status
28266WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028267(
Jeff Johnson295189b2012-06-20 16:38:30 -070028268 WDI_ControlBlockType* pWDICtx,
28269 WDI_EventInfoType* pEventData
28270)
28271{
Jeff Johnson295189b2012-06-20 16:38:30 -070028272 eHalStatus halStatus;
28273 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028274 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28275 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28277
28278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028279 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028280
28281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028283 -------------------------------------------------------------------------*/
28284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28285 ( NULL == pEventData->pEventData ))
28286 {
28287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028291 }
28292
28293 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028294 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028295
28296 /*-------------------------------------------------------------------------
28297 Extract response and send it to UMAC
28298 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028299 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28300 {
28301 wpalMemoryCopy( &halSetPktFilterRspParams,
28302 pEventData->pEventData,
28303 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028304
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028305 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28306 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28307 }
28308 else
28309 {
28310 halStatus = *((eHalStatus*)pEventData->pEventData);
28311 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28312 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028313 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028314 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028315
Jeff Johnsone7245742012-09-05 17:12:55 -070028316 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028317}
28318
28319/**
28320 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028321
28322 @param pWDICtx: pointer to the WLAN DAL context
28323 pEventData: pointer to the event information structure
28324
Jeff Johnson295189b2012-06-20 16:38:30 -070028325 @see
28326 @return Result of the function call
28327*/
28328WDI_Status
28329WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028330(
Jeff Johnson295189b2012-06-20 16:38:30 -070028331 WDI_ControlBlockType* pWDICtx,
28332 WDI_EventInfoType* pEventData
28333)
28334{
Jeff Johnson295189b2012-06-20 16:38:30 -070028335 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028336 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028337 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28338 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028339
28340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28341
28342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028343 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028344
28345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028347 -------------------------------------------------------------------------*/
28348 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28349 ( NULL == pEventData->pEventData ))
28350 {
28351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028355 }
28356
Jeff Johnsone7245742012-09-05 17:12:55 -070028357 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028358
28359 /*-------------------------------------------------------------------------
28360 Extract response and send it to UMAC
28361 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028362 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28363 {
28364 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28365 pEventData->pEventData,
28366 sizeof(halRcvFltrPktMatachRsp));
28367
28368 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28369 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28370 }
28371 else
28372 {
28373 halStatus = *((eHalStatus*)pEventData->pEventData);
28374 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28375 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028376
28377 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028378 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028379
Jeff Johnsone7245742012-09-05 17:12:55 -070028380 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028381}
28382
28383/**
28384 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028385
28386 @param pWDICtx: pointer to the WLAN DAL context
28387 pEventData: pointer to the event information structure
28388
Jeff Johnson295189b2012-06-20 16:38:30 -070028389 @see
28390 @return Result of the function call
28391*/
28392WDI_Status
28393WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028394(
Jeff Johnson295189b2012-06-20 16:38:30 -070028395 WDI_ControlBlockType* pWDICtx,
28396 WDI_EventInfoType* pEventData
28397)
28398{
Jeff Johnson295189b2012-06-20 16:38:30 -070028399 eHalStatus halStatus;
28400 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028401 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28402 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28404
28405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028406 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028407
28408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028410 -------------------------------------------------------------------------*/
28411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28412 ( NULL == pEventData->pEventData ))
28413 {
28414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028415 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028418 }
28419
28420 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028421 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028422
28423 /*-------------------------------------------------------------------------
28424 Extract response and send it to UMAC
28425 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028426 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28427 {
28428 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28429 pEventData->pEventData,
28430 sizeof(halRcvFltPktClearRspMsg));
28431
28432 wdiRcvFltPktClearRspParamsType.wdiStatus =
28433 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28434 wdiRcvFltPktClearRspParamsType.bssIdx =
28435 halRcvFltPktClearRspMsg.bssIdx;
28436 }
28437 else
28438 {
28439 halStatus = *((eHalStatus*)pEventData->pEventData);
28440 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28441 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028442
28443 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028444 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028445
Jeff Johnsone7245742012-09-05 17:12:55 -070028446 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028447}
28448#endif // WLAN_FEATURE_PACKET_FILTERING
28449
28450/**
28451 @brief Process Shutdown Rsp function
28452 There is no shutdown response comming from HAL
28453 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028454
Jeff Johnson295189b2012-06-20 16:38:30 -070028455 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028456 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028457
28458 @see
28459 @return Result of the function call
28460*/
28461WDI_Status
28462WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028463(
Jeff Johnson295189b2012-06-20 16:38:30 -070028464 WDI_ControlBlockType* pWDICtx,
28465 WDI_EventInfoType* pEventData
28466)
28467{
28468 /*There is no shutdown response comming from HAL - function just kept for
28469 simmetry */
28470 WDI_ASSERT(0);
28471 return WDI_STATUS_SUCCESS;
28472}/*WDI_ProcessShutdownRsp*/
28473
28474/**
28475 @brief WDI_SetPowerParamsReq
28476
Jeff Johnsone7245742012-09-05 17:12:55 -070028477 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028478 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028479
Jeff Johnson295189b2012-06-20 16:38:30 -070028480 wdiPowerParamsCb: callback for passing back the response
28481 of the Set Power Params operation received from the
28482 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028483
Jeff Johnson295189b2012-06-20 16:38:30 -070028484 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028485 callback
28486
Jeff Johnson295189b2012-06-20 16:38:30 -070028487 @return Result of the function call
28488*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028489WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028490WDI_SetPowerParamsReq
28491(
28492 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28493 WDI_SetPowerParamsCb wdiPowerParamsCb,
28494 void* pUserData
28495)
28496{
28497 WDI_EventInfoType wdiEventData;
28498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28499
28500 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028501 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028502 ------------------------------------------------------------------------*/
28503 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28504 {
28505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28506 "WDI API call before module is initialized - Fail request");
28507
Jeff Johnsone7245742012-09-05 17:12:55 -070028508 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028509 }
28510
28511 /*------------------------------------------------------------------------
28512 Fill in Event data and post to the Main FSM
28513 ------------------------------------------------------------------------*/
28514 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028515 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028516 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028517 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028518 wdiEventData.pUserData = pUserData;
28519
28520 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28521}/*WDI_SetPowerParamsReq*/
28522
28523/**
28524 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028525
28526 @param pWDICtx: pointer to the WLAN DAL context
28527 pEventData: pointer to the event information structure
28528
Jeff Johnson295189b2012-06-20 16:38:30 -070028529 @see
28530 @return Result of the function call
28531*/
28532WDI_Status
28533WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028534(
Jeff Johnson295189b2012-06-20 16:38:30 -070028535 WDI_ControlBlockType* pWDICtx,
28536 WDI_EventInfoType* pEventData
28537)
28538{
28539 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28540 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028541 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028542 wpt_uint16 usDataOffset = 0;
28543 wpt_uint16 usSendSize = 0;
28544 tSetPowerParamsType powerParams;
28545
28546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028547 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028548 -------------------------------------------------------------------------*/
28549 if (( NULL == pEventData ) ||
28550 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28551 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28552 {
28553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028557 }
28558
28559 /*-----------------------------------------------------------------------
28560 Get message buffer
28561 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028562 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028563 sizeof(powerParams),
28564 &pSendBuffer, &usDataOffset, &usSendSize))||
28565 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28566 {
28567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028568 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028569 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028572 }
28573
28574 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028575 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028576 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28577
28578 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028579 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028580 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28581
28582 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028583 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028584 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28585
28586 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028587 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028588 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28589
28590 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028591 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028592 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28593
28594 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028595 powerParams.uBETInterval =
28596 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028597
Yue Mac24062f2013-05-13 17:01:29 -070028598 /* MAX LI for modulated DTIM */
28599 powerParams.uMaxLIModulatedDTIM =
28600 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028601
28602 wpalMemoryCopy( pSendBuffer+usDataOffset,
28603 &powerParams,
28604 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028605
28606 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028607 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028608
28609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028610 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028611 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28613 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028614}
28615
28616/**
28617 @brief Process Power Params Rsp function (called when a
28618 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028619
28620 @param pWDICtx: pointer to the WLAN DAL context
28621 pEventData: pointer to the event information structure
28622
Jeff Johnson295189b2012-06-20 16:38:30 -070028623 @see
28624 @return Result of the function call
28625*/
28626WDI_Status
28627WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028628(
Jeff Johnson295189b2012-06-20 16:38:30 -070028629 WDI_ControlBlockType* pWDICtx,
28630 WDI_EventInfoType* pEventData
28631)
28632{
28633 WDI_Status wdiStatus;
28634 eHalStatus halStatus;
28635 WDI_SetPowerParamsCb wdiPowerParamsCb;
28636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28637
28638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028640 -------------------------------------------------------------------------*/
28641 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28642 ( NULL == pEventData->pEventData ))
28643 {
28644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028648 }
28649
Jeff Johnsone7245742012-09-05 17:12:55 -070028650 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028651
28652 /*-------------------------------------------------------------------------
28653 Extract response and send it to UMAC
28654 -------------------------------------------------------------------------*/
28655 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028656 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028657
28658 /*Notify UMAC*/
28659 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28660
Jeff Johnsone7245742012-09-05 17:12:55 -070028661 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028662}/*WDI_ProcessSetPowerParamsRsp*/
28663
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028664/**
28665 @brief WDI_dhcpStartInd
28666 Host will send an event to the FW when DHCP is initiated
28667
28668 @param
28669 WDI_DHCPInd: DHCP Indication
28670 @see
28671 @return Result of the function call
28672*/
28673WDI_Status
28674WDI_dhcpStartInd
28675(
28676 WDI_DHCPInd *wdiDHCPInd
28677)
28678{
28679 WDI_EventInfoType wdiEventData;
28680
28681 /*------------------------------------------------------------------------
28682 Sanity Check
28683 ------------------------------------------------------------------------*/
28684 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28685 {
28686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28687 "WDI API call before module is initialized - Fail request");
28688
28689 return WDI_STATUS_E_NOT_ALLOWED;
28690 }
28691
28692 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28693 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028694 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028695 wdiEventData.pCBfnc = NULL;
28696 wdiEventData.pUserData = NULL;
28697
28698 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28699}
28700
28701
28702/**
28703 @brief WDI_dhcpStopInd
28704 Host will send an event to the FW when DHCP is completed
28705
28706 @param
28707 WDI_DHCPInd: DHCP Indication
28708 @see
28709 @return Result of the function call
28710*/
28711WDI_Status
28712WDI_dhcpStopInd
28713(
28714 WDI_DHCPInd *wdiDHCPInd
28715)
28716{
28717 WDI_EventInfoType wdiEventData;
28718
28719 /*------------------------------------------------------------------------
28720 Sanity Check
28721 ------------------------------------------------------------------------*/
28722 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28723 {
28724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28725 "WDI API call before module is initialized - Fail request");
28726
28727 return WDI_STATUS_E_NOT_ALLOWED;
28728 }
28729
28730 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28731 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028732 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028733 wdiEventData.pCBfnc = NULL;
28734 wdiEventData.pUserData = NULL;
28735
28736 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28737}
28738
28739
28740/**
28741 @brief Process DHCP Start Indication message and post it to HAL
28742
28743 @param pWDICtx: pointer to the WLAN DAL context
28744 pEventData: pointer to the event information structure
28745
28746 @see
28747 @return Result of the function call
28748*/
28749WDI_Status
28750WDI_ProcessDHCPStartInd
28751(
28752 WDI_ControlBlockType* pWDICtx,
28753 WDI_EventInfoType* pEventData
28754)
28755{
28756 wpt_uint8* pSendBuffer = NULL;
28757 wpt_uint16 usDataOffset = 0;
28758 wpt_uint16 usSendSize = 0;
28759 wpt_uint16 usLen = 0;
28760 WDI_DHCPInd* pwdiDHCPInd = NULL;
28761 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028762 WDI_Status wdiStatus;
28763
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028764
28765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28766
28767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28768 "%s", __func__);
28769
28770 /*-------------------------------------------------------------------------
28771 Sanity check
28772 -------------------------------------------------------------------------*/
28773 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28774 {
28775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28776 "%s: Invalid parameters", __func__);
28777 WDI_ASSERT(0);
28778 return WDI_STATUS_E_FAILURE;
28779 }
28780 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28781 /*-----------------------------------------------------------------------
28782 Get message buffer
28783 -----------------------------------------------------------------------*/
28784
28785 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28786 WDI_DHCP_START_IND,
28787 sizeof(tDHCPInfo),
28788 &pSendBuffer, &usDataOffset, &usSendSize))||
28789 ( usSendSize < (usDataOffset + usLen )))
28790 {
28791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28792 "Unable to get send buffer in DHCP Start req %p ",
28793 pEventData);
28794 WDI_ASSERT(0);
28795 return WDI_STATUS_E_FAILURE;
28796 }
28797
Sandeep Puligillaee789512014-02-13 19:14:52 +053028798 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028799 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28800 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28801 WDI_MAC_ADDR_LEN);
28802
28803 pWDICtx->pReqStatusUserData = NULL;
28804 pWDICtx->pfncRspCB = NULL;
28805
28806 /*-------------------------------------------------------------------------
28807 Send DHCP Start Indication to HAL
28808 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028809 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28810 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028811}/*WDI_ProcessDHCPStartInd*/
28812
28813/**
28814 @brief Process DHCP Stop indication message and post it to HAL
28815
28816 @param pWDICtx: pointer to the WLAN DAL context
28817 pEventData: pointer to the event information structure
28818
28819 @see
28820 @return Result of the function call
28821*/
28822WDI_Status
28823WDI_ProcessDHCPStopInd
28824(
28825 WDI_ControlBlockType* pWDICtx,
28826 WDI_EventInfoType* pEventData
28827)
28828{
28829 wpt_uint8* pSendBuffer = NULL;
28830 wpt_uint16 usDataOffset = 0;
28831 wpt_uint16 usSendSize = 0;
28832 wpt_uint16 usLen = 0;
28833 WDI_DHCPInd* pwdiDHCPInd = NULL;
28834 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028835 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028836
28837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28838
28839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28840 "%s", __func__);
28841
28842 /*-------------------------------------------------------------------------
28843 Sanity check
28844 -------------------------------------------------------------------------*/
28845
28846 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28847 {
28848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28849 "%s: Invalid parameters", __func__);
28850 WDI_ASSERT(0);
28851 return WDI_STATUS_E_FAILURE;
28852 }
28853 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28854 /*-----------------------------------------------------------------------
28855 Get message buffer
28856 -----------------------------------------------------------------------*/
28857
28858 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28859 WDI_DHCP_STOP_IND,
28860 sizeof(tDHCPInfo),
28861 &pSendBuffer, &usDataOffset, &usSendSize))||
28862 ( usSendSize < (usDataOffset + usLen )))
28863 {
28864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28865 "Unable to get send buffer in DHCP Start req %p ",
28866 pEventData);
28867 WDI_ASSERT(0);
28868 return WDI_STATUS_E_FAILURE;
28869 }
28870
Sandeep Puligillaee789512014-02-13 19:14:52 +053028871 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028872 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28873 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28874 WDI_MAC_ADDR_LEN);
28875
28876 pWDICtx->pReqStatusUserData = NULL;
28877 pWDICtx->pfncRspCB = NULL;
28878 /*-------------------------------------------------------------------------
28879 Send DHCP Stop indication to HAL
28880 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028881 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28882 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028883
28884}/*WDI_ProcessDHCPStopInd*/
28885
28886
Jeff Johnson295189b2012-06-20 16:38:30 -070028887#ifdef WLAN_FEATURE_GTK_OFFLOAD
28888/**
28889 @brief WDI_GTKOffloadReq will be called when the upper MAC
28890 wants to set GTK Rekey Counter while in power save. Upon
28891 the call of this API the WLAN DAL will pack and send a
28892 HAL GTK offload request message to the lower RIVA
28893 sub-system if DAL is in state STARTED.
28894
28895 In state BUSY this request will be queued. Request won't
28896 be allowed in any other state.
28897
28898 WDI_PostAssocReq must have been called.
28899
28900 @param pwdiGtkOffloadParams: the GTK offload as specified
28901 by the Device Interface
28902
28903 wdiGtkOffloadCb: callback for passing back the response
28904 of the GTK offload operation received from the device
28905
28906 pUserData: user data will be passed back with the
28907 callback
28908
28909 @see WDI_PostAssocReq
28910 @return Result of the function call
28911*/
28912WDI_Status
28913WDI_GTKOffloadReq
28914(
28915 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28916 WDI_GtkOffloadCb wdiGtkOffloadCb,
28917 void* pUserData
28918)
28919{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028920 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28922
28923 /*------------------------------------------------------------------------
28924 Sanity Check
28925 ------------------------------------------------------------------------*/
28926 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28927 {
28928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28929 "WDI API call before module is initialized - Fail request");
28930
28931 return WDI_STATUS_E_NOT_ALLOWED;
28932 }
28933
28934 /*------------------------------------------------------------------------
28935 Fill in Event data and post to the Main FSM
28936 ------------------------------------------------------------------------*/
28937 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28938 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028939 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028940 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28941 wdiEventData.pUserData = pUserData;
28942
28943 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28944}
28945
28946
28947/**
28948 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28949 MAC wants to get GTK Rekey Counter while in power save.
28950 Upon the call of this API the WLAN DAL will pack and
28951 send a 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 pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28960 Information Message as specified by the
28961 Device Interface
28962
28963 wdiGtkOffloadGetInfoCb: callback for passing back the
28964 response of the GTK offload operation received from the
28965 device
28966
28967 pUserData: user data will be passed back with the
28968 callback
28969
28970 @see WDI_PostAssocReq
28971 @return Result of the function call
28972*/
28973WDI_Status
28974WDI_GTKOffloadGetInfoReq
28975(
28976 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28977 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28978 void* pUserData
28979)
28980{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028981 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28983
28984 /*------------------------------------------------------------------------
28985 Sanity Check
28986 ------------------------------------------------------------------------*/
28987 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28988 {
28989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28990 "WDI API call before module is initialized - Fail request");
28991
28992 return WDI_STATUS_E_NOT_ALLOWED;
28993 }
28994
28995 /*------------------------------------------------------------------------
28996 Fill in Event data and post to the Main FSM
28997 ------------------------------------------------------------------------*/
28998 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28999 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
29000 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
29001 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
29002 wdiEventData.pUserData = pUserData;
29003
29004 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29005}
29006
29007
29008/**
29009 @brief Process set GTK Offload Request function
29010
29011 @param pWDICtx: pointer to the WLAN DAL context
29012 pEventData: pointer to the event information structure
29013
29014 @see
29015 @return Result of the function call
29016*/
29017WDI_Status
29018WDI_ProcessGTKOffloadReq
29019(
29020 WDI_ControlBlockType* pWDICtx,
29021 WDI_EventInfoType* pEventData
29022)
29023{
29024 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
29025 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
29026 wpt_uint8* pSendBuffer = NULL;
29027 wpt_uint16 usDataOffset = 0;
29028 wpt_uint16 usSendSize = 0;
29029 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029030 wpt_uint8 ucCurrentSessionId = 0;
29031 WDI_BSSSessionType* pBSSSes = NULL;
29032
Jeff Johnson295189b2012-06-20 16:38:30 -070029033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29034
29035 /*-------------------------------------------------------------------------
29036 Sanity check
29037 -------------------------------------------------------------------------*/
29038 if (( NULL == pEventData ) ||
29039 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
29040 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
29041 {
29042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029044 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029045 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029046 }
29047
29048 /*-----------------------------------------------------------------------
29049 Get message buffer
29050 -----------------------------------------------------------------------*/
29051 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
29052 sizeof(gtkOffloadReqParams),
29053 &pSendBuffer, &usDataOffset, &usSendSize))||
29054 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
29055 {
29056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029057 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029058 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
29059 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029060 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029061 }
29062
29063 //
29064 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
29065 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029066 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29067 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
29068 &pBSSSes);
29069 if ( NULL == pBSSSes )
29070 {
29071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029072 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029073 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029074 }
29075
29076 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
29077
Jeff Johnson295189b2012-06-20 16:38:30 -070029078 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
29079 // Copy KCK
29080 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
29081 // Copy KEK
29082 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
29083 // Copy KeyReplayCounter
29084 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
29085
29086 wpalMemoryCopy( pSendBuffer+usDataOffset,
29087 &gtkOffloadReqParams,
29088 sizeof(gtkOffloadReqParams));
29089
29090 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
29091 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
29092
29093 /*-------------------------------------------------------------------------
29094 Send Get STA Request to HAL
29095 -------------------------------------------------------------------------*/
29096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29097 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029098
29099fail:
29100 // Release the message buffer so we don't leak
29101 wpalMemoryFree(pSendBuffer);
29102
29103failRequest:
29104 //WDA should have failure check to avoid the memory leak
29105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029106}
29107
29108
29109/**
29110 @brief Process GTK Offload Get Information Request function
29111
29112 @param pWDICtx: pointer to the WLAN DAL context
29113 pEventData: pointer to the event information structure
29114
29115 @see
29116 @return Result of the function call
29117*/
29118WDI_Status
29119WDI_ProcessGTKOffloadGetInfoReq
29120(
29121 WDI_ControlBlockType* pWDICtx,
29122 WDI_EventInfoType* pEventData
29123)
29124{
29125 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
29126 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
29127 wpt_uint8* pSendBuffer = NULL;
29128 wpt_uint16 usDataOffset = 0;
29129 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029130 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
29131 wpt_uint8 ucCurrentSessionId = 0;
29132 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029133
29134 /*-------------------------------------------------------------------------
29135 Sanity check
29136 -------------------------------------------------------------------------*/
29137 if (( NULL == pEventData ) ||
29138 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
29139 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
29140 {
29141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029143 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029144 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029145 }
29146
29147 /*-----------------------------------------------------------------------
29148 Get message buffer
29149 -----------------------------------------------------------------------*/
29150 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029151 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029152 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029153 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029154 {
29155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029156 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029157 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
29158 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029159 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029160 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029161 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29162 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
29163 &pBSSSes);
29164 if ( NULL == pBSSSes )
29165 {
29166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029167 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029168 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029169 }
29170 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070029171
29172 //
29173 // Don't need to fill send buffer other than header
29174 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029175 wpalMemoryCopy( pSendBuffer+usDataOffset,
29176 &halGtkOffloadGetInfoReqParams,
29177 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029178
29179 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
29180 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
29181
29182 /*-------------------------------------------------------------------------
29183 Send Get STA Request to HAL
29184 -------------------------------------------------------------------------*/
29185 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29186 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029187fail:
29188 // Release the message buffer so we don't leak
29189 wpalMemoryFree(pSendBuffer);
29190
29191failRequest:
29192 //WDA should have failure check to avoid the memory leak
29193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029194}
29195
29196/**
29197 @brief Process host offload Rsp function (called when a
29198 response is being received over the bus from HAL)
29199
29200 @param pWDICtx: pointer to the WLAN DAL context
29201 pEventData: pointer to the event information structure
29202
29203 @see
29204 @return Result of the function call
29205*/
29206WDI_Status
29207WDI_ProcessGtkOffloadRsp
29208(
29209 WDI_ControlBlockType* pWDICtx,
29210 WDI_EventInfoType* pEventData
29211)
29212{
Jeff Johnson295189b2012-06-20 16:38:30 -070029213 eHalStatus halStatus;
29214 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029215 tHalGtkOffloadRspParams halGtkOffloadRspParams;
29216 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029217
29218 /*-------------------------------------------------------------------------
29219 Sanity check
29220 -------------------------------------------------------------------------*/
29221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29222 ( NULL == pEventData->pEventData))
29223 {
29224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029226 WDI_ASSERT(0);
29227 return WDI_STATUS_E_FAILURE;
29228 }
29229
Wilson Yang00256342013-10-10 23:13:38 -070029230 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
29231
Jeff Johnson295189b2012-06-20 16:38:30 -070029232 /*-------------------------------------------------------------------------
29233 Extract response and send it to UMAC
29234 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029235 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29236 {
29237 wpalMemoryCopy( &halGtkOffloadRspParams,
29238 pEventData->pEventData,
29239 sizeof(halGtkOffloadRspParams));
29240
29241 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029242 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029243 wdiGtkOffloadRsparams.bssIdx =
29244 halGtkOffloadRspParams.bssIdx;
29245 }
29246 else
29247 {
29248 halStatus = *((eHalStatus*)pEventData->pEventData);
29249 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29250 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029251
29252 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029253 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029254
29255 return WDI_STATUS_SUCCESS;
29256}
29257
29258/**
29259 @brief Process GTK Offload Get Information Response function
29260
29261 @param pWDICtx: pointer to the WLAN DAL context
29262 pEventData: pointer to the event information structure
29263
29264 @see
29265 @return Result of the function call
29266*/
29267WDI_Status
29268WDI_ProcessGTKOffloadGetInfoRsp
29269(
29270 WDI_ControlBlockType* pWDICtx,
29271 WDI_EventInfoType* pEventData
29272)
29273{
Jeff Johnson295189b2012-06-20 16:38:30 -070029274 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029275 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029276 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29277 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029278 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029279
Jeff Johnson295189b2012-06-20 16:38:30 -070029280
29281 /*-------------------------------------------------------------------------
29282 Sanity check
29283 -------------------------------------------------------------------------*/
29284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29285 ( NULL == pEventData->pEventData ))
29286 {
29287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029289 WDI_ASSERT(0);
29290 return WDI_STATUS_E_FAILURE;
29291 }
29292
Wilson Yang00256342013-10-10 23:13:38 -070029293 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29294
29295 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029296 Extract response and send it to UMAC
29297 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029298 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29299 {
29300 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29301 pEventData->pEventData,
29302 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029303
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029304 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029305 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029306 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29307 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29308 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29309 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29310 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29311 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29312 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29313 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029314
29315 wpalMutexAcquire(&pWDICtx->wptMutex);
29316 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29317 &pBSSSes);
29318
29319 if ( NULL == pBSSSes )
29320 {
29321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29322 "Association sequence for this BSS does not exist or "
29323 "association no longer in progress - mysterious HAL response");
29324 wpalMutexRelease(&pWDICtx->wptMutex);
29325 return WDI_STATUS_E_NOT_ALLOWED;
29326 }
29327
29328 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29329 sizeof (wpt_macAddr));
29330 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029331 }
29332 else
29333 {
29334 halStatus = *((eHalStatus*)pEventData->pEventData);
29335 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29336 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029337 /*Notify UMAC*/
29338 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29339 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029340 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029341
29342 return WDI_STATUS_SUCCESS;
29343}
29344#endif // WLAN_FEATURE_GTK_OFFLOAD
29345
29346#ifdef WLAN_WAKEUP_EVENTS
29347WDI_Status
29348WDI_ProcessWakeReasonInd
29349(
29350 WDI_ControlBlockType* pWDICtx,
29351 WDI_EventInfoType* pEventData
29352)
29353{
29354 WDI_LowLevelIndType *pWdiInd;
29355 tpWakeReasonParams pWakeReasonParams;
29356 wpt_uint32 allocSize = 0;
29357
29358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029359 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029360
29361 /*-------------------------------------------------------------------------
29362 Sanity check
29363 -------------------------------------------------------------------------*/
29364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29365 ( NULL == pEventData->pEventData ))
29366 {
29367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029369 WDI_ASSERT( 0 );
29370 return WDI_STATUS_E_FAILURE;
29371 }
29372
29373 /*-------------------------------------------------------------------------
29374 Extract indication and send it to UMAC
29375 -------------------------------------------------------------------------*/
29376 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29377
29378 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29379
29380 //Allocate memory for WDI_WakeReasonIndType structure
29381 pWdiInd = wpalMemoryAllocate(allocSize) ;
29382
29383 if(NULL == pWdiInd)
29384 {
29385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029386 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029387 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029388 WDI_ASSERT(0);
29389 return WDI_STATUS_E_FAILURE;
29390 }
29391
29392 wpalMemoryZero(pWdiInd, allocSize);
29393
29394 /* Fill in the indication parameters*/
29395 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29396 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29397 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29398 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29399 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29400 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29401 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29402 &(pWakeReasonParams->aDataStart[0]),
29403 pWakeReasonParams->ulStoredDataLen);
29404
ltimariub77f24b2013-01-24 18:54:33 -080029405
29406 if ( pWDICtx->wdiLowLevelIndCB )
29407 {
29408 /*Notify UMAC*/
29409 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29410 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029411
29412 //Free memory allocated for WDI_WakeReasonIndType structure
29413 wpalMemoryFree(pWdiInd);
29414
29415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029416 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029417
29418 return WDI_STATUS_SUCCESS;
29419}
29420#endif // WLAN_WAKEUP_EVENTS
29421
29422void WDI_GetWcnssCompiledApiVersion
29423(
29424 WDI_WlanVersionType *pWcnssApiVersion
29425)
29426{
29427 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29428 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29429 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29430 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29431}
29432
29433/**
29434 @brief Process Set TM Level Rsp function (called when a
29435 response is being received over the bus from HAL)
29436
29437 @param pWDICtx: pointer to the WLAN DAL context
29438 pEventData: pointer to the event information structure
29439
29440 @see
29441 @return Result of the function call
29442*/
29443WDI_Status
29444WDI_ProcessSetTmLevelRsp
29445(
29446 WDI_ControlBlockType* pWDICtx,
29447 WDI_EventInfoType* pEventData
29448)
29449{
29450 WDI_Status wdiStatus;
29451 eHalStatus halStatus;
29452 WDI_SetTmLevelCb wdiSetTmLevelCb;
29453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29454
29455 /*-------------------------------------------------------------------------
29456 Sanity check
29457 -------------------------------------------------------------------------*/
29458 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29459 ( NULL == pEventData->pEventData ))
29460 {
29461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029463 WDI_ASSERT(0);
29464 return WDI_STATUS_E_FAILURE;
29465 }
29466
29467 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29468
29469 /*-------------------------------------------------------------------------
29470 Extract response and send it to UMAC
29471 -------------------------------------------------------------------------*/
29472 halStatus = *((eHalStatus*)pEventData->pEventData);
29473 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29474
29475 /*Notify UMAC*/
29476 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29477
29478 return WDI_STATUS_SUCCESS;
29479}/*WDI_ProcessSetTmLevelRsp*/
29480
29481/**
29482 @brief Process Set Thermal Mitigation level Changed request
29483
29484 @param pWDICtx: pointer to the WLAN DAL context
29485 pEventData: pointer to the event information structure
29486
29487 @see
29488 @return Result of the function call
29489*/
29490WDI_Status
29491WDI_ProcessSetTmLevelReq
29492(
29493 WDI_ControlBlockType* pWDICtx,
29494 WDI_EventInfoType* pEventData
29495)
29496{
29497 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29498 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29499 wpt_uint8* pSendBuffer = NULL;
29500 wpt_uint16 usDataOffset = 0;
29501 wpt_uint16 usSendSize = 0;
29502 tSetThermalMitgationType halTmMsg;
29503
29504 /*-------------------------------------------------------------------------
29505 Sanity check
29506 -------------------------------------------------------------------------*/
29507 if (( NULL == pEventData ) ||
29508 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29509 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29510 {
29511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029513 WDI_ASSERT(0);
29514 return WDI_STATUS_E_FAILURE;
29515 }
29516
29517 /*-----------------------------------------------------------------------
29518 Get message buffer
29519 -----------------------------------------------------------------------*/
29520 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29521 sizeof(halTmMsg),
29522 &pSendBuffer, &usDataOffset, &usSendSize))||
29523 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29524 {
29525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029526 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029527 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29528 WDI_ASSERT(0);
29529 return WDI_STATUS_E_FAILURE;
29530 }
29531
29532 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29533 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29534
29535 wpalMemoryCopy( pSendBuffer+usDataOffset,
29536 &halTmMsg,
29537 sizeof(halTmMsg));
29538
29539 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29540 pWDICtx->pfncRspCB = NULL;
29541 /*-------------------------------------------------------------------------
29542 Send Get STA Request to HAL
29543 -------------------------------------------------------------------------*/
29544 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29545 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29546}
29547
29548/* Fill the value from the global features enabled array to the global capabilities
29549 * bitmap struct
29550 */
29551static void
29552FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29553{
29554 wpt_int8 i;
29555 for (i=0; i<len; i++)
29556 {
29557 setFeatCaps(fCaps, enabledFeat[i]);
29558 }
29559}
29560
29561/**
29562 @brief WDI_featureCapsExchangeReq
29563 Post feature capability bitmap exchange event.
29564 Host will send its own capability to FW in this req and
29565 expect FW to send its capability back as a bitmap in Response
29566
29567 @param
29568
29569 wdiFeatureCapsExchangeCb: callback called on getting the response.
29570 It is kept to mantain similarity between WDI reqs and if needed, can
29571 be used in future. Currently, It is set to NULL
29572
29573 pUserData: user data will be passed back with the
29574 callback
29575
29576 @see
29577 @return Result of the function call
29578*/
29579WDI_Status
29580WDI_featureCapsExchangeReq
29581(
29582 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29583 void* pUserData
29584)
29585{
29586 WDI_EventInfoType wdiEventData;
29587 wpt_int32 fCapsStructSize;
29588
29589 /*------------------------------------------------------------------------
29590 Sanity Check
29591 ------------------------------------------------------------------------*/
29592 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29593 {
29594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29595 "WDI API call before module is initialized - Fail request");
29596
29597 return WDI_STATUS_E_NOT_ALLOWED;
29598 }
29599
29600 /* Allocate memory separately for global variable carrying FW caps */
29601 fCapsStructSize = sizeof(tWlanFeatCaps);
29602 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29603 if ( NULL == gpHostWlanFeatCaps )
29604 {
29605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029606 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029607 WDI_ASSERT(0);
29608 return WDI_STATUS_MEM_FAILURE;
29609 }
29610
29611 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29612
29613 /*------------------------------------------------------------------------
29614 Fill in Event data and post to the Main FSM
29615 ------------------------------------------------------------------------*/
29616 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29617 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029619 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029620 gpHostWlanFeatCaps->featCaps[0],
29621 gpHostWlanFeatCaps->featCaps[1],
29622 gpHostWlanFeatCaps->featCaps[2],
29623 gpHostWlanFeatCaps->featCaps[3]
29624 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029626 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029627 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29628 wdiEventData.pEventData = gpHostWlanFeatCaps;
29629 wdiEventData.uEventDataSize = fCapsStructSize;
29630 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29631 wdiEventData.pUserData = pUserData;
29632
29633 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29634}
29635
29636/**
Yathish9f22e662012-12-10 14:21:35 -080029637 @brief Disable Active mode offload in Host
29638
29639 @param void
29640 @see
29641 @return void
29642*/
29643void
29644WDI_disableCapablityFeature(wpt_uint8 feature_index)
29645{
29646 supportEnabledFeatures[feature_index] = 0;
29647 return;
29648}
29649
29650/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029651 @brief Process Host-FW Capability Exchange Request function
29652
29653 @param pWDICtx: pointer to the WLAN DAL context
29654 pEventData: pointer to the event information structure
29655
29656 @see
29657 @return Result of the function call
29658*/
29659WDI_Status
29660WDI_ProcessFeatureCapsExchangeReq
29661(
29662 WDI_ControlBlockType* pWDICtx,
29663 WDI_EventInfoType* pEventData
29664)
29665{
29666 wpt_uint8* pSendBuffer = NULL;
29667 wpt_uint16 usDataOffset = 0;
29668 wpt_uint16 usSendSize = 0;
29669 wpt_uint16 usLen = 0;
29670
29671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29672
29673 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029674 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029675
29676 /*-------------------------------------------------------------------------
29677 Sanity check
29678 -------------------------------------------------------------------------*/
29679 /* Call back function is NULL since not required for cap exchange req */
29680 if (( NULL == pEventData ) ||
29681 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29682 {
29683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029685 WDI_ASSERT(0);
29686 return WDI_STATUS_E_FAILURE;
29687 }
29688
29689 /*-----------------------------------------------------------------------
29690 Get message buffer
29691 -----------------------------------------------------------------------*/
29692 usLen = sizeof(tWlanFeatCaps);
29693
29694 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29695 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29696 usLen,
29697 &pSendBuffer, &usDataOffset, &usSendSize))||
29698 ( usSendSize < (usDataOffset + usLen )))
29699 {
29700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029701 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029702 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29703 WDI_ASSERT(0);
29704 return WDI_STATUS_E_FAILURE;
29705 }
29706
29707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029708 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029709 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29710 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29711 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29712 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29713 );
29714
29715 /* Copy host caps after the offset in the send buffer */
29716 wpalMemoryCopy( pSendBuffer+usDataOffset,
29717 (tWlanFeatCaps *)pEventData->pEventData,
29718 usLen);
29719
29720 /*-------------------------------------------------------------------------
29721 Send Start Request to HAL
29722 -------------------------------------------------------------------------*/
29723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29724 (WDI_StartRspCb)pEventData->pCBfnc,
29725 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29726
29727}/*WDI_ProcessFeatureCapsExchangeReq*/
29728
29729/**
29730 @brief Process Host-FW Capability Exchange Response function
29731
29732 @param pWDICtx: pointer to the WLAN DAL context
29733 pEventData: pointer to the event information structure
29734
29735 @see
29736 @return Result of the function call
29737*/
29738WDI_Status
29739WDI_ProcessFeatureCapsExchangeRsp
29740(
29741 WDI_ControlBlockType* pWDICtx,
29742 WDI_EventInfoType* pEventData
29743)
29744{
29745 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29746 wpt_int32 fCapsStructSize;
29747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29748
29749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029750 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029751
29752 /*-------------------------------------------------------------------------
29753 Sanity check
29754 -------------------------------------------------------------------------*/
29755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29756 ( NULL == pEventData->pEventData ))
29757 {
29758 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029761 WDI_ASSERT(0);
29762 return WDI_STATUS_E_FAILURE;
29763 }
29764
29765 /* Allocate memory separately for global variable carrying FW caps */
29766 fCapsStructSize = sizeof(tWlanFeatCaps);
29767 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29768 if ( NULL == gpFwWlanFeatCaps )
29769 {
29770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029771 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029772 WDI_ASSERT(0);
29773 return WDI_STATUS_MEM_FAILURE;
29774 }
29775
29776 /*-------------------------------------------------------------------------
29777 Unpack HAL Response Message - the header was already extracted by the
29778 main Response Handling procedure
29779 -------------------------------------------------------------------------*/
29780 /*-------------------------------------------------------------------------
29781 Extract response and send it to UMAC
29782 -------------------------------------------------------------------------*/
29783
29784 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29785 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029787 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029788 gpFwWlanFeatCaps->featCaps[0],
29789 gpFwWlanFeatCaps->featCaps[1],
29790 gpFwWlanFeatCaps->featCaps[2],
29791 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029792 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029794 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029795 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29796
29797 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29798 if (wdiFeatureCapsExchangeCb != NULL)
29799 wdiFeatureCapsExchangeCb(NULL, NULL);
29800
29801 return WDI_STATUS_SUCCESS;
29802}
29803
Mohit Khanna4a70d262012-09-11 16:30:12 -070029804#ifdef WLAN_FEATURE_11AC
29805WDI_Status
29806WDI_ProcessUpdateVHTOpModeRsp
29807(
29808 WDI_ControlBlockType* pWDICtx,
29809 WDI_EventInfoType* pEventData
29810)
29811{
29812 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29813 WDI_Status wdiStatus;
29814 eHalStatus halStatus;
29815
29816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29817
29818 /*-------------------------------------------------------------------------
29819 Sanity check
29820 -------------------------------------------------------------------------*/
29821 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29822 ( NULL == pEventData->pEventData))
29823 {
29824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029825 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029826 WDI_ASSERT(0);
29827 return WDI_STATUS_E_FAILURE;
29828 }
29829 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29830
29831 /*-------------------------------------------------------------------------
29832 Extract response and send it to UMAC
29833 -------------------------------------------------------------------------*/
29834 halStatus = *((eHalStatus*)pEventData->pEventData);
29835 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29836
29837 /*Notify UMAC*/
29838 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29839
29840 return WDI_STATUS_SUCCESS;
29841}
29842#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029843/**
29844 @brief WDI_getHostWlanFeatCaps
29845 WDI API that returns whether the feature passed to it as enum value in
29846 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29847 variable storing host capability bitmap to find this. This can be used by
29848 other moduels to decide certain things like call different APIs based on
29849 whether a particular feature is supported.
29850
29851 @param
29852
29853 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29854
29855 @see
29856 @return
29857 0 - if the feature is NOT supported in host
29858 any non-zero value - if the feature is SUPPORTED in host.
29859*/
29860wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29861{
29862 wpt_uint8 featSupported = 0;
29863 if (gpHostWlanFeatCaps != NULL)
29864 {
29865 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29866 }
29867 else
29868 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029870 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029871 }
29872 return featSupported;
29873}
29874
29875/**
29876 @brief WDI_getFwWlanFeatCaps
29877 WDI API that returns whether the feature passed to it as enum value in
29878 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29879 variable storing host capability bitmap to find this. This can be used by
29880 other moduels to decide certain things like call different APIs based on
29881 whether a particular feature is supported.
29882
29883 @param
29884
29885 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29886 in wlan_hal_msg.h.
29887
29888 @see
29889 @return
29890 0 - if the feature is NOT supported in FW
29891 any non-zero value - if the feature is SUPPORTED in FW.
29892*/
29893wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29894{
29895 wpt_uint8 featSupported = 0;
29896 if (gpFwWlanFeatCaps != NULL)
29897 {
29898 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29899 }
29900 else
29901 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029903 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029904 }
29905 return featSupported;
29906}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029907
Katya Nigamf0511f62015-05-05 16:40:57 +053029908wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29909{
29910 /* 5gHz Channel */
29911 if( channel >= 34 && channel <= 165 )
29912 {
29913 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29914 {
29915 if ( channel== 36 || channel == 52 || channel == 100 ||
29916 channel == 116 || channel == 149 )
29917 {
29918 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29919 }
29920 else if ( channel == 40 || channel == 56 || channel == 104 ||
29921 channel == 120 || channel == 153 )
29922 {
29923 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29924 }
29925 else if ( channel == 44 || channel == 60 || channel == 108 ||
29926 channel == 124 || channel == 157 )
29927 {
29928 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29929 }
29930 else if ( channel == 48 || channel == 64 || channel == 112 ||
29931 channel == 128 || channel == 144 || channel == 161 )
29932 {
29933 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29934 }
29935 else if ( channel == 165 )
29936 {
29937 return PHY_SINGLE_CHANNEL_CENTERED;
29938 }
29939 }
29940
29941 else
29942 {
29943 if ( channel== 40 || channel == 48 || channel == 56 ||
29944 channel == 64 || channel == 104 || channel == 112 ||
29945 channel == 120 || channel == 128 || channel == 136 ||
29946 channel == 144 || channel == 153 || channel == 161 )
29947 {
29948 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29949 }
29950 else if ( channel== 36 || channel == 44 || channel == 52 ||
29951 channel == 60 || channel == 100 || channel == 108 ||
29952 channel == 116 || channel == 124 || channel == 132 ||
29953 channel == 140 || channel == 149 || channel == 157 )
29954 {
29955 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29956 }
29957 else if ( channel == 165 )
29958 {
29959 return PHY_SINGLE_CHANNEL_CENTERED;
29960 }
29961 }
29962 }
29963
29964 /* 2.4Ghz Channel */
29965 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
29966 {
29967 if (channel >= 1 && channel <= 7)
29968 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29969 else if (channel >= 8 && channel <= 13)
29970 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29971 else if (channel ==14)
29972 return PHY_SINGLE_CHANNEL_CENTERED;
29973 }
29974 return PHY_SINGLE_CHANNEL_CENTERED;
29975}
29976
Mohit Khanna4a70d262012-09-11 16:30:12 -070029977#ifdef WLAN_FEATURE_11AC
29978WDI_Status
29979WDI_ProcessUpdateVHTOpModeReq
29980(
29981 WDI_ControlBlockType* pWDICtx,
29982 WDI_EventInfoType* pEventData
29983)
29984{
29985 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29986 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29987 wpt_uint8* pSendBuffer = NULL;
29988 wpt_uint16 usDataOffset = 0;
29989 wpt_uint16 usSendSize = 0;
29990
29991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29992
29993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029994 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029995
29996 /*-------------------------------------------------------------------------
29997 Sanity check
29998 -------------------------------------------------------------------------*/
29999 if (( NULL == pEventData ) ||
30000 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
30001 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
30002 {
30003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030004 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030005 WDI_ASSERT(0);
30006 return WDI_STATUS_E_FAILURE;
30007 }
30008
30009 /*-----------------------------------------------------------------------
30010 Get message buffer
30011 -----------------------------------------------------------------------*/
30012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
30013 sizeof(WDI_UpdateVHTOpMode),
30014 &pSendBuffer, &usDataOffset, &usSendSize))||
30015 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
30016 {
30017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30018 "Unable to get send buffer in update vht opMode req");
30019 WDI_ASSERT(0);
30020 return WDI_STATUS_E_FAILURE;
30021 }
30022
30023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030024 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030025
30026 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
30027 sizeof(WDI_UpdateVHTOpMode));
30028
30029 /*-------------------------------------------------------------------------
30030 Send Start Request to HAL
30031 -------------------------------------------------------------------------*/
30032 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30033 wdiVHTOpModeCb,
30034 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
30035
30036}
30037
30038WDI_Status
30039WDI_UpdateVHTOpModeReq
30040(
30041 WDI_UpdateVHTOpMode *pData,
30042 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
30043 void* pUserData
30044)
30045{
30046 WDI_EventInfoType wdiEventData;
30047
30048 /*------------------------------------------------------------------------
30049 Sanity Check
30050 ------------------------------------------------------------------------*/
30051 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30052 {
30053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30054 "WDI API call before module is initialized - Fail request");
30055
30056 return WDI_STATUS_E_NOT_ALLOWED;
30057 }
30058
30059 /*------------------------------------------------------------------------
30060 Fill in Event data and post to the Main FSM
30061 ------------------------------------------------------------------------*/
30062 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
30063 wdiEventData.pEventData = pData;
30064 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
30065 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
30066 wdiEventData.pUserData = pUserData;
30067
30068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030069 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030070
30071 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30072
30073}
30074#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030075
30076/**
30077 @brief WDI_TransportChannelDebug -
30078 Display DXE Channel debugging information
30079 User may request to display DXE channel snapshot
30080 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030081
Jeff Johnsonb88db982012-12-10 13:34:59 -080030082 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053030083 @param debugFlags : Enable stall detect features
30084 defined by WPAL_DeviceDebugFlags
30085 These features may effect
30086 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030087 @see
30088 @return none
30089*/
30090void WDI_TransportChannelDebug
30091(
30092 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053030093 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030094)
30095{
Mihir Shete40a55652014-03-02 14:14:47 +053030096 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030097 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070030098}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030099/**
30100 @brief WDI_SsrTimerCB
30101 Callback function for SSR timer, if this is called then the graceful
30102 shutdown for Riva did not happen.
30103
30104 @param pUserData : user data to timer
30105
30106 @see
30107 @return none
30108*/
30109void
30110WDI_SsrTimerCB
30111(
30112 void *pUserData
30113)
30114{
30115 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
30116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30117
30118 if (NULL == pWDICtx )
30119 {
30120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030121 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030122 WDI_ASSERT(0);
30123 return;
30124 }
30125 wpalRivaSubystemRestart();
30126
30127 return;
30128
30129}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070030130
30131/**
30132 @brief WDI_SetEnableSSR -
30133 This API is called to enable/disable SSR on WDI timeout.
30134
30135 @param enableSSR : enable/disable SSR
30136
30137 @see
30138 @return none
30139*/
30140void WDI_SetEnableSSR(wpt_boolean enableSSR)
30141{
30142 gWDICb.bEnableSSR = enableSSR;
30143}
Leo Chang9056f462013-08-01 19:21:11 -070030144
30145
30146#ifdef FEATURE_WLAN_LPHB
30147/**
Leo Changd9df8aa2013-09-26 13:32:26 -070030148 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070030149 This function will be invoked when FW detects low power
30150 heart beat failure
30151
30152 @param pWDICtx : wdi context
30153 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070030154 @see
30155 @return Result of the function call
30156*/
30157WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070030158WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070030159(
30160 WDI_ControlBlockType* pWDICtx,
30161 WDI_EventInfoType* pEventData
30162)
30163{
30164 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070030165 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070030166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30167
30168 /*-------------------------------------------------------------------------
30169 Sanity check
30170 -------------------------------------------------------------------------*/
30171 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30172 (NULL == pEventData->pEventData))
30173 {
30174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30175 "%s: Invalid parameters", __func__);
30176 WDI_ASSERT(0);
30177 return WDI_STATUS_E_FAILURE;
30178 }
30179
30180 /*-------------------------------------------------------------------------
30181 Extract indication and send it to UMAC
30182 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070030183 wpalMemoryCopy(&lphbIndicationParam,
30184 pEventData->pEventData,
30185 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070030186
Leo Changd9df8aa2013-09-26 13:32:26 -070030187 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070030188 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030189 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030190 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030191 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030192 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070030193 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070030194 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070030195 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070030196 /*Notify UMAC*/
30197 if (pWDICtx->wdiLowLevelIndCB)
30198 {
30199 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30200 }
30201
30202 return WDI_STATUS_SUCCESS;
30203}
30204
30205/**
30206 @brief WDI_ProcessLphbCfgRsp -
30207 LPHB configuration response from FW
30208
30209 @param pWDICtx : wdi context
30210 pEventData : indication data
30211
30212 @see
30213 @return Result of the function call
30214*/
30215WDI_Status WDI_ProcessLphbCfgRsp
30216(
30217 WDI_ControlBlockType* pWDICtx,
30218 WDI_EventInfoType* pEventData
30219)
30220{
30221 WDI_Status wdiStatus;
30222 eHalStatus halStatus;
30223 WDI_LphbCfgCb wdiLphbCfgCb;
30224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30225
30226 /*-------------------------------------------------------------------------
30227 Sanity check
30228 -------------------------------------------------------------------------*/
30229 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30230 (NULL == pEventData->pEventData))
30231 {
30232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30233 "%s: Invalid parameters", __func__);
30234 WDI_ASSERT(0);
30235 return WDI_STATUS_E_FAILURE;
30236 }
30237
30238 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
30239
30240 /*-------------------------------------------------------------------------
30241 Extract response and send it to UMAC
30242 -------------------------------------------------------------------------*/
30243 halStatus = *((eHalStatus*)pEventData->pEventData);
30244 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30245
30246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30247 "LPHB Cfg Rsp Return status %d", wdiStatus);
30248 /*Notify UMAC*/
30249 if (NULL != wdiLphbCfgCb)
30250 {
30251 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30252 }
30253
30254 return WDI_STATUS_SUCCESS;
30255}
30256
30257/**
30258 @brief WDI_ProcessLPHBConfReq -
30259 LPHB configuration request to FW
30260
30261 @param pWDICtx : wdi context
30262 pEventData : indication data
30263
30264 @see
30265 @return none
30266*/
30267WDI_Status WDI_ProcessLPHBConfReq
30268(
30269 WDI_ControlBlockType* pWDICtx,
30270 WDI_EventInfoType* pEventData
30271)
30272{
30273 WDI_LPHBReq *pLphbReqParams;
30274 WDI_Status wdiStatus;
30275 wpt_uint8* pSendBuffer = NULL;
30276 wpt_uint16 usDataOffset = 0;
30277 wpt_uint16 usSendSize = 0;
30278 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30280
30281 /*-------------------------------------------------------------------------
30282 Sanity check
30283 -------------------------------------------------------------------------*/
30284 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30285 {
30286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30287 "%s: Invalid parameters in Suspend ind",__func__);
30288 WDI_ASSERT(0);
30289 return WDI_STATUS_E_FAILURE;
30290 }
30291
30292 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30293
30294 /*-----------------------------------------------------------------------
30295 Get message buffer
30296 -----------------------------------------------------------------------*/
30297 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30298 WDI_LPHB_CFG_REQ,
30299 sizeof(tHalLowPowerHeartBeatReqMsg),
30300 &pSendBuffer, &usDataOffset, &usSendSize))||
30301 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30302 {
30303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30304 "Unable to get send buffer in LPHB Ind ");
30305 WDI_ASSERT(0);
30306 return WDI_STATUS_E_FAILURE;
30307 }
30308
30309 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30310 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30311
30312 halLphbReqRarams->lowPowerHeartBeatCmdType =
30313 (tANI_U16)(++pLphbReqParams->cmd);
30314 switch ((tANI_U16)pLphbReqParams->cmd)
30315 {
30316 case WDI_LPHB_SET_EN_PARAMS_INDID:
30317 halLphbReqRarams->sessionIdx =
30318 pLphbReqParams->params.lphbEnableReq.session;
30319 halLphbReqRarams->options.control.heartBeatEnable =
30320 pLphbReqParams->params.lphbEnableReq.enable;
30321 halLphbReqRarams->options.control.heartBeatType =
30322 pLphbReqParams->params.lphbEnableReq.item;
30323 break;
30324
30325 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30326 halLphbReqRarams->sessionIdx =
30327 pLphbReqParams->params.lphbTcpParamReq.session;
30328 halLphbReqRarams->options.tcpParams.timeOutSec =
30329 pLphbReqParams->params.lphbTcpParamReq.timeout;
30330 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30331 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30332 sizeof(v_U32_t));
30333 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30334 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30335 sizeof(v_U32_t));
30336
30337 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30338 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30339 WDI_MAC_ADDR_LEN);
30340
30341 halLphbReqRarams->options.tcpParams.hostPort =
30342 pLphbReqParams->params.lphbTcpParamReq.src_port;
30343 halLphbReqRarams->options.tcpParams.destPort =
30344 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030345 halLphbReqRarams->options.tcpParams.timePeriodSec =
30346 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30347 halLphbReqRarams->options.tcpParams.tcpSn =
30348 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030349 break;
30350
30351 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30352 halLphbReqRarams->sessionIdx =
30353 pLphbReqParams->params.lphbTcpFilterReq.session;
30354 halLphbReqRarams->options.tcpUdpFilter.offset =
30355 pLphbReqParams->params.lphbTcpFilterReq.offset;
30356 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30357 pLphbReqParams->params.lphbTcpFilterReq.length;
30358 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30359 pLphbReqParams->params.lphbTcpFilterReq.filter,
30360 WDI_LPHB_FILTER_LEN);
30361 break;
30362
30363 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30364 halLphbReqRarams->sessionIdx =
30365 pLphbReqParams->params.lphbUdpParamReq.session;
30366 halLphbReqRarams->options.udpParams.timeOutSec =
30367 pLphbReqParams->params.lphbUdpParamReq.timeout;
30368 halLphbReqRarams->options.udpParams.timePeriodSec =
30369 pLphbReqParams->params.lphbUdpParamReq.interval;
30370 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30371 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30372 sizeof(v_U32_t));
30373 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30374 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30375 sizeof(v_U32_t));
30376
30377 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30378 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30379 WDI_MAC_ADDR_LEN);
30380
30381 halLphbReqRarams->options.udpParams.hostPort =
30382 pLphbReqParams->params.lphbUdpParamReq.src_port;
30383 halLphbReqRarams->options.udpParams.destPort =
30384 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30385 break;
30386
30387 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30388 halLphbReqRarams->sessionIdx =
30389 pLphbReqParams->params.lphbUdpFilterReq.session;
30390 halLphbReqRarams->options.tcpUdpFilter.offset =
30391 pLphbReqParams->params.lphbUdpFilterReq.offset;
30392 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30393 pLphbReqParams->params.lphbUdpFilterReq.length;
30394 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30395 pLphbReqParams->params.lphbUdpFilterReq.filter,
30396 WDI_LPHB_FILTER_LEN);
30397 break;
30398
30399 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30400 /* NA */
30401 break;
30402
30403 default:
30404 break;
30405 }
30406
30407 /*-------------------------------------------------------------------------
30408 Send Suspend Request to HAL
30409 -------------------------------------------------------------------------*/
30410 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30411 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30412
30413 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30414 usSendSize, pWDICtx->pfncRspCB,
30415 pWDICtx->pReqStatusUserData,
30416 WDI_LPHB_CFG_RESP);
30417
30418 return wdiStatus;
30419}
30420
30421/**
30422 @brief WDI_LPHBConfReq -
30423 LPHB configuration request API
30424
30425 @param lphbconfParam : configuration parameter
30426 usrData : client context
30427 lphbCfgCb : callback function pointer
30428
30429 @see
30430 @return Success or fail status code
30431*/
30432WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30433 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30434{
30435 WDI_EventInfoType wdiEventData;
30436
30437 /*------------------------------------------------------------------------
30438 Sanity Check
30439 ------------------------------------------------------------------------*/
30440 if (eWLAN_PAL_FALSE == gWDIInitialized)
30441 {
30442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30443 "WDI API call before module is initialized - Fail request");
30444
30445 return WDI_STATUS_E_NOT_ALLOWED;
30446 }
30447
30448 /*------------------------------------------------------------------------
30449 Fill in Event data and post to the Main FSM
30450 ------------------------------------------------------------------------*/
30451 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30452 wdiEventData.pEventData = lphbconfParam;
30453 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30454 wdiEventData.pCBfnc = lphbCfgCb;
30455 wdiEventData.pUserData = usrData;
30456
30457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30458}
30459#endif /* FEATURE_WLAN_LPHB */
30460
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030461/**
30462 @brief WDI_ProcessIbssPeerInactivityInd
30463 Process peer inactivity indication coming from HAL
30464
30465 @param pWDICtx: pointer to the WLAN DAL context
30466 pEventData: pointer to the event information structure
30467 @see
30468 @return Result of the function call
30469*/
30470WDI_Status
30471WDI_ProcessIbssPeerInactivityInd
30472(
30473 WDI_ControlBlockType* pWDICtx,
30474 WDI_EventInfoType* pEventData
30475)
30476{
30477 WDI_LowLevelIndType wdiInd;
30478 tIbssPeerInactivityIndMsg halIbssIndMsg;
30479
30480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30481
30482 /*-------------------------------------------------------------------------
30483 Sanity check
30484 -------------------------------------------------------------------------*/
30485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30486 ( NULL == pEventData->pEventData ))
30487 {
30488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30489 "%s: Invalid parameters", __func__);
30490 WDI_ASSERT( 0 );
30491 return WDI_STATUS_E_FAILURE;
30492 }
30493
30494 /*-------------------------------------------------------------------------
30495 Extract indication and send it to UMAC
30496 -------------------------------------------------------------------------*/
30497 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30498 pEventData->pEventData,
30499 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30500
30501 /*Fill in the indication parameters*/
30502 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30503
30504 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30505 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30506
30507 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30508 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30509
30510 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30511 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30512 sizeof(tSirMacAddr));
30513
30514 /*Notify UMAC*/
30515 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30516
30517 return WDI_STATUS_SUCCESS;
30518
30519} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030520
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030521/**
30522*@brief WDI_RateUpdateInd will be called when the upper MAC
30523 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030524
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030525
30526 @param wdiRateUpdateIndParams:
30527
30528
30529 @see
30530 @return Result of the function call
30531*/
30532WDI_Status
30533WDI_RateUpdateInd
30534(
30535 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30536)
30537{
30538 WDI_EventInfoType wdiEventData;
30539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30540
30541 /*------------------------------------------------------------------------
30542 Sanity Check
30543 ------------------------------------------------------------------------*/
30544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30545 {
30546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30547 "WDI API call before module is initialized - Fail request");
30548
30549 return WDI_STATUS_E_NOT_ALLOWED;
30550 }
30551
30552 /*------------------------------------------------------------------------
30553 Fill in Event data and post to the Main FSM
30554 ------------------------------------------------------------------------*/
30555 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30556 wdiEventData.pEventData = wdiRateUpdateIndParams;
30557 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30558 wdiEventData.pCBfnc = NULL;
30559 wdiEventData.pUserData = NULL;
30560
30561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30562
30563}/* WDI_RateUpdateInd */
30564
30565/**
30566 @brief Process Rate Update Indication and post it to HAL
30567
30568 @param pWDICtx: pointer to the WLAN DAL context
30569 pEventData: pointer to the event information structure
30570
30571 @see
30572 @return Result of the function call
30573*/
30574WDI_Status
30575WDI_ProcessRateUpdateInd
30576(
30577 WDI_ControlBlockType* pWDICtx,
30578 WDI_EventInfoType* pEventData
30579)
30580{
30581 wpt_uint8* pSendBuffer = NULL;
30582 wpt_uint16 usDataOffset = 0;
30583 wpt_uint16 usSendSize = 0;
30584 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30585 tHalRateUpdateInd *pRateUpdateInd;
30586 WDI_Status wdiStatus;
30587
30588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30589
30590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30591 "%s", __func__);
30592
30593 /*-------------------------------------------------------------------------
30594 Sanity check
30595 -------------------------------------------------------------------------*/
30596 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30597 {
30598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30599 "%s: Invalid parameters", __func__);
30600 WDI_ASSERT(0);
30601 return WDI_STATUS_E_FAILURE;
30602 }
30603 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30604 /*-----------------------------------------------------------------------
30605 Get message buffer
30606 -----------------------------------------------------------------------*/
30607
30608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30609 WDI_RATE_UPDATE_IND,
30610 sizeof(tHalRateUpdateParams),
30611 &pSendBuffer, &usDataOffset, &usSendSize))||
30612 ( usSendSize < (usDataOffset +
30613 sizeof(tHalRateUpdateParams) )))
30614 {
30615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30616 "Unable to get send buffer in Rate Update Indication %p ",
30617 pEventData);
30618 WDI_ASSERT(0);
30619 return WDI_STATUS_E_FAILURE;
30620 }
30621
30622 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30623
30624 /* Copy the bssid */
30625 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30626 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30627
30628 /* Copy the tx flags */
30629 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30630 pwdiRateUpdateInd->ucastDataRateTxFlag;
30631 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30632 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30633 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30634 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30635 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30636 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30637
30638 /* Copy the tx rates */
30639 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30640 pwdiRateUpdateInd->ucastDataRate;
30641 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30642 pwdiRateUpdateInd->reliableMcastDataRate;
30643 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30644 pwdiRateUpdateInd->mcastDataRate24GHz;
30645 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30646 pwdiRateUpdateInd->mcastDataRate5GHz;
30647
30648 /*-------------------------------------------------------------------------
30649 Send Rate Update Indication to HAL
30650 -------------------------------------------------------------------------*/
30651 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30652 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30653
30654 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30655
30656 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30657 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30658
30659} /* WDI_ProcessRateUpdateInd */
30660
30661#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030662/**
30663 @brief Process stop batch indication from WDA
30664
30665 @param pWDICtx: pointer to the WLAN DAL context
30666 pEventData: pointer to the event information structure
30667
30668 @see
30669 @return Result of the function call
30670*/
30671WDI_Status
30672WDI_ProcessStopBatchScanInd
30673(
30674 WDI_ControlBlockType* pWDICtx,
30675 WDI_EventInfoType* pEventData
30676)
30677{
30678 wpt_uint8* pSendBuffer = NULL;
30679 wpt_uint16 usDataOffset = 0;
30680 wpt_uint16 usSendSize = 0;
30681 WDI_Status wdiStatus;
30682 tHalBatchScanStopIndParam *pHalInd = NULL;
30683 WDI_StopBatchScanIndType *pWdiInd = NULL;
30684
30685
30686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30687
30688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30689 "%s", __func__);
30690
30691 /*-------------------------------------------------------------------------
30692 Sanity check
30693 -------------------------------------------------------------------------*/
30694
30695 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30696 {
30697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30698 "%s: Invalid parameters", __func__);
30699 WDI_ASSERT(0);
30700 return WDI_STATUS_E_FAILURE;
30701 }
30702 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30703 /*-----------------------------------------------------------------------
30704 Get message buffer
30705 -----------------------------------------------------------------------*/
30706
30707 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30708 WDI_STOP_BATCH_SCAN_IND,
30709 sizeof(tHalBatchScanStopIndParam),
30710 &pSendBuffer, &usDataOffset, &usSendSize))||
30711 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30712 {
30713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30714 "Unable to get send buffer in stop batch scan ind %p ",
30715 pEventData);
30716 WDI_ASSERT(0);
30717 return WDI_STATUS_E_FAILURE;
30718 }
30719
30720 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30721 pHalInd->param = pWdiInd->param;
30722
30723 pWDICtx->pReqStatusUserData = NULL;
30724 pWDICtx->pfncRspCB = NULL;
30725 /*-------------------------------------------------------------------------
30726 Send Stop batch scan indication to HAL
30727 -------------------------------------------------------------------------*/
30728 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30729 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30730}
30731
30732/**
30733 @brief This API is called to trigger batch scan results from FW
30734
30735 @param pWDICtx: pointer to the WLAN DAL context
30736 pEventData: pointer to the event information structure
30737
30738 @see
30739 @return Result of the function call
30740*/
30741WDI_Status
30742WDI_ProcessTriggerBatchScanResultInd
30743(
30744 WDI_ControlBlockType* pWDICtx,
30745 WDI_EventInfoType* pEventData
30746)
30747{
30748 WDI_Status wdiStatus;
30749 wpt_uint8* pSendBuffer = NULL;
30750 wpt_uint16 usDataOffset = 0;
30751 wpt_uint16 usSendSize = 0;
30752 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30753 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30754
30755
30756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30757
30758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30759 "%s", __func__);
30760
30761 /*-------------------------------------------------------------------------
30762 Sanity check
30763 -------------------------------------------------------------------------*/
30764
30765 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30766 {
30767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30768 "%s: Invalid parameters", __func__);
30769 WDI_ASSERT(0);
30770 return WDI_STATUS_E_FAILURE;
30771 }
30772 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30773 /*-----------------------------------------------------------------------
30774 Get message buffer
30775 -----------------------------------------------------------------------*/
30776
30777 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30778 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30779 sizeof(tHalBatchScanTriggerResultParam),
30780 &pSendBuffer, &usDataOffset, &usSendSize))||
30781 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30782 {
30783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30784 "Unable to get send buffer in stop batch scan ind %p ",
30785 pEventData);
30786 WDI_ASSERT(0);
30787 return WDI_STATUS_E_FAILURE;
30788 }
30789
30790 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30791 pHalInd->param = pWdiInd->param;
30792
30793 pWDICtx->pReqStatusUserData = NULL;
30794 pWDICtx->pfncRspCB = NULL;
30795 /*-------------------------------------------------------------------------
30796 Send trigger batch scan result indication to HAL
30797 -------------------------------------------------------------------------*/
30798 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30799 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30800}
30801
30802
30803/**
30804 @brief Process set batch scan response from FW
30805
30806 @param pWDICtx: pointer to the WLAN DAL context
30807 pEventData: pointer to the event information structure
30808
30809 @see
30810 @return Result of the function call
30811*/
30812WDI_Status
30813WDI_ProcessSetBatchScanRsp
30814(
30815 WDI_ControlBlockType* pWDICtx,
30816 WDI_EventInfoType* pEventData
30817)
30818{
30819 WDI_SetBatchScanCb wdiSetBatchScanCb;
30820 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30821
30822 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30824
30825 /*sanity check*/
30826 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30827 ( NULL == pEventData->pEventData))
30828 {
30829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30830 "%s: Invalid parameters", __func__);
30831 WDI_ASSERT(0);
30832 return WDI_STATUS_E_FAILURE;
30833 }
30834
30835 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30836 if ( NULL == wdiSetBatchScanCb)
30837 {
30838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30839 "%s: call back function is NULL", __func__);
30840 WDI_ASSERT(0);
30841 return WDI_STATUS_E_FAILURE;
30842 }
30843
30844 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30845
30846 if (NULL == pSetBatchScanRsp)
30847 {
30848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030849 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030850 pWDICtx, pEventData, pEventData->pEventData);
30851 WDI_ASSERT(0);
30852 return WDI_STATUS_E_FAILURE;
30853 }
30854
Sunil Duttbd736ed2014-05-26 21:19:41 +053030855 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030856 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30857
30858 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30859
Sunil Duttbd736ed2014-05-26 21:19:41 +053030860 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030861 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30862
30863 wpalMemoryFree(pSetBatchScanRsp);
30864
30865 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030866}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030867
30868/**
30869 @brief Process batch scan result indication from FW
30870
30871 @param pWDICtx: pointer to the WLAN DAL context
30872 pEventData: pointer to the event information structure
30873
30874 @see
30875 @return Result of the function call
30876*/
30877WDI_Status
30878WDI_ProcessBatchScanResultInd
30879(
30880 WDI_ControlBlockType* pWDICtx,
30881 WDI_EventInfoType* pEventData
30882)
30883{
30884 void *pBatchScanResultInd;
30885 WDI_LowLevelIndType wdiInd;
30886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30887
Sunil Duttbd736ed2014-05-26 21:19:41 +053030888 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30890 ( NULL == pEventData->pEventData))
30891 {
30892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30893 "%s: Invalid parameters", __func__);
30894 WDI_ASSERT(0);
30895 return WDI_STATUS_E_FAILURE;
30896 }
30897
Sunil Duttbd736ed2014-05-26 21:19:41 +053030898 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030899 pBatchScanResultInd = (void *)pEventData->pEventData;
30900
Sunil Duttbd736ed2014-05-26 21:19:41 +053030901 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030902 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30903
30904 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30905
Sunil Duttbd736ed2014-05-26 21:19:41 +053030906 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030907 if (pWDICtx->wdiLowLevelIndCB)
30908 {
30909 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30910 }
30911 else
30912 {
30913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30914 "%s: WDILowLevelIndCb is null", __func__);
30915 WDI_ASSERT(0);
30916 return WDI_STATUS_E_FAILURE;
30917 }
30918
30919 return WDI_STATUS_SUCCESS;
30920} /*End of WDI_ProcessBatchScanResultInd*/
30921
Sunil Duttbd736ed2014-05-26 21:19:41 +053030922#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30923/**
30924 @brief Process Link Layer Statistics Result indication from FW
30925
30926 @param pWDICtx: pointer to the WLAN DAL context
30927 pEventData: pointer to the event information structure
30928
30929 @see
30930 @return Result of the function call
30931*/
30932WDI_Status
30933WDI_ProcessLinkLayerStatsResultsInd
30934(
30935 WDI_ControlBlockType* pWDICtx,
30936 WDI_EventInfoType* pEventData
30937)
30938{
30939 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030940 WDI_LLstatsResultsType *halLLStatsResults;
30941 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030942 WDI_LowLevelIndType wdiInd;
30943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30944
30945 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30946 "%s: Event RESULTS Indication", __func__);
30947
30948 /* sanity check */
30949 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
30958 /* extract response and send it to UMAC */
30959 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30960
30961 /* Fill in the indication parameters */
30962 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30963
Dino Mycled3d50022014-07-07 12:58:25 +053030964 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30965 = pLinkLayerStatsInd;
30966
30967 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30968
30969
30970 /* Need to fill in the MAC address */
30971 if ( WDI_STATUS_SUCCESS !=
30972 WDI_STATableGetStaMacAddr(pWDICtx,
30973 halLLStatsResults->iface_id,
30974 &macAddr))
30975 {
30976 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30977 " ifaceId: %u does not exist in the WDI Station Table",
30978 halLLStatsResults->iface_id);
30979
30980 return WDI_STATUS_E_FAILURE;
30981 }
30982 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30983 macAddr, WDI_MAC_ADDR_LEN);
30984
30985 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30986 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30987 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030988
30989 /* Notify UMAC */
30990 if (pWDICtx->wdiLowLevelIndCB)
30991 {
30992 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30993 }
30994 else
30995 {
30996 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30997 "%s: WDILowLevelIndCb is null", __func__);
30998 WDI_ASSERT(0);
30999 return WDI_STATUS_E_FAILURE;
31000 }
31001
31002 return WDI_STATUS_SUCCESS;
31003} /* End of WDI_ProcessLinkLayerStatsResultsInd */
31004#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
31005
Rajeev79dbe4c2013-10-05 11:03:42 +053031006/**
31007 @brief WDI_ProcessSetBatchScanReq -
31008 Set batch scan request to FW
31009
31010 @param pWDICtx : wdi context
31011 pEventData : indication data
31012
31013 @see
31014 @return none
31015*/
31016WDI_Status WDI_ProcessSetBatchScanReq
31017(
31018 WDI_ControlBlockType* pWDICtx,
31019 WDI_EventInfoType* pEventData
31020)
31021{
31022 WDI_SetBatchScanReqType *pWdiReq;
31023 WDI_Status wdiStatus;
31024 wpt_uint8* pSendBuffer = NULL;
31025 wpt_uint16 usDataOffset = 0;
31026 wpt_uint16 usSendSize = 0;
31027 tHalBatchScanSetParams *pHalReq;
31028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31029
31030 /*sanity check*/
31031 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
31032 {
31033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31034 "%s: Invalid parameters in set batch scan request", __func__);
31035 WDI_ASSERT(0);
31036 return WDI_STATUS_E_FAILURE;
31037 }
31038
31039
31040 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
31041
31042
31043 /*get message buffer*/
31044 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
31045 WDI_SET_BATCH_SCAN_REQ,
31046 sizeof(tHalBatchScanSetParams),
31047 &pSendBuffer, &usDataOffset, &usSendSize))||
31048 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
31049 {
31050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31051 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
31052 WDI_ASSERT(0);
31053 return WDI_STATUS_E_FAILURE;
31054 }
31055
31056 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
31057
31058 pHalReq->rtt = pWdiReq->rtt;
31059 pHalReq->rfBand = pWdiReq->rfBand;
31060 pHalReq->bestNetworks = pWdiReq->bestNetwork;
31061 pHalReq->scanInterval = pWdiReq->scanFrequency;
31062 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
31063
31064 /*send set batch scan request to fw*/
31065 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31066 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31067
31068 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31069 usSendSize, pWDICtx->pfncRspCB,
31070 pWDICtx->pReqStatusUserData,
31071 WDI_SET_BATCH_SCAN_RESP);
31072
31073 return wdiStatus;
31074}
31075
31076/**
31077 @brief WDI_SetBatchScanReq
31078 This API is called to set batch scan request in FW
31079
31080 @param pBatchScanReqParam : pointer to set batch scan re param
31081 usrData : Client context
31082 setBatchScanRspCb : set batch scan resp callback
31083 @see
31084 @return SUCCESS or FAIL
31085*/
31086WDI_Status WDI_SetBatchScanReq
31087(
31088 void *pBatchScanReqParam,
31089 void *usrData,
31090 WDI_SetBatchScanCb setBatchScanRspCb
31091)
31092{
31093 WDI_EventInfoType wdiEventData;
31094
31095 /*sanity check*/
31096 if (eWLAN_PAL_FALSE == gWDIInitialized)
31097 {
31098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31099 "WDI API call before module is initialized - Fail request");
31100
31101 return WDI_STATUS_E_NOT_ALLOWED;
31102 }
31103
31104 /* fill in event data and post to the main FSM */
31105 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
31106 wdiEventData.pEventData = pBatchScanReqParam;
31107 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
31108 wdiEventData.pCBfnc = setBatchScanRspCb;
31109 wdiEventData.pUserData = usrData;
31110
31111 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31112}
31113
31114/**
31115 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
31116
31117 @param None
31118
31119 @see
31120
31121 @return Status of the request
31122*/
31123WDI_Status
31124WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
31125{
31126 WDI_EventInfoType wdiEventData;
31127
31128 /*-------------------------------------------------------------------------
31129 Sanity Check
31130 ------------------------------------------------------------------------*/
31131 if (eWLAN_PAL_FALSE == gWDIInitialized)
31132 {
31133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31134 "WDI API call before module is initialized - Fail request!");
31135
31136 return WDI_STATUS_E_NOT_ALLOWED;
31137 }
31138
31139 /*-------------------------------------------------------------------------
31140 Fill in Event data and post to the Main FSM
31141 ------------------------------------------------------------------------*/
31142 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
31143 wdiEventData.pEventData = pWdiReq;
31144 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
31145 wdiEventData.pCBfnc = NULL;
31146 wdiEventData.pUserData = NULL;
31147
31148 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31149}
31150
31151/**
31152 @brief WDI_TriggerBatchScanResultInd
31153 This API is called to pull batch scan result from FW
31154
31155 @param pWdiReq : pointer to get batch scan ind param
31156 @see
31157 @return SUCCESS or FAIL
31158*/
31159WDI_Status WDI_TriggerBatchScanResultInd
31160(
31161 WDI_TriggerBatchScanResultIndType *pWdiReq
31162)
31163{
31164 WDI_EventInfoType wdiEventData;
31165 /*-------------------------------------------------------------------------
31166 Sanity Check
31167 ------------------------------------------------------------------------*/
31168 if (eWLAN_PAL_FALSE == gWDIInitialized)
31169 {
31170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31171 "WDI API call before module is initialized - Fail request!");
31172
31173 return WDI_STATUS_E_NOT_ALLOWED;
31174 }
31175
31176 /*-------------------------------------------------------------------------
31177 Fill in Event data and post to the Main FSM
31178 ------------------------------------------------------------------------*/
31179 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
31180 wdiEventData.pEventData = pWdiReq;
31181 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
31182 wdiEventData.pCBfnc = NULL;
31183 wdiEventData.pUserData = NULL;
31184
31185 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31186}
Rajeev79dbe4c2013-10-05 11:03:42 +053031187#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080031188
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080031189/**
31190 @brief Process Update Channel Rsp function (called when a response is
31191 being received over the bus from HAL)
31192
31193 @param pWDICtx: pointer to the WLAN DAL context
31194 pEventData: pointer to the event information structure
31195
31196 @see
31197 @return Result of the function call
31198*/
31199WDI_Status
31200WDI_ProcessUpdateChanRsp
31201(
31202 WDI_ControlBlockType* pWDICtx,
31203 WDI_EventInfoType* pEventData
31204)
31205{
31206 WDI_Status wdiStatus;
31207 eHalStatus halStatus;
31208 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
31209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31210
31211 /*-------------------------------------------------------------------------
31212 Sanity check
31213 -------------------------------------------------------------------------*/
31214 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31215 ( NULL == pEventData->pEventData))
31216 {
31217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31218 "%s: Invalid parameters", __func__);
31219 WDI_ASSERT(0);
31220 return WDI_STATUS_E_FAILURE;
31221 }
31222
31223 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
31224
31225 /*-------------------------------------------------------------------------
31226 Extract response and send it to UMAC
31227 -------------------------------------------------------------------------*/
31228 halStatus = *((eHalStatus*)pEventData->pEventData);
31229 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31230
31231 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
31232
31233 return WDI_STATUS_SUCCESS;
31234}/*WDI_ProcessUpdateChanRsp*/
31235
Leo Chang0b0e45a2013-12-15 15:18:55 -080031236#ifdef FEATURE_WLAN_CH_AVOID
31237/**
31238 @brief v -WDI_ProcessChAvoidInd
31239
31240
31241 @param pWDICtx : wdi context
31242 pEventData : indication data
31243 @see
31244 @return Result of the function call
31245*/
31246WDI_Status
31247WDI_ProcessChAvoidInd
31248(
31249 WDI_ControlBlockType* pWDICtx,
31250 WDI_EventInfoType* pEventData
31251)
31252{
31253 WDI_LowLevelIndType wdiInd;
31254 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31255 wpt_uint16 rangeLoop;
31256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31257
31258 /*-------------------------------------------------------------------------
31259 Sanity check
31260 -------------------------------------------------------------------------*/
31261 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31262 (NULL == pEventData->pEventData))
31263 {
31264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31265 "%s: Invalid parameters", __func__);
31266 WDI_ASSERT(0);
31267 return WDI_STATUS_E_FAILURE;
31268 }
31269
31270 /*-------------------------------------------------------------------------
31271 Extract indication and send it to UMAC
31272 -------------------------------------------------------------------------*/
31273 wpalMemoryCopy(&chAvoidIndicationParam,
31274 pEventData->pEventData,
31275 sizeof(tHalAvoidFreqRangeIndParams));
31276
Abhishek Singhe34eb552015-06-18 10:12:15 +053031277 /* Avoid Over flow */
31278 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31279 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31280
Leo Chang0b0e45a2013-12-15 15:18:55 -080031281 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31282 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31283 chAvoidIndicationParam.avoidCnt;
31284 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31285 (void *)chAvoidIndicationParam.avoidRange,
31286 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31287 sizeof(WDI_ChAvoidFreqType));
31288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31289 "%s: band count %d", __func__,
31290 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31291 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31292 {
31293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31294 "%s: srart freq %d, end freq %d", __func__,
31295 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31296 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31297 }
31298
31299 /*Notify UMAC*/
31300 if (pWDICtx->wdiLowLevelIndCB)
31301 {
31302 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31303 }
31304
31305 return WDI_STATUS_SUCCESS;
31306}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031307
Leo Chang0b0e45a2013-12-15 15:18:55 -080031308#endif /* FEATURE_WLAN_CH_AVOID */
31309
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031310/**
31311 @brief Process OBSS Start scan result indication
31312
31313 @param pWDICtx: pointer to the WLAN DAL context
31314 pEventData: pointer to the event information structure
31315
31316 @see
31317 @return Result of the function call
31318*/
31319WDI_Status
31320WDI_ProcessHT40OBSSScanInd
31321(
31322 WDI_ControlBlockType* pWDICtx,
31323 WDI_EventInfoType* pEventData
31324)
31325{
31326 wpt_uint8* pSendBuffer = NULL;
31327 wpt_uint16 usDataOffset = 0;
31328 wpt_uint16 usSendSize = 0;
31329 wpt_uint16 usLen = 0;
31330 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31331 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31332 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31333 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31334
31335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31336
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031338 "%s", __func__);
31339
31340 /*-------------------------------------------------------------------------
31341 Sanity check
31342 -------------------------------------------------------------------------*/
31343 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31344 {
31345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31346 "%s: Invalid parameters", __func__);
31347 WDI_ASSERT(0);
31348 return WDI_STATUS_E_FAILURE;
31349 }
31350 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31351
31352 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31353 /*-----------------------------------------------------------------------
31354 Get message buffer
31355 -----------------------------------------------------------------------*/
31356
31357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31358 WDI_START_HT40_OBSS_SCAN_IND,
31359 sizeof(tHT40ObssScanIndType),
31360 &pSendBuffer, &usDataOffset, &usSendSize))||
31361 ( usSendSize < (usDataOffset + usLen )))
31362 {
31363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31364 "Unable to get send buffer in HT40 OBSS Start req %p ",
31365 pEventData);
31366 WDI_ASSERT(0);
31367 return WDI_STATUS_E_FAILURE;
31368 }
31369 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31370 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31371 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31372 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31373 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31374 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31375 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31376 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31377 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31378 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31379 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31380 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31381 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31382 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31383 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31384 pHT40ObssScanInd->OBSSScanActivityThreshold =
31385 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31386 pHT40ObssScanInd->selfStaIdx =
31387 pwdiHT40OBSSScanInd->selfStaIdx;
31388 pHT40ObssScanInd->bssIdx =
31389 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031390 pHT40ObssScanInd->currentOperatingClass =
31391 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031392 pHT40ObssScanInd->fortyMHZIntolerent =
31393 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31394 pHT40ObssScanInd->channelCount =
31395 pwdiHT40OBSSScanInd->channelCount;
31396
31397 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31398 WDI_ROAM_SCAN_MAX_CHANNELS);
31399 pHT40ObssScanInd->ieFieldLen =
31400 pwdiHT40OBSSScanInd->ieFieldLen;
31401
31402 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31403 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31404 pWDICtx->pReqStatusUserData = NULL;
31405 pWDICtx->pfncRspCB = NULL;
31406
31407 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31408 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31409
31410 /*-------------------------------------------------------------------------
31411 Send OBSS Start Indication to HAL
31412 -------------------------------------------------------------------------*/
31413 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31414 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31415
31416} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31417
31418
31419/**
31420 @brief wdi_HT40OBSSScanInd
31421 This API is called to start OBSS scan
31422
31423 @param pWdiReq : pointer to get ind param
31424 @see
31425 @return SUCCESS or FAIL
31426*/
31427WDI_Status WDI_HT40OBSSScanInd
31428(
31429 WDI_HT40ObssScanParamsType *pWdiReq
31430)
31431{
31432 WDI_EventInfoType wdiEventData;
31433
31434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31435 "%s", __func__);
31436 /*-------------------------------------------------------------------------
31437 Sanity Check
31438 ------------------------------------------------------------------------*/
31439 if (eWLAN_PAL_FALSE == gWDIInitialized)
31440 {
31441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31442 "WDI API call before module is initialized - Fail request!");
31443
31444 return WDI_STATUS_E_NOT_ALLOWED;
31445 }
31446
31447 /*-------------------------------------------------------------------------
31448 Fill in Event data and post to the Main FSM
31449 ------------------------------------------------------------------------*/
31450 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31451 wdiEventData.pEventData = pWdiReq;
31452 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31453 wdiEventData.pCBfnc = NULL;
31454 wdiEventData.pUserData = NULL;
31455
31456
31457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31458}
31459
31460/**
31461 @brief Process OBSS Stop scan result
31462
31463 @param pWDICtx: pointer to the WLAN DAL context
31464 pEventData: pointer to the event information structure
31465
31466 @see
31467 @return Result of the function call
31468*/
31469WDI_Status
31470WDI_ProcessHT40OBSSStopScanInd
31471(
31472 WDI_ControlBlockType* pWDICtx,
31473 WDI_EventInfoType* pEventData
31474)
31475{
31476 wpt_uint8* pSendBuffer = NULL;
31477 wpt_uint16 usDataOffset = 0;
31478 wpt_uint16 usSendSize = 0;
31479 wpt_uint16 usLen = 0;
31480 wpt_uint8 *wdiBssIdx = 0;
31481 tANI_U8 *bssIdx = 0;
31482 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31483
31484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31485
31486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31487 "%s", __func__);
31488
31489 /*-------------------------------------------------------------------------
31490 Sanity check
31491 -------------------------------------------------------------------------*/
31492 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31493 {
31494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31495 "%s: Invalid parameters", __func__);
31496 WDI_ASSERT(0);
31497 return WDI_STATUS_E_FAILURE;
31498 }
31499 bssIdx = (wpt_uint8*)pEventData->pEventData;
31500 /*-----------------------------------------------------------------------
31501 Get message buffer
31502 -----------------------------------------------------------------------*/
31503
31504 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31505 WDI_STOP_HT40_OBSS_SCAN_IND,
31506 sizeof(tANI_U8),
31507 &pSendBuffer, &usDataOffset, &usSendSize))||
31508 ( usSendSize < (usDataOffset + usLen )))
31509 {
31510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31511 "Unable to get send buffer in HT40 OBSS Start req %p ",
31512 pEventData);
31513 WDI_ASSERT(0);
31514 return WDI_STATUS_E_FAILURE;
31515 }
31516
31517 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31518 bssIdx = wdiBssIdx;
31519
31520 pWDICtx->pReqStatusUserData = NULL;
31521 pWDICtx->pfncRspCB = NULL;
31522
31523 /*-------------------------------------------------------------------------
31524 Send DHCP Start Indication to HAL
31525 -------------------------------------------------------------------------*/
31526 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31527 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31528} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31529
31530/**
31531 @brief WDI_HT40OBSSStopScanInd
31532 This API is called to start OBSS scan
31533 @param pWdiReq : pointer to get ind param
31534 @see
31535 @return SUCCESS or FAIL
31536*/
31537WDI_Status WDI_HT40OBSSStopScanInd
31538(
31539 wpt_uint8 bssIdx
31540)
31541{
31542 WDI_EventInfoType wdiEventData;
31543
31544 /*-------------------------------------------------------------------------
31545 Sanity Check
31546 ------------------------------------------------------------------------*/
31547 if (eWLAN_PAL_FALSE == gWDIInitialized)
31548 {
31549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31550 "WDI API call before module is initialized - Fail request!");
31551
31552 return WDI_STATUS_E_NOT_ALLOWED;
31553 }
31554
31555 /*-------------------------------------------------------------------------
31556 Fill in Event data and post to the Main FSM
31557 ------------------------------------------------------------------------*/
31558 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31559 wdiEventData.pEventData = &bssIdx;
31560 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31561 wdiEventData.pCBfnc = NULL;
31562 wdiEventData.pUserData = NULL;
31563
31564 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31565}
31566
c_hpothu86041002014-04-14 19:06:51 +053031567WDI_Status
31568WDI_printRegInfo
31569(
31570 WDI_ControlBlockType* pWDICtx,
31571 WDI_EventInfoType* pEventData
31572)
31573{
31574 tHalRegDebugInfo *pRegTable;
31575 tHalRegDebugInfoParams *pRegParams;
31576 uint32 cnt=0;
31577
31578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31579 "%s: ", __func__);
31580 /*-------------------------------------------------------------------------
31581 Sanity check
31582 -------------------------------------------------------------------------*/
31583 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31584 ( NULL == pEventData->pEventData))
31585 {
31586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31587 "%s: Invalid parameters", __func__);
31588 WDI_ASSERT(0);
31589 return WDI_STATUS_E_FAILURE;
31590 }
31591
31592 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31593
31594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31595 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31596 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31597
31598 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31599
31600 if (pRegParams->regCount <= 0)
31601 {
31602 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31603 "%s incorrect parameters passed", __func__);
31604 return WDI_STATUS_E_FAILURE;
31605 }
31606
31607 while(pRegParams->regCount--)
31608 {
31609 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31610 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31611 cnt++;
31612 }
31613
31614 return WDI_STATUS_SUCCESS;
31615}
c_hpothu92367912014-05-01 15:18:17 +053031616
31617/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031618 * FUNCTION: WDI_delBaInd
31619 * send the delBA to peer.
31620 */
31621
31622WDI_Status
31623WDI_delBaInd
31624(
31625 WDI_ControlBlockType* pWDICtx,
31626 WDI_EventInfoType* pEventData
31627
31628)
31629{
31630 tHalWlanDelBaIndMsg halDelBaInd;
31631 WDI_LowLevelIndType wdiInd;
31632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31633
31634 /*-------------------------------------------------------------------------
31635 Sanity check
31636 -------------------------------------------------------------------------*/
31637 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31638 ( NULL == pEventData->pEventData))
31639 {
31640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31641 "%s: Invalid parameters", __func__);
31642 WDI_ASSERT(0);
31643 return WDI_STATUS_E_FAILURE;
31644 }
31645
31646 /*-------------------------------------------------------------------------
31647 Extract indication and send it to UMAC
31648 -------------------------------------------------------------------------*/
31649
31650 /* Parameters need to be unpacked according to HAL struct*/
31651 wpalMemoryCopy( &halDelBaInd,
31652 pEventData->pEventData,
31653 sizeof(halDelBaInd));
31654
31655 /*Fill in the indication parameters*/
31656 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31657
31658 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31659 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31660 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31661
31662 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31663 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31664 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31665
31666 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31667 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31668 if ( pWDICtx->wdiLowLevelIndCB )
31669 {
31670 /*Notify UMAC*/
31671 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31672 }
31673
31674 return WDI_STATUS_SUCCESS;
31675
31676
31677}
31678
31679/*
c_hpothu92367912014-05-01 15:18:17 +053031680 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31681 * send the response to PE with beacon miss count
31682 * received from WDI.
31683 */
31684WDI_Status
31685WDI_ProcessGetBcnMissRateRsp
31686(
31687 WDI_ControlBlockType* pWDICtx,
31688 WDI_EventInfoType* pEventData
31689)
31690{
31691 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31692 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31693
31694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31695 "In %s",__func__);
31696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31697
31698 /*-------------------------------------------------------------------------
31699 Sanity check
31700 -------------------------------------------------------------------------*/
31701 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31702 ( NULL == pEventData->pEventData))
31703 {
31704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31705 "%s: Invalid parameters", __func__);
31706 WDI_ASSERT(0);
31707 return WDI_STATUS_E_FAILURE;
31708 }
31709
31710 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31711 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31712
31713 /*Notify UMAC*/
31714 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31715 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31716 return WDI_STATUS_SUCCESS;
31717}
31718
31719/*
31720 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31721 * Request to WDI to get missed beacon rate.
31722 */
31723WDI_Status
31724WDI_ProcessGetBcnMissRateReq
31725(
31726 WDI_ControlBlockType* pWDICtx,
31727 WDI_EventInfoType* pEventData
31728)
31729{
31730 wpt_uint8* pSendBuffer = NULL;
31731 wpt_uint16 usDataOffset = 0;
31732 wpt_uint16 usSendSize = 0;
31733 wpt_uint8 ucCurrentBSSSesIdx = 0;
31734 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031735 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31736 tHalBcnMissRateReqParams halBcnMissRateReq;
31737
31738/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31739
31740 /*-------------------------------------------------------------------------
31741 Sanity check
31742 -------------------------------------------------------------------------*/
31743 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31744 ( NULL == pEventData->pCBfnc ) )
31745 {
31746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31747 "%s: Invalid parameters", __func__);
31748 WDI_ASSERT(0);
31749 return WDI_STATUS_E_FAILURE;
31750 }
31751
31752 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31753
31754 wpalMutexAcquire(&pWDICtx->wptMutex);
31755
31756 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31757 pEventData->pEventData, &pBSSSes);
31758 if ( NULL == pBSSSes )
31759 {
31760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31761 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031762 MAC_ADDRESS_STR, __func__,
31763 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031764 wpalMutexRelease(&pWDICtx->wptMutex);
31765 return WDI_STATUS_E_NOT_ALLOWED;
31766 }
31767 wpalMutexRelease(&pWDICtx->wptMutex);
31768
31769 /*-----------------------------------------------------------------------
31770 Get message buffer
31771 -----------------------------------------------------------------------*/
31772 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31773 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31774 sizeof(tHalBcnMissRateReqParams),
31775 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31776 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31777 {
31778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31779 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31780 pEventData);
31781 WDI_ASSERT(0);
31782 return WDI_STATUS_E_FAILURE;
31783 }
31784
31785 pWDICtx->wdiReqStatusCB = NULL;
31786 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31787
31788 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31789
31790 wpalMemoryCopy( pSendBuffer+usDataOffset,
31791 &halBcnMissRateReq,
31792 sizeof(tHalBcnMissRateReqParams));
31793 /*-------------------------------------------------------------------------
31794 Send Get STA Request to HAL
31795 -------------------------------------------------------------------------*/
31796 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31797 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31798}
31799
31800/**
31801 @brief WDI_GetBcnMissRate
31802
31803 @param pUserData: user data will be passed back with the
31804 callback
31805 WDI_GetBcnMissRateCb: callback for passing back the response
31806 of the get stats operation received from the device
31807 bssid: bssid, to send bssIdx to FW
31808
31809 @return SUCCESS or FAIL
31810*/
31811WDI_Status WDI_GetBcnMissRate( void *pUserData,
31812 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31813 tANI_U8 *bssid )
31814{
31815 WDI_EventInfoType wdiEventData;
31816
31817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31818
31819 /*------------------------------------------------------------------------
31820 Sanity Check
31821 ------------------------------------------------------------------------*/
31822 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31823 {
31824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31825 "WDI API call before module is initialized - Fail request");
31826
31827 return WDI_STATUS_E_NOT_ALLOWED;
31828 }
31829
31830 /*------------------------------------------------------------------------
31831 Fill in Event data and post to the Main FSM
31832 ------------------------------------------------------------------------*/
31833 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31834 wdiEventData.pEventData = bssid;
31835 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31836 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31837 wdiEventData.pUserData = pUserData;
31838
31839 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31840}
Abhishek Singh85b74712014-10-08 11:38:19 +053031841
31842/*
31843 * FUNCTION: WDI_ProcessGetFwStatsRsp
31844 * send the response with FW stats asked.
31845 */
31846WDI_Status
31847 WDI_ProcessGetFwStatsRsp
31848(
31849 WDI_ControlBlockType* pWDICtx,
31850 WDI_EventInfoType* pEventData
31851)
31852{
31853 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31854 tpHalfwStatsRspParams pHalFwstatsRsp;
31855 WDI_FWStatsResults fwStats;
31856
31857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31858
31859 /*-------------------------------------------------------------------------
31860 Sanity check
31861 -------------------------------------------------------------------------*/
31862 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31863 ( NULL == pEventData->pEventData))
31864 {
31865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31866 "%s: Invalid parameters", __func__);
31867 WDI_ASSERT(0);
31868 return WDI_STATUS_E_FAILURE;
31869 }
31870 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31871 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31872
31873 if(pHalFwstatsRsp->length)
31874 {
31875 switch( pHalFwstatsRsp->type )
31876 {
31877 case FW_UBSP_STATS:
31878 {
31879 ubspFwStats *ubspStatsfromFw;
31880
31881 fwStats.type = pHalFwstatsRsp->type;
31882 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31883 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31884 ubspStatsfromFw->ubsp_enter_cnt;
31885 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31886 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31887 }
31888 break;
31889 default:
31890 {
31891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31892 "%s: No handling for stats type %d", __func__,
31893 pHalFwstatsRsp->type);
31894 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31895 NULL, pWDICtx->pRspCBUserData);
31896 return WDI_STATUS_E_FAILURE;
31897 }
31898 }
31899 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31900 }
31901 else
31902 {
31903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31904 "%s: Length = 0 for type %d return failure ", __func__,
31905 pHalFwstatsRsp->type);
31906 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31907 NULL, pWDICtx->pRspCBUserData);
31908 return WDI_STATUS_E_FAILURE;
31909 }
31910 return WDI_STATUS_SUCCESS;
31911}
31912
31913/*
31914 * FUNCTION: WDI_ProcessGetFwStatsReq
31915 * Request to WDI to get FW Stats.
31916 */
31917WDI_Status
31918 WDI_ProcessGetFwStatsReq
31919(
31920 WDI_ControlBlockType* pWDICtx,
31921 WDI_EventInfoType* pEventData
31922)
31923{
31924 wpt_uint8* pSendBuffer = NULL;
31925 wpt_uint16 usDataOffset = 0;
31926 wpt_uint16 usSendSize = 0;
31927 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31928 tHalfwStatsReqParams halFwStatsReq;
31929
31930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31931
31932 /*-------------------------------------------------------------------------
31933 Sanity check
31934 -------------------------------------------------------------------------*/
31935 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31936 ( NULL == pEventData->pCBfnc ) )
31937 {
31938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31939 "%s: Invalid parameters", __func__);
31940 WDI_ASSERT(0);
31941 return WDI_STATUS_E_FAILURE;
31942 }
31943
31944 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31945
31946 /*-----------------------------------------------------------------------
31947 Get message buffer
31948 -----------------------------------------------------------------------*/
31949 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31950 pWDICtx, WDI_GET_FW_STATS_REQ,
31951 sizeof(tHalfwStatsReqParams),
31952 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31953 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31954 {
31955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31956 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31957 pEventData);
31958 WDI_ASSERT(0);
31959 return WDI_STATUS_E_FAILURE;
31960 }
31961
31962 pWDICtx->wdiReqStatusCB = NULL;
31963 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31964 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31965 wpalMemoryCopy( pSendBuffer+usDataOffset,
31966 &halFwStatsReq,
31967 sizeof(tHalfwStatsReqParams));
31968 /*-------------------------------------------------------------------------
31969 Send Get STA Request to HAL
31970 -------------------------------------------------------------------------*/
31971 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31972 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31973}
31974
Sunil Duttbd736ed2014-05-26 21:19:41 +053031975#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31976
31977/**
31978 @brief WDI_LLStatsSetReq
31979 This API is called to set link layer stats request in FW
31980
31981 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31982 wdiLLStatsSetRspCb : set link layer stats resp callback
31983 usrData : Client context
31984 @see
31985 @return SUCCESS or FAIL
31986*/
31987WDI_Status
31988WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31989 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31990 void* pUserData)
31991{
31992 WDI_EventInfoType wdiEventData;
31993
31994 /*------------------------------------------------------------------------
31995 Sanity Check
31996 ------------------------------------------------------------------------*/
31997 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31998 {
31999 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32000 "WDI API call before module is initialized - Fail request");
32001
32002 return WDI_STATUS_E_NOT_ALLOWED;
32003 }
32004
32005 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
32006 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
32007 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
32008 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
32009 wdiEventData.pUserData = pUserData;
32010
32011 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32012}
32013
32014/**
32015 @brief WDI_ProcessLLStatsSetReq -
32016 Set Link Layer Stats request to FW
32017
32018 @param pWDICtx : wdi context
32019 pEventData : indication data
32020
32021 @see
32022 @return none
32023*/
32024WDI_Status
32025WDI_ProcessLLStatsSetReq
32026(
32027 WDI_ControlBlockType* pWDICtx,
32028 WDI_EventInfoType* pEventData
32029)
32030{
32031 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
32032 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
32033 wpt_uint8* pSendBuffer = NULL;
32034 wpt_uint16 usSendSize = 0;
32035 wpt_uint16 usDataOffset = 0;
32036 tHalMacLlSetStatsReqParams halLLStatsSetParams;
32037
32038 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32039 ( NULL == pEventData->pCBfnc ))
32040 {
32041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32042 "%s: Invalid parameters", __func__);
32043 WDI_ASSERT(0);
32044 return WDI_STATUS_E_FAILURE;
32045 }
32046
32047 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
32048 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
32049
32050 /*-----------------------------------------------------------------------
32051 Get message buffer
32052 ! TO DO : proper conversion into the HAL Message Request Format
32053 -----------------------------------------------------------------------*/
32054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32055 pWDICtx,
32056 WDI_LL_STATS_SET_REQ,
32057 sizeof(tHalMacLlSetStatsReqParams),
32058 &pSendBuffer, &usDataOffset,
32059 &usSendSize))||
32060 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
32061 {
32062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32063 "Unable to get send buffer in %s %p %p %p", __func__,
32064 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
32065 WDI_ASSERT(0);
32066 return WDI_STATUS_E_FAILURE;
32067 }
32068
32069
Dino Mycled3d50022014-07-07 12:58:25 +053032070 /* Need to fill in the self STA Index */
32071 if ( WDI_STATUS_SUCCESS !=
32072 WDI_STATableFindStaidByAddr(pWDICtx,
32073 pwdiLLStatsSetReqParams->macAddr,
32074 &halLLStatsSetParams.sta_id))
32075 {
32076 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32077 MAC_ADDRESS_STR
32078 ": This station does not exist in the WDI Station Table",
32079 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
32080
32081 wpalMemoryFree(pSendBuffer);
32082 return WDI_STATUS_E_FAILURE;
32083 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032084
32085 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032086 halLLStatsSetParams.mpdu_size_threshold =
32087 pwdiLLStatsSetReqParams->mpduSizeThreshold;
32088 halLLStatsSetParams.aggressive_statistics_gathering =
32089 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
32090
32091 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32092 " halLLStatsSetParams.req_id = %u",
32093 halLLStatsSetParams.req_id);
32094 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32095 " halLLStatsSetParams.sta_id = %u",
32096 halLLStatsSetParams.sta_id);
32097 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32098 " halLLStatsSetParams.mpdu_size_threshold = %u",
32099 halLLStatsSetParams.mpdu_size_threshold);
32100 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32101 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
32102 halLLStatsSetParams.aggressive_statistics_gathering);
32103
32104 wpalMemoryCopy(pSendBuffer+usDataOffset,
32105 &halLLStatsSetParams,
32106 sizeof(halLLStatsSetParams));
32107
32108 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32109
32110 /*-------------------------------------------------------------------------
32111 Send Clear Link Layer Stats Request to HAL
32112 -------------------------------------------------------------------------*/
32113 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32114 wdiLLStatsSetCb, pEventData->pUserData,
32115 WDI_LL_STATS_SET_RSP);
32116}
32117
32118/**
32119 @brief WDI_LLStatsGetReq
32120 This API is called to get link layer stats request in FW
32121
32122 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
32123 wdiLLStatsGetRspCb : get link layer stats resp callback
32124 usrData : Client context
32125 @see
32126 @return SUCCESS or FAIL
32127*/
32128WDI_Status
32129WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
32130 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
32131 void* pUserData)
32132{
32133 WDI_EventInfoType wdiEventData;
32134
32135 /*------------------------------------------------------------------------
32136 Sanity Check
32137 ------------------------------------------------------------------------*/
32138 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32139 {
32140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32141 "WDI API call before module is initialized - Fail request");
32142
32143 return WDI_STATUS_E_NOT_ALLOWED;
32144 }
32145
32146 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
32147 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
32148 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
32149 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
32150 wdiEventData.pUserData = pUserData;
32151
32152 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32153}
32154
32155/**
32156 @brief WDI_ProcessLLStatsGetReq -
32157 Get Link Layer Stats request to FW
32158
32159 @param pWDICtx : wdi context
32160 pEventData : indication data
32161
32162 @see
32163 @return none
32164*/
32165WDI_Status
32166WDI_ProcessLLStatsGetReq
32167(
32168 WDI_ControlBlockType* pWDICtx,
32169 WDI_EventInfoType* pEventData
32170)
32171{
32172 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
32173 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
32174 wpt_uint8* pSendBuffer = NULL;
32175 wpt_uint16 usSendSize = 0;
32176 wpt_uint16 usDataOffset = 0;
32177 tHalMacLlGetStatsReqParams halLLStatsGetParams;
32178
32179 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32180 ( NULL == pEventData->pCBfnc ))
32181 {
32182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32183 "%s: Invalid parameters", __func__);
32184 WDI_ASSERT(0);
32185 return WDI_STATUS_E_FAILURE;
32186 }
32187
32188 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
32189 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
32190
32191 /*-----------------------------------------------------------------------
32192 Get message buffer
32193 ! TO DO : proper conversion into the HAL Message Request Format
32194 -----------------------------------------------------------------------*/
32195 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32196 pWDICtx,
32197 WDI_LL_STATS_GET_REQ,
32198 sizeof(tHalMacLlGetStatsReqParams),
32199 &pSendBuffer, &usDataOffset,
32200 &usSendSize))||
32201 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
32202 {
32203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32204 "Unable to get send buffer in %s %p %p %p", __func__,
32205 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
32206 WDI_ASSERT(0);
32207 return WDI_STATUS_E_FAILURE;
32208 }
Dino Mycled3d50022014-07-07 12:58:25 +053032209 /* Need to fill in the self STA Index */
32210 if ( WDI_STATUS_SUCCESS !=
32211 WDI_STATableFindStaidByAddr(pWDICtx,
32212 pwdiLLStatsGetReqParams->macAddr,
32213 &halLLStatsGetParams.sta_id))
32214 {
32215 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32216 MAC_ADDRESS_STR
32217 ": This station does not exist in the WDI Station Table",
32218 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
32219
32220 wpalMemoryFree(pSendBuffer);
32221 return WDI_STATUS_E_FAILURE;
32222 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032223
32224 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032225 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
32226
32227 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32228 " halLLStatsGetParams.req_id = %u",
32229 halLLStatsGetParams.req_id);
32230 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32231 " halLLStatsGetParams.staId = %u",
32232 halLLStatsGetParams.sta_id);
32233 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32234 " halLLStatsGetParams.Mask = %u",
32235 halLLStatsGetParams.param_id_mask);
32236
32237 wpalMemoryCopy(pSendBuffer+usDataOffset,
32238 &halLLStatsGetParams,
32239 sizeof(halLLStatsGetParams));
32240
32241 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32242
32243 /*-------------------------------------------------------------------------
32244 Send Clear Link Layer Stats Request to HAL
32245 -------------------------------------------------------------------------*/
32246 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32247 wdiLLStatsGetCb, pEventData->pUserData,
32248 WDI_LL_STATS_GET_RSP);
32249}
32250
32251/**
32252 @brief WDI_LLStatsClearReq
32253 This API is called to clear link layer stats request in FW
32254
32255 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32256 wdiLLStatsSetRspCb : clear link layer stats resp callback
32257 usrData : Client context
32258 @see
32259 @return SUCCESS or FAIL
32260*/
32261WDI_Status
32262WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32263 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32264 void* pUserData)
32265{
32266 WDI_EventInfoType wdiEventData;
32267
32268 /*------------------------------------------------------------------------
32269 Sanity Check
32270 ------------------------------------------------------------------------*/
32271 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32272 {
32273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32274 "WDI API call before module is initialized - Fail request");
32275
32276 return WDI_STATUS_E_NOT_ALLOWED;
32277 }
32278
32279 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32280 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32281 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32282 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32283 wdiEventData.pUserData = pUserData;
32284
32285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32286 "%s:%d Enter", __func__, __LINE__);
32287
32288 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32289}
32290
32291/**
32292 @brief WDI_ProcessLLStatsClearReq -
32293 Clear Link Layer Stats request to FW
32294
32295 @param pWDICtx : wdi context
32296 pEventData : indication data
32297
32298 @see
32299 @return none
32300*/
32301WDI_Status
32302WDI_ProcessLLStatsClearReq
32303(
32304 WDI_ControlBlockType* pWDICtx,
32305 WDI_EventInfoType* pEventData
32306)
32307{
32308 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32309 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32310 wpt_uint8* pSendBuffer = NULL;
32311 wpt_uint16 usSendSize = 0;
32312 wpt_uint16 usDataOffset = 0;
32313 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32314
32315 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32316 ( NULL == pEventData->pCBfnc ))
32317 {
32318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32319 "%s: Invalid parameters", __func__);
32320 WDI_ASSERT(0);
32321 return WDI_STATUS_E_FAILURE;
32322 }
32323
32324 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32325 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32326
32327 /*-----------------------------------------------------------------------
32328 Get message buffer
32329 ! TO DO : proper conversion into the HAL Message Request Format
32330 -----------------------------------------------------------------------*/
32331 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32332 pWDICtx,
32333 WDI_LL_STATS_CLEAR_REQ,
32334 sizeof(tHalMacLlClearStatsReqParams),
32335 &pSendBuffer, &usDataOffset,
32336 &usSendSize))||
32337 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32338 {
32339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32340 "Unable to get send buffer in %s %p %p %p", __func__,
32341 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32342 WDI_ASSERT(0);
32343 return WDI_STATUS_E_FAILURE;
32344 }
Dino Mycled3d50022014-07-07 12:58:25 +053032345 /* Need to fill in the self STA Index */
32346 if ( WDI_STATUS_SUCCESS !=
32347 WDI_STATableFindStaidByAddr(pWDICtx,
32348 pwdiLLStatsClearReqParams->macAddr,
32349 &halLLStatsClearParams.sta_id))
32350 {
32351 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32352 MAC_ADDRESS_STR
32353 ": This station does not exist in the WDI Station Table",
32354 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32355
32356 wpalMemoryFree(pSendBuffer);
32357 return WDI_STATUS_E_FAILURE;
32358 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032359
32360 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032361 halLLStatsClearParams.stats_clear_req_mask =
32362 pwdiLLStatsClearReqParams->statsClearReqMask;
32363 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32364
32365 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32366 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32367 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32368 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32369 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32370 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32371 halLLStatsClearParams.stats_clear_req_mask);
32372 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32373 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32374
32375 wpalMemoryCopy(pSendBuffer+usDataOffset,
32376 &halLLStatsClearParams,
32377 sizeof(halLLStatsClearParams));
32378
32379 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32380
32381 /*-------------------------------------------------------------------------
32382 Send Clear Link Layer Stats Request to HAL
32383 -------------------------------------------------------------------------*/
32384 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32385 wdiLLStatsClearCb, pEventData->pUserData,
32386 WDI_LL_STATS_CLEAR_RSP);
32387}
32388#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032389
Abhishek Singh85b74712014-10-08 11:38:19 +053032390WDI_Status WDI_FWStatsGetReq( void* pUserData,
32391 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32392 wpt_uint32 stats)
32393{
32394 WDI_EventInfoType wdiEventData;
32395
32396 /*------------------------------------------------------------------------
32397 Sanity Check
32398 ------------------------------------------------------------------------*/
32399 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32400 {
32401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32402 "WDI API call before module is initialized - Fail request");
32403 return WDI_STATUS_E_NOT_ALLOWED;
32404 }
32405 /*------------------------------------------------------------------------
32406 Fill in Event data and post to the Main FSM
32407 ------------------------------------------------------------------------*/
32408 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32409 wdiEventData.pEventData = (void *)&stats;
32410 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32411 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32412 wdiEventData.pUserData = pUserData;
32413
32414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32415
32416}
32417
Katya Nigamf0511f62015-05-05 16:40:57 +053032418WDI_Status
32419WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032420 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032421 void* pUserData)
32422{
32423 WDI_EventInfoType wdiEventData;
32424
32425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32426 "%s", __func__);
32427
32428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32429 {
32430 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32431 "WDI API call before module is initialized - Fail request");
32432
32433 return WDI_STATUS_E_NOT_ALLOWED;
32434 }
32435
32436 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32437 wdiEventData.pEventData = pwdiMonStartReqParams;
32438 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032439 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032440 wdiEventData.pUserData = pUserData;
32441
32442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32443}
32444
32445WDI_Status
32446WDI_ProcessMonStartReq
32447(
32448 WDI_ControlBlockType* pWDICtx,
32449 WDI_EventInfoType* pEventData
32450)
32451{
32452 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032453 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032454 wpt_uint8* pSendBuffer = NULL;
32455 wpt_uint16 usSendSize = 0;
32456 wpt_uint16 usDataOffset = 0;
32457 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32458
32459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32460 "%s", __func__);
32461
32462 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32463 ( NULL == pEventData->pCBfnc ))
32464 {
32465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32466 "%s: Invalid parameters", __func__);
32467 WDI_ASSERT(0);
32468 return WDI_STATUS_E_FAILURE;
32469 }
32470
32471 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032472 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032473
32474 /*-----------------------------------------------------------------------
32475 Get message buffer
32476 ! TO DO : proper conversion into the HAL Message Request Format
32477 -----------------------------------------------------------------------*/
32478 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32479 pWDICtx,
32480 WDI_MON_START_REQ,
32481 sizeof(tHalEnableMonitorModeReqParams),
32482 &pSendBuffer, &usDataOffset,
32483 &usSendSize))||
32484 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32485 {
32486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32487 "Unable to get send buffer in %s %p %p %p", __func__,
32488 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32489 WDI_ASSERT(0);
32490 return WDI_STATUS_E_FAILURE;
32491 }
32492
32493 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32494 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32495 pwdiMonStartReqParams->ChannelBW);
32496 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32497 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32498 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32499 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32500 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32501 pwdiMonStartReqParams->mmFilters[0].macAddr,
32502 sizeof( wpt_macAddr ));
32503 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32504 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32505 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32506 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32507
32508 wpalMemoryCopy(pSendBuffer+usDataOffset,
32509 &halEnableMonitorModeParams,
32510 sizeof(halEnableMonitorModeParams));
32511
32512 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32513
32514 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32515 wdiMonStartCb, pEventData->pUserData,
32516 WDI_MON_START_RSP);
32517}
32518
32519WDI_Status
32520WDI_ProcessMonStartRsp
32521(
32522 WDI_ControlBlockType* pWDICtx,
32523 WDI_EventInfoType* pEventData
32524)
32525{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032526 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032527
32528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32529 "%s: Enter ", __func__);
32530 /*-------------------------------------------------------------------------
32531 Sanity check
32532 -------------------------------------------------------------------------*/
32533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32534 ( NULL == pEventData->pEventData))
32535 {
32536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32537 "%s: Invalid parameters", __func__);
32538 WDI_ASSERT(0);
32539 return WDI_STATUS_E_FAILURE;
32540 }
32541
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032542 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032543
32544 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32545
32546 return WDI_STATUS_SUCCESS;
32547}
32548
32549WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032550WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032551 void* pUserData)
32552{
32553 WDI_EventInfoType wdiEventData;
32554
32555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32556 "%s", __func__);
32557
32558 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32559 {
32560 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32561 "WDI API call before module is initialized - Fail request");
32562
32563 return WDI_STATUS_E_NOT_ALLOWED;
32564 }
32565
32566 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32567 wdiEventData.pEventData = NULL;
32568 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032569 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032570 wdiEventData.pUserData = pUserData;
32571
32572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32573}
32574
32575WDI_Status
32576WDI_ProcessMonStopReq
32577(
32578 WDI_ControlBlockType* pWDICtx,
32579 WDI_EventInfoType* pEventData
32580)
32581{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032582 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032583 wpt_uint8* pSendBuffer = NULL;
32584 wpt_uint16 usSendSize = 0;
32585 wpt_uint16 usDataOffset = 0;
32586 wpt_uint8 resetConfiguration;
32587
32588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32589 "%s", __func__);
32590
32591 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32592 {
32593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32594 "%s: Invalid parameters", __func__);
32595 WDI_ASSERT(0);
32596 return WDI_STATUS_E_FAILURE;
32597 }
32598
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032599 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032600
32601 /*-----------------------------------------------------------------------
32602 Get message buffer
32603 ! TO DO : proper conversion into the HAL Message Request Format
32604 -----------------------------------------------------------------------*/
32605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32606 pWDICtx,
32607 WDI_MON_STOP_REQ,
32608 sizeof(wpt_uint8),
32609 &pSendBuffer, &usDataOffset,
32610 &usSendSize))||
32611 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32612 {
32613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32614 "Unable to get send buffer in %s %p %p", __func__,
32615 pEventData, wdiMonStopCb);
32616 WDI_ASSERT(0);
32617 return WDI_STATUS_E_FAILURE;
32618 }
32619
32620 wpalMemoryCopy(pSendBuffer+usDataOffset,
32621 &resetConfiguration,
32622 sizeof(wpt_uint8));
32623
32624 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32625
32626 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32627 wdiMonStopCb, pEventData->pUserData,
32628 WDI_MON_STOP_RSP);
32629}
32630
32631WDI_Status
32632WDI_ProcessMonStopRsp
32633(
32634 WDI_ControlBlockType* pWDICtx,
32635 WDI_EventInfoType* pEventData
32636)
32637{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032638 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032639
32640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32641 "%s: Enter ", __func__);
32642 /*-------------------------------------------------------------------------
32643 Sanity check
32644 -------------------------------------------------------------------------*/
32645 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32646 {
32647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32648 "%s: Invalid parameters", __func__);
32649 WDI_ASSERT(0);
32650 return WDI_STATUS_E_FAILURE;
32651 }
32652
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032653 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032654
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032655 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053032656
32657 return WDI_STATUS_SUCCESS;
32658}
32659
Dino Mycle41bdc942014-06-10 11:30:24 +053032660#ifdef WLAN_FEATURE_EXTSCAN
32661
32662/**
32663 @brief Process EXTSCAN BUffer full indication from FW
32664
32665 @param pWDICtx: pointer to the WLAN DAL context
32666 pEventData: pointer to the event information structure
32667
32668 @see
32669 @return Result of the function call
32670*/
32671WDI_Status
32672WDI_ProcessEXTScanProgressInd
32673(
32674 WDI_ControlBlockType* pWDICtx,
32675 WDI_EventInfoType* pEventData
32676)
32677{
32678 WDI_LowLevelIndType wdiInd;
32679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32680
32681 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32682 "%s: ", __func__);
32683
32684 /* sanity check */
32685 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32686 ( NULL == pEventData->pEventData))
32687 {
32688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32689 "%s: Invalid parameters", __func__);
32690 WDI_ASSERT(0);
32691 return WDI_STATUS_E_FAILURE;
32692 }
32693
32694 /* Fill in the indication parameters */
32695 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32696
32697 /* extract response and send it to UMAC */
32698 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32699
32700 /* Notify UMAC */
32701 if (pWDICtx->wdiLowLevelIndCB)
32702 {
32703 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32704 }
32705 else
32706 {
Dino Mycled3d50022014-07-07 12:58:25 +053032707 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032708 "%s: WDILowLevelIndCb is null", __func__);
32709 WDI_ASSERT(0);
32710 return WDI_STATUS_E_FAILURE;
32711 }
32712 return WDI_STATUS_SUCCESS;
32713
32714} /* End of WDI_ProcessEXTScanProgressInd */
32715
32716
32717/**
32718 @brief Process EXTScan Scan Available indication from FW
32719
32720 @param pWDICtx: pointer to the WLAN DAL context
32721 pEventData: pointer to the event information structure
32722
32723 @see
32724 @return Result of the function call
32725*/
32726WDI_Status
32727WDI_ProcessEXTScanScanAvailableInd
32728(
32729 WDI_ControlBlockType* pWDICtx,
32730 WDI_EventInfoType* pEventData
32731)
32732{
32733 WDI_LowLevelIndType wdiInd;
32734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32735
32736 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32737 "%s: ", __func__);
32738
32739 /* sanity check */
32740 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32741 ( NULL == pEventData->pEventData))
32742 {
32743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32744 "%s: Invalid parameters", __func__);
32745 WDI_ASSERT(0);
32746 return WDI_STATUS_E_FAILURE;
32747 }
32748
32749
32750
32751 /* Fill in the indication parameters */
32752 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32753
32754 /* extract response and send it to UMAC */
32755 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32756
32757 /* Notify UMAC */
32758 if (pWDICtx->wdiLowLevelIndCB)
32759 {
32760 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32761 }
32762 else
32763 {
32764 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32765 "%s: WDILowLevelIndCb is null", __func__);
32766 WDI_ASSERT(0);
32767 return WDI_STATUS_E_FAILURE;
32768 }
32769 return WDI_STATUS_SUCCESS;
32770} /* End of WDI_ProcessEXTScanScanDoneInd */
32771
32772/**
32773 @brief Process EXTScan Result Indication indication from FW
32774
32775 @param pWDICtx: pointer to the WLAN DAL context
32776 pEventData: pointer to the event information structure
32777
32778 @see
32779 @return Result of the function call
32780*/
32781WDI_Status
32782WDI_ProcessEXTScanResultInd
32783(
32784 WDI_ControlBlockType* pWDICtx,
32785 WDI_EventInfoType* pEventData
32786)
32787{
32788 WDI_LowLevelIndType wdiInd;
32789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32790
32791 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32792 "%s: ", __func__);
32793
32794 /* sanity check */
32795 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32796 ( NULL == pEventData->pEventData))
32797 {
32798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32799 "%s: Invalid parameters", __func__);
32800 WDI_ASSERT(0);
32801 return WDI_STATUS_E_FAILURE;
32802 }
32803
32804 /* Fill in the indication parameters */
32805 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32806
32807 /* extract response and send it to UMAC */
32808 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32809
32810 /* Notify UMAC */
32811 if (pWDICtx->wdiLowLevelIndCB)
32812 {
32813 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32814 }
32815 else
32816 {
32817 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32818 "%s: WDILowLevelIndCb is null", __func__);
32819 WDI_ASSERT(0);
32820 return WDI_STATUS_E_FAILURE;
32821 }
32822 return WDI_STATUS_SUCCESS;
32823} /* End of WDI_ProcessEXTScanResultInd */
32824
32825/**
32826 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32827
32828 @param pWDICtx: pointer to the WLAN DAL context
32829 pEventData: pointer to the event information structure
32830
32831 @see
32832 @return Result of the function call
32833*/
32834WDI_Status
32835WDI_ProcessEXTScanBssidHotListResultInd
32836(
32837 WDI_ControlBlockType* pWDICtx,
32838 WDI_EventInfoType* pEventData
32839)
32840{
32841 WDI_LowLevelIndType wdiInd;
32842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32843
32844 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32845 "%s: ", __func__);
32846
32847 /* sanity check */
32848 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32849 ( NULL == pEventData->pEventData))
32850 {
32851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32852 "%s: Invalid parameters", __func__);
32853 WDI_ASSERT(0);
32854 return WDI_STATUS_E_FAILURE;
32855 }
32856
32857 /* Fill in the indication parameters */
32858 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32859
32860 /* extract response and send it to UMAC */
32861 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32862
32863 /* Notify UMAC */
32864 if (pWDICtx->wdiLowLevelIndCB)
32865 {
32866 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32867 }
32868 else
32869 {
32870 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32871 "%s: WDILowLevelIndCb is null", __func__);
32872 WDI_ASSERT(0);
32873 return WDI_STATUS_E_FAILURE;
32874 }
32875 return WDI_STATUS_SUCCESS;
32876} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32877
32878/**
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053032879 @brief Process EXTScan SSID Hotlist Result Indication indication from FW
32880
32881 @param pWDICtx: pointer to the WLAN DAL context
32882 pEventData: pointer to the event information structure
32883
32884 @see
32885 @return Result of the function call
32886*/
32887WDI_Status
32888WDI_ProcessEXTScanSsidHotListResultInd
32889(
32890 WDI_ControlBlockType* pWDICtx,
32891 WDI_EventInfoType* pEventData
32892)
32893{
32894 WDI_LowLevelIndType wdiInd;
32895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32896
32897 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32898 "%s: ", __func__);
32899
32900 /* sanity check */
32901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32902 ( NULL == pEventData->pEventData))
32903 {
32904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32905 "%s: Invalid parameters", __func__);
32906 WDI_ASSERT(0);
32907 return WDI_STATUS_E_FAILURE;
32908 }
32909
32910 /* Fill in the indication parameters */
32911 wdiInd.wdiIndicationType = WDI_EXTSCAN_SSID_HOTLIST_RESULT_IND;
32912
32913 /* extract response and send it to UMAC */
32914 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32915
32916 /* Notify UMAC */
32917 if (pWDICtx->wdiLowLevelIndCB)
32918 {
32919 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32920 }
32921 else
32922 {
32923 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32924 "%s: WDILowLevelIndCb is null", __func__);
32925 WDI_ASSERT(0);
32926 return WDI_STATUS_E_FAILURE;
32927 }
32928 return WDI_STATUS_SUCCESS;
32929} /* End of WDI_ProcessEXTScanSsidHotListResultInd */
32930
32931
32932/**
Dino Mycle41bdc942014-06-10 11:30:24 +053032933 @brief WDI_EXTScanGetCapabilitiesReq
32934
32935 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32936 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32937 of the Req operation received from the device
32938 pUserData: user data will be passed back with the callback
32939
32940 @return SUCCESS or FAIL
32941*/
32942WDI_Status
32943WDI_EXTScanGetCapabilitiesReq(
32944 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32945 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32946 void* pUserData)
32947{
32948 WDI_EventInfoType wdiEventData;
32949
32950 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32951 "%s: %d ",__func__, __LINE__);
32952 /*------------------------------------------------------------------------
32953 Sanity Check
32954 ------------------------------------------------------------------------*/
32955 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32956 {
32957 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32958 "WDI API call before module is initialized - Fail request");
32959
32960 return WDI_STATUS_E_NOT_ALLOWED;
32961 }
32962
32963 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32964 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32965 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32966 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32967 wdiEventData.pUserData = pUserData;
32968
32969 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32970}
32971
32972/**
32973 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32974 Extended Scan Get Capability request to FW
32975
32976 @param pWDICtx : wdi context
32977 pEventData : indication data
32978
32979 @see
32980 @return none
32981*/
32982WDI_Status
32983WDI_ProcessEXTScanGetCapabilitiesReq
32984(
32985 WDI_ControlBlockType* pWDICtx,
32986 WDI_EventInfoType* pEventData
32987)
32988{
32989 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32990 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32991 wpt_uint8* pSendBuffer = NULL;
32992 wpt_uint16 usSendSize = 0;
32993 wpt_uint16 usDataOffset = 0;
32994 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32995
32996 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32997 "%s: %d Enter",__func__, __LINE__);
32998
32999 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33000 ( NULL == pEventData->pCBfnc ))
33001 {
33002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33003 "%s: Invalid parameters", __func__);
33004 WDI_ASSERT(0);
33005 return WDI_STATUS_E_FAILURE;
33006 }
33007
33008 pwdiEXTScanGetCapabilitiesReqParams =
33009 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
33010 wdiEXTScanGetCapabilitiesRspCb =
33011 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
33012
33013 /*-----------------------------------------------------------------------
33014 Get message buffer
33015 ! TO DO : proper conversion into the HAL Message Request Format
33016 -----------------------------------------------------------------------*/
33017 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33018 pWDICtx,
33019 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
33020 sizeof(halEXTScanGetCapReqParams),
33021 &pSendBuffer, &usDataOffset,
33022 &usSendSize))||
33023 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
33024 {
33025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33026 "Unable to get send buffer in %s %p %p %p", __func__,
33027 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
33028 wdiEXTScanGetCapabilitiesRspCb);
33029 WDI_ASSERT(0);
33030 return WDI_STATUS_E_FAILURE;
33031 }
33032
33033 halEXTScanGetCapReqParams.requestId =
33034 pwdiEXTScanGetCapabilitiesReqParams->requestId;
33035 halEXTScanGetCapReqParams.sessionId =
33036 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
33037
33038 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33039 " requestId %u "
33040 " sessionId %u ",
33041 halEXTScanGetCapReqParams.requestId,
33042 halEXTScanGetCapReqParams.sessionId);
33043
33044 wpalMemoryCopy(pSendBuffer+usDataOffset,
33045 &halEXTScanGetCapReqParams,
33046 sizeof(halEXTScanGetCapReqParams));
33047
33048 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33049
33050
33051 /*-------------------------------------------------------------------------
33052 Send EXTScan Stop Request to HAL
33053 -------------------------------------------------------------------------*/
33054 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33055 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
33056 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
33057}
33058
33059/**
33060 @brief WDI_EXTScanGetCachedResultsReq
33061
33062 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
33063 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
33064 of the Req operation received from the device
33065 pUserData: user data will be passed back with the callback
33066
33067 @return SUCCESS or FAIL
33068*/
33069
33070WDI_Status
33071WDI_EXTScanGetCachedResultsReq(
33072 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
33073 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
33074 void* pUserData)
33075{
33076 WDI_EventInfoType wdiEventData;
33077
33078 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33079 "%s: %d Enter",__func__, __LINE__);
33080 /*------------------------------------------------------------------------
33081 Sanity Check
33082 ------------------------------------------------------------------------*/
33083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33084 {
33085 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33086 "WDI API call before module is initialized - Fail request");
33087
33088 return WDI_STATUS_E_NOT_ALLOWED;
33089 }
33090
33091 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
33092 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
33093 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
33094 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
33095 wdiEventData.pUserData = pUserData;
33096
33097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33098}
33099
33100/**
33101 @brief WDI_ProcessEXTScanGetCachedResultsReq -
33102 Extended Scan Get Cached Result request to FW
33103
33104 @param pWDICtx : wdi context
33105 pEventData : indication data
33106
33107 @see
33108 @return none
33109*/
33110WDI_Status
33111WDI_ProcessEXTScanGetCachedResultsReq
33112(
33113 WDI_ControlBlockType* pWDICtx,
33114 WDI_EventInfoType* pEventData
33115)
33116{
33117 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
33118 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
33119 wpt_uint8* pSendBuffer = NULL;
33120 wpt_uint16 usSendSize = 0;
33121 wpt_uint16 usDataOffset = 0;
33122 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
33123
33124 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33125 "%s: %d Enter",__func__, __LINE__);
33126
33127 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33128 ( NULL == pEventData->pCBfnc ))
33129 {
33130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33131 "%s: Invalid parameters", __func__);
33132 WDI_ASSERT(0);
33133 return WDI_STATUS_E_FAILURE;
33134 }
33135
33136 pwdiEXTScanGetCachedResultsReqParams =
33137 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
33138 wdiEXTScanGetCachedResultsCb =
33139 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
33140
33141 /*-----------------------------------------------------------------------
33142 Get message buffer
33143 ! TO DO : proper conversion into the HAL Message Request Format
33144 -----------------------------------------------------------------------*/
33145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33146 pWDICtx,
33147 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
33148 sizeof(tHalExtScanGetScanReq),
33149 &pSendBuffer, &usDataOffset,
33150 &usSendSize))||
33151 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
33152 {
33153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33154 "Unable to get send buffer in %s %p %p %p", __func__,
33155 pEventData, pwdiEXTScanGetCachedResultsReqParams,
33156 wdiEXTScanGetCachedResultsCb);
33157 WDI_ASSERT(0);
33158 return WDI_STATUS_E_FAILURE;
33159 }
33160
33161 halEXTScanGetScanReqParams.requestId =
33162 pwdiEXTScanGetCachedResultsReqParams->requestId;
33163 halEXTScanGetScanReqParams.sessionId =
33164 pwdiEXTScanGetCachedResultsReqParams->sessionId;
33165 halEXTScanGetScanReqParams.flush =
33166 pwdiEXTScanGetCachedResultsReqParams->flush;
33167
33168 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33169 " requestId %u "
33170 " sessionId %u "
33171 " flush %u ",
33172 halEXTScanGetScanReqParams.requestId,
33173 halEXTScanGetScanReqParams.sessionId,
33174 halEXTScanGetScanReqParams.flush);
33175
33176 wpalMemoryCopy(pSendBuffer+usDataOffset,
33177 &halEXTScanGetScanReqParams,
33178 sizeof(halEXTScanGetScanReqParams));
33179
33180 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33181
33182
33183 /*-------------------------------------------------------------------------
33184 Send EXTScan Stop Request to HAL
33185 -------------------------------------------------------------------------*/
33186 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33187 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
33188 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
33189}
33190
33191/**
33192 @brief WDI_EXTScanStopReq
33193
33194 @param WDI_EXTScanStopReqParams: Req parameter for the FW
33195 WDI_EXTScanStopRspCb: callback for passing back the response
33196 of the Req operation received from the device
33197 pUserData: user data will be passed back with the callback
33198
33199 @return SUCCESS or FAIL
33200*/
33201WDI_Status
33202WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
33203 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
33204 void* pUserData)
33205{
33206 WDI_EventInfoType wdiEventData;
33207
33208 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33209 "%s: %d ",__func__, __LINE__);
33210 /*------------------------------------------------------------------------
33211 Sanity Check
33212 ------------------------------------------------------------------------*/
33213 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33214 {
33215 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33216 "WDI API call before module is initialized - Fail request");
33217
33218 return WDI_STATUS_E_NOT_ALLOWED;
33219 }
33220
33221 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
33222 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
33223 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
33224 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
33225 wdiEventData.pUserData = pUserData;
33226
33227 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33228}
33229
33230/**
33231 @brief WDI_ProcessEXTScanStopReq -
33232 Extended Scan Stop request to FW
33233
33234 @param pWDICtx : wdi context
33235 pEventData : indication data
33236
33237 @see
33238 @return none
33239*/
33240WDI_Status
33241WDI_ProcessEXTScanStopReq
33242(
33243 WDI_ControlBlockType* pWDICtx,
33244 WDI_EventInfoType* pEventData
33245)
33246{
33247 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33248 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33249 wpt_uint8* pSendBuffer = NULL;
33250 wpt_uint16 usSendSize = 0;
33251 wpt_uint16 usDataOffset = 0;
33252 tHalExtScanStopReq halEXTScanStopReqParams;
33253
33254 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33255 "%s: %d ",__func__, __LINE__);
33256
33257 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33258 ( NULL == pEventData->pCBfnc ))
33259 {
33260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33261 "%s: Invalid parameters", __func__);
33262 WDI_ASSERT(0);
33263 return WDI_STATUS_E_FAILURE;
33264 }
33265
33266 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33267 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33268
33269 /*-----------------------------------------------------------------------
33270 Get message buffer
33271 ! TO DO : proper conversion into the HAL Message Request Format
33272 -----------------------------------------------------------------------*/
33273 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33274 pWDICtx,
33275 WDI_EXTSCAN_STOP_REQ,
33276 sizeof(tHalExtScanStopReq),
33277 &pSendBuffer, &usDataOffset,
33278 &usSendSize))||
33279 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33280 {
33281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33282 "Unable to get send buffer in %s %p %p %p", __func__,
33283 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33284 WDI_ASSERT(0);
33285 return WDI_STATUS_E_FAILURE;
33286 }
33287
33288 halEXTScanStopReqParams.requestId =
33289 pwdiEXTScanStopReqParams->requestId;
33290 halEXTScanStopReqParams.sessionId =
33291 pwdiEXTScanStopReqParams->sessionId;
33292
33293 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33294 " halEXTScanStopReqParams.requestId %u "
33295 " halEXTScanStopReqParams.sessionId %u ",
33296 halEXTScanStopReqParams.requestId,
33297 halEXTScanStopReqParams.sessionId);
33298
33299 wpalMemoryCopy(pSendBuffer+usDataOffset,
33300 &halEXTScanStopReqParams,
33301 sizeof(halEXTScanStopReqParams));
33302
33303 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33304
33305
33306 /*-------------------------------------------------------------------------
33307 Send EXTScan Stop Request to HAL
33308 -------------------------------------------------------------------------*/
33309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33310 wdiEXTScanStopCb, pEventData->pUserData,
33311 WDI_EXTSCAN_STOP_RSP);
33312}
33313
33314/**
33315 @brief WDI_EXTScanStartReq
33316
33317 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33318 WDI_EXTScanStartRspCb: callback for passing back the response
33319 of the Req operation received from the device
33320 pUserData: user data will be passed back with the callback
33321
33322 @return SUCCESS or FAIL
33323*/
33324WDI_Status
33325WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33326 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33327 void* pUserData)
33328{
33329 WDI_EventInfoType wdiEventData;
33330
33331 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33332 "%s: %d Enter",__func__, __LINE__);
33333 /*------------------------------------------------------------------------
33334 Sanity Check
33335 ------------------------------------------------------------------------*/
33336 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33337 {
33338 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33339 "WDI API call before module is initialized - Fail request");
33340
33341 return WDI_STATUS_E_NOT_ALLOWED;
33342 }
33343
33344 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33345 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33346 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33347 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33348 wdiEventData.pUserData = pUserData;
33349
33350 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33351}
33352
33353/**
33354 @brief WDI_ProcessEXTScanStartReq -
33355 Extended Scan Start Request to FW
33356
33357 @param pWDICtx : wdi context
33358 pEventData : indication data
33359
33360 @see
33361 @return none
33362*/
33363WDI_Status
33364WDI_ProcessEXTScanStartReq
33365(
33366 WDI_ControlBlockType* pWDICtx,
33367 WDI_EventInfoType* pEventData
33368)
33369{
33370 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33371 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33372 wpt_uint8* pSendBuffer = NULL;
33373 wpt_uint16 usSendSize = 0;
33374 wpt_uint16 usDataOffset = 0;
33375 tpHalExtScanStartReq pHalExtScanStartReqParams;
33376 int i = 0;
33377 int j = 0;
33378
33379 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33380 "%s: %d Enter",__func__, __LINE__);
33381
33382 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33383 ( NULL == pEventData->pCBfnc ))
33384 {
33385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33386 "%s: Invalid parameters", __func__);
33387 WDI_ASSERT(0);
33388 return WDI_STATUS_E_FAILURE;
33389 }
33390
33391 pwdiEXTScanStartReqParams =
33392 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33393 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33394
33395 /*-----------------------------------------------------------------------
33396 Get message buffer
33397 ! TO DO : proper conversion into the HAL Message Request Format
33398 -----------------------------------------------------------------------*/
33399 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33400 pWDICtx,
33401 WDI_EXTSCAN_START_REQ,
33402 sizeof(tHalExtScanStartReq),
33403 &pSendBuffer, &usDataOffset,
33404 &usSendSize))||
33405 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33406 {
33407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33408 "Unable to get send buffer in %s %p %p %p", __func__,
33409 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33410 WDI_ASSERT(0);
33411 return WDI_STATUS_E_FAILURE;
33412 }
33413
33414 pHalExtScanStartReqParams =
33415 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33416
33417 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33418 pHalExtScanStartReqParams->maxApPerScan =
33419 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033420 pHalExtScanStartReqParams->reportThresholdPercent =
33421 pwdiEXTScanStartReqParams->reportThresholdPercent;
33422 pHalExtScanStartReqParams->reportThresholdNumScans =
33423 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053033424 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33425 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33426 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033427 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053033428
33429 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33430 {
33431 pHalExtScanStartReqParams->bucketData[i].bucketId =
33432 pwdiEXTScanStartReqParams->buckets[i].bucket;
33433 pHalExtScanStartReqParams->bucketData[i].channelBand =
33434 pwdiEXTScanStartReqParams->buckets[i].band;
33435 pHalExtScanStartReqParams->bucketData[i].period =
33436 pwdiEXTScanStartReqParams->buckets[i].period;
33437 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33438 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033439 pHalExtScanStartReqParams->bucketData[i].max_period =
33440 pwdiEXTScanStartReqParams->buckets[i].max_period;
33441 pHalExtScanStartReqParams->bucketData[i].exponent =
33442 pwdiEXTScanStartReqParams->buckets[i].exponent;
33443 pHalExtScanStartReqParams->bucketData[i].step_count =
33444 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053033445 pHalExtScanStartReqParams->bucketData[i].numChannels =
33446 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33447
33448 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33449 {
33450 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33451 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33452 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33453 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33454 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33455 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33456 }
33457
33458 }
33459
33460
33461 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033462 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
33463 "reportThresholdNumScans %u requestId %u"
33464 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033465 pHalExtScanStartReqParams->basePeriod,
33466 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033467 pHalExtScanStartReqParams->reportThresholdPercent,
33468 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053033469 pHalExtScanStartReqParams->requestId,
33470 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033471 pHalExtScanStartReqParams->numBuckets,
33472 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053033473
33474 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33475 {
33476 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33477 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033478 " reportEvents %u numChannels %u "
33479 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053033480 pHalExtScanStartReqParams->bucketData[i].bucketId,
33481 pHalExtScanStartReqParams->bucketData[i].channelBand,
33482 pHalExtScanStartReqParams->bucketData[i].period,
33483 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033484 pHalExtScanStartReqParams->bucketData[i].numChannels,
33485 pHalExtScanStartReqParams->bucketData[i].max_period,
33486 pHalExtScanStartReqParams->bucketData[i].exponent,
33487 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053033488
33489 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33490 {
33491 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33492 "%d) channel %u dwellTimeMs %u passive %u ",j,
33493 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33494 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33495 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33496 }
33497
33498 }
33499
Dino Mycle41bdc942014-06-10 11:30:24 +053033500 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33501
33502 /*-------------------------------------------------------------------------
33503 Send EXTSCAN Start Request to HAL
33504 -------------------------------------------------------------------------*/
33505 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33506 wdiEXTScanStartCb, pEventData->pUserData,
33507 WDI_EXTSCAN_START_RSP);
33508}
33509
33510/**
33511 @brief WDI_EXTScanSetBSSIDHotlistReq
33512
33513 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33514 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33515 of the Req operation received from the device
33516 pUserData: user data will be passed back with the callback
33517
33518 @return SUCCESS or FAIL
33519*/
33520WDI_Status
33521WDI_EXTScanSetBSSIDHotlistReq(
33522 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33523 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33524 void* pUserData)
33525{
33526 WDI_EventInfoType wdiEventData;
33527
33528 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33529 "%s: %d Enter ",__func__, __LINE__);
33530 /*------------------------------------------------------------------------
33531 Sanity Check
33532 ------------------------------------------------------------------------*/
33533 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33534 {
33535 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33536 "WDI API call before module is initialized - Fail request");
33537
33538 return WDI_STATUS_E_NOT_ALLOWED;
33539 }
33540
33541 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33542 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33543 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33544 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33545 wdiEventData.pUserData = pUserData;
33546
33547 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33548}
33549
33550/**
33551 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33552 Extended Scan Set BSSSID Hotlist Request to FW
33553
33554 @param pWDICtx : wdi context
33555 pEventData : indication data
33556
33557 @see
33558 @return none
33559*/
33560WDI_Status
33561WDI_ProcessEXTScanSetBSSIDHotlistReq
33562(
33563 WDI_ControlBlockType* pWDICtx,
33564 WDI_EventInfoType* pEventData
33565)
33566{
33567 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33568 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33569 wpt_uint8* pSendBuffer = NULL;
33570 wpt_uint16 usSendSize = 0;
33571 wpt_uint16 usDataOffset = 0;
33572 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33573 int i;
33574
33575 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33576 "%s: %d Enter",__func__, __LINE__);
33577
33578 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33579 ( NULL == pEventData->pCBfnc ))
33580 {
33581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33582 "%s: Invalid parameters", __func__);
33583 WDI_ASSERT(0);
33584 return WDI_STATUS_E_FAILURE;
33585 }
33586
33587 pwdiEXTScanSetBSSIDHotlistReqParams =
33588 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33589 wdiEXTScanSetBSSIDHotlistRspCb =
33590 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33591
33592 /*-----------------------------------------------------------------------
33593 Get message buffer
33594 ! TO DO : proper conversion into the HAL Message Request Format
33595 -----------------------------------------------------------------------*/
33596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33597 pWDICtx,
33598 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33599 sizeof(tHalBssidHotlistSetReq),
33600 &pSendBuffer, &usDataOffset,
33601 &usSendSize))||
33602 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33603 {
33604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33605 "Unable to get send buffer in %s %p %p %p", __func__,
33606 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33607 wdiEXTScanSetBSSIDHotlistRspCb);
33608 WDI_ASSERT(0);
33609 return WDI_STATUS_E_FAILURE;
33610 }
33611 pHalBssidHotlistSetReqParams =
33612 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33613
33614 pHalBssidHotlistSetReqParams->requestId =
33615 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33616
33617 pHalBssidHotlistSetReqParams->sessionId =
33618 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33619
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033620 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
33621 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
33622
33623 pHalBssidHotlistSetReqParams->numBssid =
33624 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053033625
33626 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33627
33628 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33629 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33630 WDI_MAC_ADDR_LEN);
33631
33632 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33633 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33634
33635 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33636 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33637
Dino Mycle41bdc942014-06-10 11:30:24 +053033638 }
33639
33640 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033641 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033642 pHalBssidHotlistSetReqParams->requestId,
33643 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033644 pHalBssidHotlistSetReqParams->numBssid,
33645 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053033646
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033647 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053033648
33649 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033650 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053033651 __func__, __LINE__, i,
33652 pHalBssidHotlistSetReqParams->ap[i].bssid,
33653 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033654 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053033655
33656 }
33657
33658 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33659
33660
33661 /*-------------------------------------------------------------------------
33662 Send EXTScan Stop Request to HAL
33663 -------------------------------------------------------------------------*/
33664 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33665 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33666 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33667}
33668
33669/**
33670 @brief WDI_EXTScanResetBSSIDHotlistReq
33671
33672 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33673 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33674 of the Req operation received from the device
33675 pUserData: user data will be passed back with the callback
33676
33677 @return SUCCESS or FAIL
33678*/
33679WDI_Status
33680WDI_EXTScanResetBSSIDHotlistReq(
33681 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33682 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33683 void* pUserData)
33684{
33685 WDI_EventInfoType wdiEventData;
33686
33687 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33688 "%s: %d",__func__, __LINE__);
33689 /*------------------------------------------------------------------------
33690 Sanity Check
33691 ------------------------------------------------------------------------*/
33692 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33693 {
33694 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33695 "WDI API call before module is initialized - Fail request");
33696
33697 return WDI_STATUS_E_NOT_ALLOWED;
33698 }
33699
33700 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33701 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33702 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33703 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33704 wdiEventData.pUserData = pUserData;
33705
33706 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33707}
33708
33709/**
33710 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33711 Extended Scan reset BSSID hotlist Request to FW
33712
33713 @param pWDICtx : wdi context
33714 pEventData : indication data
33715
33716 @see
33717 @return none
33718*/
33719WDI_Status
33720WDI_ProcessEXTScanResetBSSIDHotlistReq
33721(
33722 WDI_ControlBlockType* pWDICtx,
33723 WDI_EventInfoType* pEventData
33724)
33725{
33726 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33727 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33728 wpt_uint8* pSendBuffer = NULL;
33729 wpt_uint16 usSendSize = 0;
33730 wpt_uint16 usDataOffset = 0;
33731 tpHalHotlistResetReq pHalHotlistResetReqParams;
33732
33733 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33734 "%s: %d",__func__, __LINE__);
33735
33736 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33737 ( NULL == pEventData->pCBfnc ))
33738 {
33739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33740 "%s: Invalid parameters", __func__);
33741 WDI_ASSERT(0);
33742 return WDI_STATUS_E_FAILURE;
33743 }
33744
33745 pwdiEXTScanResetBSSIDHotlistReqParams =
33746 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33747 wdiEXTScanResetBSSIDHotlistRspCb =
33748 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33749
33750 /*-----------------------------------------------------------------------
33751 Get message buffer
33752 ! TO DO : proper conversion into the HAL Message Request Format
33753 -----------------------------------------------------------------------*/
33754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33755 pWDICtx,
33756 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33757 sizeof(tHalHotlistResetReq),
33758 &pSendBuffer, &usDataOffset,
33759 &usSendSize))||
33760 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33761 {
33762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33763 "Unable to get send buffer in %s %p %p %p", __func__,
33764 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33765 wdiEXTScanResetBSSIDHotlistRspCb);
33766 WDI_ASSERT(0);
33767 return WDI_STATUS_E_FAILURE;
33768 }
33769 pHalHotlistResetReqParams =
33770 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33771
33772 pHalHotlistResetReqParams->requestId =
33773 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33774
33775 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33776
33777 /*-------------------------------------------------------------------------
33778 Send EXTScan Stop Request to HAL
33779 -------------------------------------------------------------------------*/
33780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33781 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33782 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33783}
33784
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053033785
33786/**
33787 @brief WDI_EXTScanSetSSIDHotlistReq
33788
33789 @param WDI_EXTScanSetSSIDHotlistReqParams: Req parameter for the FW
33790 WDI_EXTScanSetSSIDHotlistRspCb: callback for passing back the response
33791 of the Req operation received from the device
33792 pUserData: user data will be passed back with the callback
33793
33794 @return SUCCESS or FAIL
33795*/
33796WDI_Status
33797WDI_EXTScanSetSSIDHotlistReq(
33798 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams,
33799 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb,
33800 void* pUserData)
33801{
33802 WDI_EventInfoType wdiEventData;
33803
33804 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33805 "%s: %d Enter ",__func__, __LINE__);
33806 /*------------------------------------------------------------------------
33807 Sanity Check
33808 ------------------------------------------------------------------------*/
33809 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33810 {
33811 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33812 "WDI API call before module is initialized - Fail request");
33813
33814 return WDI_STATUS_E_NOT_ALLOWED;
33815 }
33816
33817 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SSID_HOTLIST_REQ;
33818 wdiEventData.pEventData = pwdiEXTScanSetSSIDHotlistReqParams;
33819 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetSSIDHotlistReqParams);
33820 wdiEventData.pCBfnc = wdiEXTScanSetSSIDHotlistRspCb;
33821 wdiEventData.pUserData = pUserData;
33822
33823 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33824}
33825
33826/**
33827 @brief WDI_ProcessEXTScanSetSSIDHotlistReq -
33828 Extended Scan Set SSSID Hotlist Request to FW
33829
33830 @param pWDICtx : wdi context
33831 pEventData : indication data
33832
33833 @see
33834 @return none
33835*/
33836WDI_Status
33837WDI_ProcessEXTScanSetSSIDHotlistReq
33838(
33839 WDI_ControlBlockType* pWDICtx,
33840 WDI_EventInfoType* pEventData
33841)
33842{
33843 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams;
33844 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
33845 wpt_uint8* pSendBuffer = NULL;
33846 wpt_uint16 usSendSize = 0;
33847 wpt_uint16 usDataOffset = 0;
33848 tpHalSsidHotlistSetReq pHalSsidHotlistSetReqParams;
33849 int i;
33850
33851 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33852 "%s: %d Enter",__func__, __LINE__);
33853
33854 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33855 ( NULL == pEventData->pCBfnc ))
33856 {
33857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33858 "%s: Invalid parameters", __func__);
33859 WDI_ASSERT(0);
33860 return WDI_STATUS_E_FAILURE;
33861 }
33862
33863 pwdiEXTScanSetSSIDHotlistReqParams =
33864 (WDI_EXTScanSetSSIDHotlistReqParams *)pEventData->pEventData;
33865 wdiEXTScanSetSSIDHotlistRspCb =
33866 (WDI_EXTScanSetSSIDHotlistRspCb)pEventData->pCBfnc;
33867
33868 /*-----------------------------------------------------------------------
33869 Get message buffer
33870 ! TO DO : proper conversion into the HAL Message Request Format
33871 -----------------------------------------------------------------------*/
33872 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33873 pWDICtx,
33874 WDI_EXTSCAN_SET_SSID_HOTLIST_REQ,
33875 sizeof(tHalSsidHotlistSetReq),
33876 &pSendBuffer, &usDataOffset,
33877 &usSendSize))||
33878 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistSetReq) )))
33879 {
33880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33881 "Unable to get send buffer in %s %p %p %p", __func__,
33882 pEventData, pwdiEXTScanSetSSIDHotlistReqParams,
33883 wdiEXTScanSetSSIDHotlistRspCb);
33884 WDI_ASSERT(0);
33885 return WDI_STATUS_E_FAILURE;
33886 }
33887 pHalSsidHotlistSetReqParams =
33888 (tpHalSsidHotlistSetReq) (pSendBuffer + usDataOffset);
33889
33890 pHalSsidHotlistSetReqParams->requestId =
33891 pwdiEXTScanSetSSIDHotlistReqParams->requestId;
33892
33893 pHalSsidHotlistSetReqParams->sessionId =
33894 pwdiEXTScanSetSSIDHotlistReqParams->sessionId;
33895
33896 pHalSsidHotlistSetReqParams->lostSsidSampleSize =
33897 pwdiEXTScanSetSSIDHotlistReqParams->lostSsidSampleSize;;
33898
33899 pHalSsidHotlistSetReqParams->numSsid =
33900 pwdiEXTScanSetSSIDHotlistReqParams->numSsid;
33901
33902 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33903
33904 wpalMemoryZero(pHalSsidHotlistSetReqParams->ssid[i].ssid, 33);
33905 wpalMemoryCopy(pHalSsidHotlistSetReqParams->ssid[i].ssid,
33906 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.sSSID,
33907 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.ucLength);
33908
33909 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold =
33910 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].lowRssiThreshold;
33911
33912 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold =
33913 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].highRssiThreshold;
33914
33915 pHalSsidHotlistSetReqParams->ssid[i].band =
33916 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].band;
33917 }
33918
33919 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33920 "ReqID %u sessionId %u numSsid %u lost_ssid_sample_size: %u",
33921 pHalSsidHotlistSetReqParams->requestId,
33922 pHalSsidHotlistSetReqParams->sessionId,
33923 pHalSsidHotlistSetReqParams->numSsid,
33924 pHalSsidHotlistSetReqParams->lostSsidSampleSize);
33925
33926 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33927
33928 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33929 "%s %d %d) SSID = %s lowRssiThreshold %d highRssiThreshold %d band: %d",
33930 __func__, __LINE__, i,
33931 pHalSsidHotlistSetReqParams->ssid[i].ssid,
33932 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold,
33933 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold,
33934 pHalSsidHotlistSetReqParams->ssid[i].band);
33935 }
33936
33937 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33938
33939
33940 /*-------------------------------------------------------------------------
33941 Send EXTScan Stop Request to HAL
33942 -------------------------------------------------------------------------*/
33943 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33944 wdiEXTScanSetSSIDHotlistRspCb, pEventData->pUserData,
33945 WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
33946}
33947
33948/**
33949 @brief WDI_EXTScanResetSSIDHotlistReq
33950
33951 @param WDI_EXTScanResetSSIDHotlistReqParams: Req parameter for the FW
33952 WDI_EXTScanResetSSIDHotlistRspCb: callback for passing back the response
33953 of the Req operation received from the device
33954 pUserData: user data will be passed back with the callback
33955
33956 @return SUCCESS or FAIL
33957*/
33958WDI_Status
33959WDI_EXTScanResetSSIDHotlistReq(
33960 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams,
33961 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb,
33962 void* pUserData)
33963{
33964 WDI_EventInfoType wdiEventData;
33965
33966 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33967 "%s: %d",__func__, __LINE__);
33968 /*------------------------------------------------------------------------
33969 Sanity Check
33970 ------------------------------------------------------------------------*/
33971 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33972 {
33973 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33974 "WDI API call before module is initialized - Fail request");
33975
33976 return WDI_STATUS_E_NOT_ALLOWED;
33977 }
33978
33979 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ;
33980 wdiEventData.pEventData = pwdiEXTScanResetSSIDHotlistReqParams;
33981 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetSSIDHotlistReqParams);
33982 wdiEventData.pCBfnc = wdiEXTScanResetSSIDHotlistRspCb;
33983 wdiEventData.pUserData = pUserData;
33984
33985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33986}
33987
33988/**
33989 @brief WDI_ProcessEXTScanResetSSIDHotlistReq -
33990 Extended Scan reset SSID hotlist Request to FW
33991
33992 @param pWDICtx : wdi context
33993 pEventData : indication data
33994
33995 @see
33996 @return none
33997*/
33998WDI_Status
33999WDI_ProcessEXTScanResetSSIDHotlistReq
34000(
34001 WDI_ControlBlockType* pWDICtx,
34002 WDI_EventInfoType* pEventData
34003)
34004{
34005 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams;
34006 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34007 wpt_uint8* pSendBuffer = NULL;
34008 wpt_uint16 usSendSize = 0;
34009 wpt_uint16 usDataOffset = 0;
34010 tpHalSsidHotlistResetReq pHalSsidHotlistResetReqParams;
34011
34012 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34013 "%s: %d",__func__, __LINE__);
34014
34015 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34016 ( NULL == pEventData->pCBfnc ))
34017 {
34018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34019 "%s: Invalid parameters", __func__);
34020 WDI_ASSERT(0);
34021 return WDI_STATUS_E_FAILURE;
34022 }
34023
34024 pwdiEXTScanResetSSIDHotlistReqParams =
34025 (WDI_EXTScanResetSSIDHotlistReqParams *)pEventData->pEventData;
34026 wdiEXTScanResetSSIDHotlistRspCb =
34027 (WDI_EXTScanResetSSIDHotlistRspCb)pEventData->pCBfnc;
34028
34029 /*-----------------------------------------------------------------------
34030 Get message buffer
34031 ! TO DO : proper conversion into the HAL Message Request Format
34032 -----------------------------------------------------------------------*/
34033 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34034 pWDICtx,
34035 WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ,
34036 sizeof(tHalSsidHotlistResetReq),
34037 &pSendBuffer, &usDataOffset,
34038 &usSendSize))||
34039 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistResetReq) )))
34040 {
34041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34042 "Unable to get send buffer in %s %p %p %p", __func__,
34043 pEventData, pwdiEXTScanResetSSIDHotlistReqParams,
34044 wdiEXTScanResetSSIDHotlistRspCb);
34045 WDI_ASSERT(0);
34046 return WDI_STATUS_E_FAILURE;
34047 }
34048 pHalSsidHotlistResetReqParams =
34049 (tpHalSsidHotlistResetReq) (pSendBuffer+usDataOffset);
34050
34051 pHalSsidHotlistResetReqParams->requestId =
34052 pwdiEXTScanResetSSIDHotlistReqParams->requestId;
34053
34054 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34055
34056 /*-------------------------------------------------------------------------
34057 Send RESET_HOTLIST_SSID Request to HAL
34058 -------------------------------------------------------------------------*/
34059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34060 wdiEXTScanResetSSIDHotlistRspCb, pEventData->pUserData,
34061 WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
34062}
34063
34064
Dino Mycle41bdc942014-06-10 11:30:24 +053034065/**
Dino Mycle41bdc942014-06-10 11:30:24 +053034066 @brief Process Extended Scan Start Rsp function (called when a response
34067 is being received over the bus from HAL)
34068
34069 @param pWDICtx: pointer to the WLAN DAL context
34070 pEventData: pointer to the event information structure
34071
34072 @see
34073 @return Result of the function call
34074*/
34075WDI_Status
34076WDI_ProcessEXTScanStartRsp
34077(
34078 WDI_ControlBlockType* pWDICtx,
34079 WDI_EventInfoType* pEventData
34080)
34081{
34082 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
34083
34084 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34085 "%s: %d",__func__, __LINE__);
34086 /*-------------------------------------------------------------------------
34087 Sanity check
34088 -------------------------------------------------------------------------*/
34089 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34090 ( NULL == pEventData->pEventData))
34091 {
34092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34093 "%s: Invalid parameters", __func__);
34094 WDI_ASSERT(0);
34095 return WDI_STATUS_E_FAILURE;
34096 }
34097
34098 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34099 if ( NULL == wdiEXTScanStartRspCb)
34100 {
34101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34102 "%s: Callback function Invalid", __func__);
34103 WDI_ASSERT(0);
34104 return WDI_STATUS_E_FAILURE;
34105 }
34106
34107 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
34108
34109 return WDI_STATUS_SUCCESS;
34110}
34111
34112
34113/**
34114 @brief Process Extended Scan Stop Rsp function (called when a response
34115 is being received over the bus from HAL)
34116
34117 @param pWDICtx: pointer to the WLAN DAL context
34118 pEventData: pointer to the event information structure
34119
34120 @see
34121 @return Result of the function call
34122*/
34123WDI_Status
34124WDI_ProcessEXTScanStopRsp
34125(
34126 WDI_ControlBlockType* pWDICtx,
34127 WDI_EventInfoType* pEventData
34128)
34129{
34130 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
34131
34132 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34133 "%s: %d",__func__, __LINE__);
34134
34135
34136 /*-------------------------------------------------------------------------
34137 Sanity check
34138 -------------------------------------------------------------------------*/
34139 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34140 ( NULL == pEventData->pEventData))
34141 {
34142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34143 "%s: Invalid parameters", __func__);
34144 WDI_ASSERT(0);
34145 return WDI_STATUS_E_FAILURE;
34146 }
34147
34148 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34149 if ( NULL == wdiEXTScanStopRspCb)
34150 {
34151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34152 "%s: Callback function Invalid", __func__);
34153 WDI_ASSERT(0);
34154 return WDI_STATUS_E_FAILURE;
34155 }
34156
34157 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34158
34159 return WDI_STATUS_SUCCESS;
34160}
34161
34162/**
34163 @brief Process Extended Scan Get Cached Rsp function (called when a response
34164 is being received over the bus from HAL)
34165
34166 @param pWDICtx: pointer to the WLAN DAL context
34167 pEventData: pointer to the event information structure
34168
34169 @see
34170 @return Result of the function call
34171*/
34172WDI_Status
34173WDI_ProcessEXTScanGetCachedResultsRsp
34174(
34175 WDI_ControlBlockType* pWDICtx,
34176 WDI_EventInfoType* pEventData
34177)
34178{
34179 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
34180
34181 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34182 "%s: %d Enter",__func__, __LINE__);
34183
34184
34185 /*-------------------------------------------------------------------------
34186 Sanity check
34187 -------------------------------------------------------------------------*/
34188 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34189 ( NULL == pEventData->pEventData))
34190 {
34191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34192 "%s: Invalid parameters", __func__);
34193 WDI_ASSERT(0);
34194 return WDI_STATUS_E_FAILURE;
34195 }
34196
34197 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34198 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
34199 {
34200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34201 "%s: Callback function Invalid", __func__);
34202 WDI_ASSERT(0);
34203 return WDI_STATUS_E_FAILURE;
34204 }
34205
34206 wdiEXTScanGetCachedResultsRspCb(
34207 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34208
34209 return WDI_STATUS_SUCCESS;
34210}
34211
34212/**
34213 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
34214 is being received over the bus from HAL)
34215
34216 @param pWDICtx: pointer to the WLAN DAL context
34217 pEventData: pointer to the event information structure
34218
34219 @see
34220 @return Result of the function call
34221*/
34222WDI_Status
34223WDI_ProcessEXTScanGetCapabilitiesRsp
34224(
34225 WDI_ControlBlockType* pWDICtx,
34226 WDI_EventInfoType* pEventData
34227)
34228{
34229 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
34230
34231 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34232 "%s: %d ",__func__, __LINE__);
34233
34234
34235 /*-------------------------------------------------------------------------
34236 Sanity check
34237 -------------------------------------------------------------------------*/
34238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34239 ( NULL == pEventData->pEventData))
34240 {
34241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34242 "%s: Invalid parameters", __func__);
34243 WDI_ASSERT(0);
34244 return WDI_STATUS_E_FAILURE;
34245 }
34246
34247 wdiEXTScanGetCapabilitiesRspCb =
34248 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
34249 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
34250 {
34251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34252 "%s: Callback function Invalid", __func__);
34253 WDI_ASSERT(0);
34254 return WDI_STATUS_E_FAILURE;
34255 }
34256
34257 wdiEXTScanGetCapabilitiesRspCb(
34258 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34259
34260 return WDI_STATUS_SUCCESS;
34261}
34262
34263/**
34264 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34265 response is being received over the bus from HAL)
34266
34267 @param pWDICtx: pointer to the WLAN DAL context
34268 pEventData: pointer to the event information structure
34269
34270 @see
34271 @return Result of the function call
34272*/
34273WDI_Status
34274WDI_ProcessEXTScanSetHotlistBSSIDRsp
34275(
34276 WDI_ControlBlockType* pWDICtx,
34277 WDI_EventInfoType* pEventData
34278)
34279{
34280 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34281
34282 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34283 "%s: %d ",__func__, __LINE__);
34284
34285
34286 /*-------------------------------------------------------------------------
34287 Sanity check
34288 -------------------------------------------------------------------------*/
34289 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34290 ( NULL == pEventData->pEventData))
34291 {
34292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34293 "%s: Invalid parameters", __func__);
34294 WDI_ASSERT(0);
34295 return WDI_STATUS_E_FAILURE;
34296 }
34297
34298 wdiEXTScanSetBSSIDHotlistRspCb =
34299 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34300 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34301 {
34302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34303 "%s: Callback function Invalid", __func__);
34304 WDI_ASSERT(0);
34305 return WDI_STATUS_E_FAILURE;
34306 }
34307
34308 wdiEXTScanSetBSSIDHotlistRspCb(
34309 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34310
34311 return WDI_STATUS_SUCCESS;
34312}
34313
34314/**
34315 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34316 when a response is being received over the bus from HAL)
34317
34318 @param pWDICtx: pointer to the WLAN DAL context
34319 pEventData: pointer to the event information structure
34320
34321 @see
34322 @return Result of the function call
34323*/
34324WDI_Status
34325WDI_ProcessEXTScanResetHotlistBSSIDRsp
34326(
34327 WDI_ControlBlockType* pWDICtx,
34328 WDI_EventInfoType* pEventData
34329)
34330{
34331 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34332
34333 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34334 "%s: %d ",__func__, __LINE__);
34335
34336
34337 /*-------------------------------------------------------------------------
34338 Sanity check
34339 -------------------------------------------------------------------------*/
34340 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34341 ( NULL == pEventData->pEventData))
34342 {
34343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34344 "%s: Invalid parameters", __func__);
34345 WDI_ASSERT(0);
34346 return WDI_STATUS_E_FAILURE;
34347 }
34348
34349 wdiEXTScanResetBSSIDHotlistRspCb =
34350 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34351 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34352 {
34353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34354 "%s: Callback function Invalid", __func__);
34355 WDI_ASSERT(0);
34356 return WDI_STATUS_E_FAILURE;
34357 }
34358
34359 wdiEXTScanResetBSSIDHotlistRspCb(
34360 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34361
34362 return WDI_STATUS_SUCCESS;
34363}
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053034364
34365/**
34366 @brief Process Extended Scan Set hotlist SSID Rsp function (called when a
34367 response is being received over the bus from HAL)
34368
34369 @param pWDICtx: pointer to the WLAN DAL context
34370 pEventData: pointer to the event information structure
34371
34372 @see
34373 @return Result of the function call
34374*/
34375WDI_Status
34376WDI_ProcessEXTScanSetHotlistSSIDRsp
34377(
34378 WDI_ControlBlockType* pWDICtx,
34379 WDI_EventInfoType* pEventData
34380)
34381{
34382 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
34383
34384 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34385 "%s: %d ",__func__, __LINE__);
34386
34387
34388 /*-------------------------------------------------------------------------
34389 Sanity check
34390 -------------------------------------------------------------------------*/
34391 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34392 ( NULL == pEventData->pEventData))
34393 {
34394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34395 "%s: Invalid parameters", __func__);
34396 WDI_ASSERT(0);
34397 return WDI_STATUS_E_FAILURE;
34398 }
34399
34400 wdiEXTScanSetSSIDHotlistRspCb =
34401 (WDI_EXTScanSetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34402 if ( NULL == wdiEXTScanSetSSIDHotlistRspCb)
34403 {
34404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34405 "%s: Callback function Invalid", __func__);
34406 WDI_ASSERT(0);
34407 return WDI_STATUS_E_FAILURE;
34408 }
34409
34410 wdiEXTScanSetSSIDHotlistRspCb(
34411 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34412
34413 return WDI_STATUS_SUCCESS;
34414}
34415
34416
34417/**
34418 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34419 when a response is being received over the bus from HAL)
34420
34421 @param pWDICtx: pointer to the WLAN DAL context
34422 pEventData: pointer to the event information structure
34423
34424 @see
34425 @return Result of the function call
34426*/
34427WDI_Status
34428WDI_ProcessEXTScanResetHotlistSSIDRsp
34429(
34430 WDI_ControlBlockType* pWDICtx,
34431 WDI_EventInfoType* pEventData
34432)
34433{
34434 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34435
34436 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34437 "%s: %d ",__func__, __LINE__);
34438
34439
34440 /*-------------------------------------------------------------------------
34441 Sanity check
34442 -------------------------------------------------------------------------*/
34443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34444 ( NULL == pEventData->pEventData))
34445 {
34446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34447 "%s: Invalid parameters", __func__);
34448 WDI_ASSERT(0);
34449 return WDI_STATUS_E_FAILURE;
34450 }
34451
34452 wdiEXTScanResetSSIDHotlistRspCb =
34453 (WDI_EXTScanResetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34454 if ( NULL == wdiEXTScanResetSSIDHotlistRspCb)
34455 {
34456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34457 "%s: Callback function Invalid", __func__);
34458 WDI_ASSERT(0);
34459 return WDI_STATUS_E_FAILURE;
34460 }
34461
34462 wdiEXTScanResetSSIDHotlistRspCb(
34463 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34464
34465 return WDI_STATUS_SUCCESS;
34466}
34467
Dino Mycle41bdc942014-06-10 11:30:24 +053034468#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034469
34470/**
34471 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34472
34473 @param None
34474
34475 @see
34476
34477 @return Status of the request
34478*/
34479WDI_Status
34480WDI_SetSpoofMacAddrReq
34481(
34482 WDI_SpoofMacAddrInfoType* pWdiReq,
34483 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34484 void* pUserData)
34485{
34486 WDI_EventInfoType wdiEventData;
34487
34488 /*-------------------------------------------------------------------------
34489 Sanity Check
34490 ------------------------------------------------------------------------*/
34491 if (eWLAN_PAL_FALSE == gWDIInitialized)
34492 {
34493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34494 "WDI API call before module is initialized - Fail request!");
34495
34496 return WDI_STATUS_E_NOT_ALLOWED;
34497 }
34498
34499 /*-------------------------------------------------------------------------
34500 Fill in Event data and post to the Main FSM
34501 ------------------------------------------------------------------------*/
34502 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34503 wdiEventData.pEventData = pWdiReq;
34504 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34505 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34506 wdiEventData.pUserData = pUserData;
34507
34508 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34509}
34510
34511/**
34512 @brief Process SpoofMacAddr Request
34513
34514 @param pWDICtx: pointer to the WLAN DAL context
34515 pEventData: pointer to the event information structure
34516
34517 @see
34518 @return Result of the function call
34519*/
34520WDI_Status
34521WDI_ProcessSpoofMacAddrReq
34522(
34523 WDI_ControlBlockType* pWDICtx,
34524 WDI_EventInfoType* pEventData
34525)
34526{
34527 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34528 wpt_uint8* pSendBuffer = NULL;
34529 wpt_uint16 usDataOffset = 0;
34530 wpt_uint16 usSendSize = 0;
34531 WDI_Status wdiStatus;
34532 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34533 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34534
34535
34536 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34537 "%s: %d Enter",__func__, __LINE__);
34538
34539 /*-------------------------------------------------------------------------
34540 Sanity check
34541 -------------------------------------------------------------------------*/
34542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34543 ( NULL == pEventData->pEventData))
34544 {
34545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34546 "%s: Invalid parameters", __func__);
34547 WDI_ASSERT(0);
34548 return WDI_STATUS_E_FAILURE;
34549 }
34550 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34551
34552 /*-----------------------------------------------------------------------
34553 Get message buffer
34554 -----------------------------------------------------------------------*/
34555 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34556 WDI_SPOOF_MAC_ADDR_REQ,
34557 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34558 &pSendBuffer, &usDataOffset, &usSendSize))||
34559 (usSendSize < (usDataOffset +
34560 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34561 {
34562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34563 "Unable to get send buffer in Process Spoof Mac Addr Req");
34564 WDI_ASSERT(0);
34565 return WDI_STATUS_E_FAILURE;
34566 }
34567
34568 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34569 wdiSpoofMacAddr->macAddr,
34570 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34571
34572 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34573
34574 wpalMemoryCopy( pSendBuffer+usDataOffset,
34575 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34576 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34577
34578 /*-------------------------------------------------------------------------
34579 Send Suspend Request to HAL
34580 -------------------------------------------------------------------------*/
34581 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34582 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34583
34584 return wdiStatus;
34585}
34586
34587/**
34588 @brief Process Spoof Mac Address Rsp function
34589 (called when a response is being received over the bus from HAL)
34590
34591 @param pWDICtx: pointer to the WLAN DAL context
34592 pEventData: pointer to the event information structure
34593
34594 @see
34595 @return Result of the function call
34596*/
34597WDI_Status
34598WDI_ProcessSpoofMacAddrRsp
34599(
34600 WDI_ControlBlockType* pWDICtx,
34601 WDI_EventInfoType* pEventData
34602)
34603{
34604 tMacSpoofedScanResp halRsp;
34605 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34606 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34607
34608 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34609 "%s: %d Enter",__func__, __LINE__);
34610
34611 /*-------------------------------------------------------------------------
34612 Sanity check
34613 -------------------------------------------------------------------------*/
34614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34615 ( NULL == pEventData->pEventData))
34616 {
34617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34618 "%s: Invalid parameters", __func__);
34619 WDI_ASSERT(0);
34620 return WDI_STATUS_E_FAILURE;
34621 }
34622 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34623
34624 /*-------------------------------------------------------------------------
34625 Extract response and send it to UMAC
34626 -------------------------------------------------------------------------*/
34627 wpalMemoryCopy( &halRsp,
34628 pEventData->pEventData, sizeof(halRsp));
34629
34630 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34631
34632 /*Notify UMAC*/
34633 wdiSpoofMacAddrRspCb(
34634 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34635
34636 return WDI_STATUS_SUCCESS;
34637}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034638
34639/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034640 @brief Process Get Frame Log Rsp function
34641 (called when a response is being received over the bus from HAL)
34642
34643 @param pWDICtx: pointer to the WLAN DAL context
34644 pEventData: pointer to the event information structure
34645
34646 @see
34647 @return Result of the function call
34648*/
34649WDI_Status
34650WDI_ProcessGetFrameLogRsp
34651(
34652 WDI_ControlBlockType* pWDICtx,
34653 WDI_EventInfoType* pEventData
34654)
34655{
34656 tGetFrameLogResp halRsp;
34657 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34658 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34659
34660 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34661 "%s: %d Enter",__func__, __LINE__);
34662
34663 /*-------------------------------------------------------------------------
34664 Sanity check
34665 -------------------------------------------------------------------------*/
34666 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34667 ( NULL == pEventData->pEventData))
34668 {
34669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34670 "%s: Invalid parameters", __func__);
34671 WDI_ASSERT(0);
34672 return WDI_STATUS_E_FAILURE;
34673 }
34674
34675 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34676
34677 /*-------------------------------------------------------------------------
34678 Extract response and send it to UMAC
34679 -------------------------------------------------------------------------*/
34680 wpalMemoryCopy( &halRsp,
34681 pEventData->pEventData, sizeof(halRsp));
34682
34683 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34684
34685 /*Notify UMAC*/
34686 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34687
34688 return WDI_STATUS_SUCCESS;
34689}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053034690
34691/**
34692 @brief Process RssiMonitorStartReq Request
34693
34694 @param pWDICtx: pointer to the WLAN DAL context
34695 pEventData: pointer to the event information structure
34696
34697 @see
34698 @return Result of the function call
34699*/
34700WDI_Status
34701WDI_ProcessRssiMonitorStartReq
34702(
34703 WDI_ControlBlockType* pWDICtx,
34704 WDI_EventInfoType* pEventData
34705)
34706{
34707 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
34708 wpt_uint8* pSendBuffer = NULL;
34709 wpt_uint16 usDataOffset = 0;
34710 wpt_uint16 usSendSize = 0;
34711 WDI_Status wdiStatus;
34712 tHalStartRssimonitoringReq halStartRssiMonitorReq;
34713 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
34714
34715
34716 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34717 "%s: %d Enter",__func__, __LINE__);
34718
34719 /*-------------------------------------------------------------------------
34720 Sanity check
34721 ------------------------------------------------------------------------*/
34722 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34723 ( NULL == pEventData->pEventData))
34724 {
34725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34726 "%s: Invalid parameters", __func__);
34727 WDI_ASSERT(0);
34728 return WDI_STATUS_E_FAILURE;
34729 }
34730
34731 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34732
34733 /*-----------------------------------------------------------------------
34734 Get message buffer
34735 -----------------------------------------------------------------------*/
34736 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34737 WDI_START_RSSI_MONITOR_REQ,
34738 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
34739 &pSendBuffer, &usDataOffset, &usSendSize))||
34740 (usSendSize < (usDataOffset +
34741 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
34742 {
34743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34744 "Unable to get send buffer in GetFrameLog Req");
34745 WDI_ASSERT(0);
34746 return WDI_STATUS_E_FAILURE;
34747 }
34748
34749 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
34750 wdiRssiMonitorStartReq->requestId;
34751
34752 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
34753 wdiRssiMonitorStartReq->minRssi;
34754
34755 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
34756 wdiRssiMonitorStartReq->maxRssi;
34757 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
34758 &(wdiRssiMonitorStartReq->currentBssId),
34759 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
34760
34761 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
34762
34763 wpalMemoryCopy(pSendBuffer+usDataOffset,
34764 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
34765 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
34766
34767 /*-------------------------------------------------------------------------
34768 Send Suspend Request to HAL
34769 ------------------------------------------------------------------------*/
34770 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34771 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
34772
34773 return wdiStatus;
34774}
34775
34776
34777/**
34778 @brief Process FWLoggingInit Request
34779
34780 @param pWDICtx: pointer to the WLAN DAL context
34781 pEventData: pointer to the event information structure
34782
34783 @see
34784 @return Result of the function call
34785*/
34786WDI_Status
34787WDI_ProcessRssiMonitorStopReq
34788(
34789 WDI_ControlBlockType* pWDICtx,
34790 WDI_EventInfoType* pEventData
34791)
34792{
34793 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
34794 wpt_uint8* pSendBuffer = NULL;
34795 wpt_uint16 usDataOffset = 0;
34796 wpt_uint16 usSendSize = 0;
34797 WDI_Status wdiStatus;
34798 tHalStopRssimonitoringReq halStopRssiMonitorReq;
34799 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
34800
34801
34802 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34803 "%s: %d Enter",__func__, __LINE__);
34804
34805 /*-------------------------------------------------------------------------
34806 Sanity check
34807 ------------------------------------------------------------------------*/
34808 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34809 ( NULL == pEventData->pEventData))
34810 {
34811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34812 "%s: Invalid parameters", __func__);
34813 WDI_ASSERT(0);
34814 return WDI_STATUS_E_FAILURE;
34815 }
34816 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34817
34818 /*-----------------------------------------------------------------------
34819 Get message buffer
34820 -----------------------------------------------------------------------*/
34821 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34822 WDI_STOP_RSSI_MONITOR_REQ,
34823 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
34824 &pSendBuffer, &usDataOffset, &usSendSize))||
34825 (usSendSize < (usDataOffset +
34826 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
34827 {
34828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34829 "Unable to get send buffer in GetFrameLog Req");
34830 WDI_ASSERT(0);
34831 return WDI_STATUS_E_FAILURE;
34832 }
34833
34834 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
34835 wdiRssiMonitorStopReq->requestId;
34836
34837 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
34838 &(wdiRssiMonitorStopReq->currentBssId),
34839 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
34840
34841 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
34842
34843 wpalMemoryCopy(pSendBuffer+usDataOffset,
34844 &halStopRssiMonitorReq.stopRssiMonitoringParams,
34845 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
34846
34847 /*-------------------------------------------------------------------------
34848 Send Suspend Request to HAL
34849 ------------------------------------------------------------------------*/
34850 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34851 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
34852
34853 return wdiStatus;
34854}
34855
34856/**
34857 @brief Process MgmtFrame Logging Init Rsp function
34858 (called when a response is being received over the bus from HAL)
34859
34860 @param pWDICtx: pointer to the WLAN DAL context
34861 pEventData: pointer to the event information structure
34862
34863 @see
34864 @return Result of the function call
34865*/
34866WDI_Status
34867WDI_ProcessRssiMonitorStopRsp
34868(
34869 WDI_ControlBlockType* pWDICtx,
34870 WDI_EventInfoType* pEventData
34871)
34872{
34873 tHalStopRssimonitoringRspParams halRsp;
34874 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
34875 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
34876
34877 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34878 "%s: %d Enter",__func__, __LINE__);
34879
34880 /*-------------------------------------------------------------------------
34881 Sanity check
34882 -------------------------------------------------------------------------*/
34883 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34884 ( NULL == pEventData->pEventData))
34885 {
34886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34887 "%s: Invalid parameters", __func__);
34888 WDI_ASSERT(0);
34889 return WDI_STATUS_E_FAILURE;
34890 }
34891 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
34892
34893 /*-------------------------------------------------------------------------
34894 Extract response and send it to UMAC
34895 -------------------------------------------------------------------------*/
34896 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34897
34898 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
34899
34900 /*Notify UMAC*/
34901 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
34902
34903 return WDI_STATUS_SUCCESS;
34904}
34905
34906
34907/**
34908 @brief Process MgmtFrame Logging Init Rsp function
34909 (called when a response is being received over the bus from HAL)
34910
34911 @param pWDICtx: pointer to the WLAN DAL context
34912 pEventData: pointer to the event information structure
34913
34914 @see
34915 @return Result of the function call
34916*/
34917WDI_Status
34918WDI_ProcessRssiMonitorStartRsp
34919(
34920 WDI_ControlBlockType* pWDICtx,
34921 WDI_EventInfoType* pEventData
34922)
34923{
34924 tHalStartRssimonitoringRspParams halRsp;
34925 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
34926 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
34927
34928 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34929 "%s: %d Enter",__func__, __LINE__);
34930
34931 /*-------------------------------------------------------------------------
34932 Sanity check
34933 -------------------------------------------------------------------------*/
34934 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34935 ( NULL == pEventData->pEventData))
34936 {
34937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34938 "%s: Invalid parameters", __func__);
34939 WDI_ASSERT(0);
34940 return WDI_STATUS_E_FAILURE;
34941 }
34942 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
34943
34944 /*-------------------------------------------------------------------------
34945 Extract response and send it to UMAC
34946 -------------------------------------------------------------------------*/
34947 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34948
34949 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
34950
34951 /*Notify UMAC*/
34952 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
34953
34954 return WDI_STATUS_SUCCESS;
34955}
34956
Siddharth Bhal64246172015-02-27 01:04:37 +053034957/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034958 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053034959
34960 @param pWDICtx: pointer to the WLAN DAL context
34961 pEventData: pointer to the event information structure
34962
34963 @see
34964 @return Result of the function call
34965*/
34966WDI_Status
34967WDI_ProcessGetFrameLogReq
34968(
34969 WDI_ControlBlockType* pWDICtx,
34970 WDI_EventInfoType* pEventData
34971)
34972{
34973 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
34974 wpt_uint8* pSendBuffer = NULL;
34975 wpt_uint16 usDataOffset = 0;
34976 wpt_uint16 usSendSize = 0;
34977 WDI_Status wdiStatus;
34978 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034979 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053034980
34981
34982 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34983 "%s: %d Enter",__func__, __LINE__);
34984
34985 /*-------------------------------------------------------------------------
34986 Sanity check
34987 ------------------------------------------------------------------------*/
34988 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34989 ( NULL == pEventData->pEventData))
34990 {
34991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34992 "%s: Invalid parameters", __func__);
34993 WDI_ASSERT(0);
34994 return WDI_STATUS_E_FAILURE;
34995 }
34996
34997 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
34998
34999 /*-----------------------------------------------------------------------
35000 Get message buffer
35001 -----------------------------------------------------------------------*/
35002 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35003 WDI_GET_FRAME_LOG_REQ,
35004 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
35005 &pSendBuffer, &usDataOffset, &usSendSize))||
35006 (usSendSize < (usDataOffset +
35007 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
35008 {
35009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35010 "Unable to get send buffer in GetFrameLog Req");
35011 WDI_ASSERT(0);
35012 return WDI_STATUS_E_FAILURE;
35013 }
35014
35015 halGetFrameLogReq.tGetFrameLogReqParams.flags =
35016 wdiGetFrameLogReq->flags;
35017
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035018 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053035019
35020 wpalMemoryCopy( pSendBuffer+usDataOffset,
35021 &halGetFrameLogReq.tGetFrameLogReqParams,
35022 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
35023
35024 /*-------------------------------------------------------------------------
35025 Send Suspend Request to HAL
35026 ------------------------------------------------------------------------*/
35027 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35028 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
35029
35030 return wdiStatus;
35031}
35032/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035033 @brief Process MgmtFrame Logging Init Rsp function
35034 (called when a response is being received over the bus from HAL)
35035
35036 @param pWDICtx: pointer to the WLAN DAL context
35037 pEventData: pointer to the event information structure
35038
35039 @see
35040 @return Result of the function call
35041*/
35042WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035043WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035044(
35045 WDI_ControlBlockType* pWDICtx,
35046 WDI_EventInfoType* pEventData
35047)
35048{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035049 tFWLoggingInitResp halRsp;
35050 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
35051 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035052
35053 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35054 "%s: %d Enter",__func__, __LINE__);
35055
35056 /*-------------------------------------------------------------------------
35057 Sanity check
35058 -------------------------------------------------------------------------*/
35059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35060 ( NULL == pEventData->pEventData))
35061 {
35062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35063 "%s: Invalid parameters", __func__);
35064 WDI_ASSERT(0);
35065 return WDI_STATUS_E_FAILURE;
35066 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035067 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035068
35069 /*-------------------------------------------------------------------------
35070 Extract response and send it to UMAC
35071 -------------------------------------------------------------------------*/
35072 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35073
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035074 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053035075 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035076
35077 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035078 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035079
35080 return WDI_STATUS_SUCCESS;
35081}
35082
c_manjeecfd1efb2015-09-25 19:32:34 +053035083/**
35084 @brief Process Fwr Mem Dump Rsp function
35085 (called when a response is being received over the bus from HAL)
35086
35087 @param pWDICtx: pointer to the WLAN DAL context
35088 pEventData: pointer to the event information structure
35089
35090 @see
35091 @return Result of the function call
35092*/
35093WDI_Status
35094 WDI_ProcessFwrMemDumpRsp
35095
35096(
35097 WDI_ControlBlockType* pWDICtx,
35098 WDI_EventInfoType* pEventData
35099)
35100{
35101 tHalFwMemoryDumpRespMsg halRsp;
35102 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35103 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
35104
35105 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35106 "%s: %d Enter",__func__, __LINE__);
35107
35108 /*-------------------------------------------------------------------------
35109 Sanity check
35110 -------------------------------------------------------------------------*/
35111 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35112 ( NULL == pEventData->pEventData))
35113 {
35114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35115 "%s: Invalid parameters", __func__);
35116 WDI_ASSERT(0);
35117 return WDI_STATUS_E_FAILURE;
35118 }
35119 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
35120
35121 /*-------------------------------------------------------------------------
35122 Extract response and send it to UMAC
35123 -------------------------------------------------------------------------*/
35124 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp));
35125
35126 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
35127
35128 /*Notify UMAC*/
35129 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
35130
35131 return WDI_STATUS_SUCCESS;
35132}
35133
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035134WDI_Status
35135WDI_ProcessFWLoggingDXEdoneInd
35136(
35137 WDI_ControlBlockType* pWDICtx,
35138 WDI_EventInfoType* pEventData
35139)
35140{
35141 wpt_uint8* pSendBuffer = NULL;
35142 wpt_uint16 usDataOffset = 0;
35143 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035144 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053035145 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035146 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035147 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035148
35149
35150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35151
35152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35153 "%s", __func__);
35154
35155 /*-------------------------------------------------------------------------
35156 Sanity check
35157 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035158 if (NULL == pEventData ||
35159 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035160 {
35161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35162 "%s: Invalid parameters", __func__);
35163 WDI_ASSERT(0);
35164 return WDI_STATUS_E_FAILURE;
35165 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035166 pLogType = (wpt_uint32 *)pEventData->pEventData;
35167
Mihir Shete5affadc2015-05-29 20:54:57 +053035168 pLoggingSession = (WDI_DS_LoggingSessionType *)
35169 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
35170 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035171 /*-----------------------------------------------------------------------
35172 Get message buffer
35173 -----------------------------------------------------------------------*/
35174
35175 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35176 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053035177 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035178 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053035179 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035180 {
35181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35182 "Unable to get send buffer in RTS CTS ind %p ",
35183 pEventData);
35184 WDI_ASSERT(0);
35185 return WDI_STATUS_E_FAILURE;
35186 }
35187 FWLoggingDxeDoneIndParams =
35188 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
35189
35190 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053035191 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035192 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053035193
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053035194 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035195 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053035196
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035197 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053035198 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035199 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
35200
35201 pWDICtx->pReqStatusUserData = NULL;
35202 pWDICtx->pfncRspCB = NULL;
35203 /*-------------------------------------------------------------------------
35204 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
35205 -------------------------------------------------------------------------*/
35206 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35207 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35208}
35209
Sachin Ahuja715aafc2015-07-21 23:35:10 +053035210
35211/**
35212 @brief Process Fatal Event Logs Rsp function
35213 (called when a response is being received over the bus from HAL)
35214
35215 @param pWDICtx: pointer to the WLAN DAL context
35216 pEventData: pointer to the event information structure
35217
35218 @see
35219 @return Result of the function call
35220*/
35221WDI_Status
35222WDI_ProcessFatalEventLogsRsp
35223(
35224 WDI_ControlBlockType* pWDICtx,
35225 WDI_EventInfoType* pEventData
35226)
35227{
35228 tHalFatalEventLoggingRspParams halRsp;
35229 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35230 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
35231
35232 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35233 "%s: %d Enter",__func__, __LINE__);
35234
35235 /*-------------------------------------------------------------------------
35236 Sanity check
35237 -------------------------------------------------------------------------*/
35238 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35239 ( NULL == pEventData->pEventData))
35240 {
35241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35242 "%s: Invalid parameters", __func__);
35243 WDI_ASSERT(0);
35244 return WDI_STATUS_E_FAILURE;
35245 }
35246 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
35247
35248 /*-------------------------------------------------------------------------
35249 Extract response and send it to UMAC
35250 -------------------------------------------------------------------------*/
35251 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35252
35253 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
35254
35255 /*Notify UMAC*/
35256 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
35257 pWDICtx->pRspCBUserData);
35258
35259 return WDI_STATUS_SUCCESS;
35260}
35261
35262/**
35263 @brief Process FatalEventLogs Request
35264
35265 @param pWDICtx: pointer to the WLAN DAL context
35266 pEventData: pointer to the event information structure
35267
35268 @see
35269 @return Result of the function call
35270*/
35271
35272WDI_Status
35273WDI_ProcessFatalEventLogsReq
35274
35275(
35276 WDI_ControlBlockType* pWDICtx,
35277 WDI_EventInfoType* pEventData
35278)
35279{
35280 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
35281 wpt_uint8* pSendBuffer = NULL;
35282 wpt_uint16 usDataOffset = 0;
35283 wpt_uint16 usSendSize = 0;
35284 WDI_Status wdiStatus;
35285 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
35286 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35287
35288
35289 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35290 "%s: %d Enter",__func__, __LINE__);
35291
35292 /*-------------------------------------------------------------------------
35293 Sanity check
35294 ------------------------------------------------------------------------*/
35295 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35296 ( NULL == pEventData->pEventData))
35297 {
35298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35299 "%s: Invalid parameters", __func__);
35300 WDI_ASSERT(0);
35301 return WDI_STATUS_E_FAILURE;
35302 }
35303 wdiFatalEventLogsReq =
35304 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
35305
35306 /*-----------------------------------------------------------------------
35307 Get message buffer
35308 -----------------------------------------------------------------------*/
35309 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35310 WDI_FATAL_EVENT_LOGGING_REQ,
35311 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
35312 &pSendBuffer, &usDataOffset, &usSendSize))||
35313 (usSendSize < (usDataOffset +
35314 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
35315 {
35316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35317 "Unable to get send buffer in Fatal Event Req");
35318 WDI_ASSERT(0);
35319 return WDI_STATUS_E_FAILURE;
35320 }
35321 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
35322 wdiFatalEventLogsReq->reason_code;
35323
35324 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
35325
35326 wpalMemoryCopy( pSendBuffer+usDataOffset,
35327 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
35328 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
35329
35330 /*-------------------------------------------------------------------------
35331 Send Mgmt Logging Init Request to HAL
35332 ------------------------------------------------------------------------*/
35333 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35334 wdiFatalEventLogsRspCb, pEventData->pUserData,
35335 WDI_FATAL_EVENT_LOGGING_RSP);
35336
35337 return wdiStatus;
35338
35339
35340}
35341
35342
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035343/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035344 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035345
35346 @param pWDICtx: pointer to the WLAN DAL context
35347 pEventData: pointer to the event information structure
35348
35349 @see
35350 @return Result of the function call
35351*/
35352WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035353WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035354(
35355 WDI_ControlBlockType* pWDICtx,
35356 WDI_EventInfoType* pEventData
35357)
35358{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035359 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035360 wpt_uint8* pSendBuffer = NULL;
35361 wpt_uint16 usDataOffset = 0;
35362 wpt_uint16 usSendSize = 0;
35363 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035364 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
35365 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035366
35367
35368 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35369 "%s: %d Enter",__func__, __LINE__);
35370
35371 /*-------------------------------------------------------------------------
35372 Sanity check
35373 ------------------------------------------------------------------------*/
35374 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35375 ( NULL == pEventData->pEventData))
35376 {
35377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35378 "%s: Invalid parameters", __func__);
35379 WDI_ASSERT(0);
35380 return WDI_STATUS_E_FAILURE;
35381 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035382 wdiFWLoggingInitReq =
35383 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035384
35385 /*-----------------------------------------------------------------------
35386 Get message buffer
35387 -----------------------------------------------------------------------*/
35388 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035389 WDI_FW_LOGGING_INIT_REQ,
35390 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035391 &pSendBuffer, &usDataOffset, &usSendSize))||
35392 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035393 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035394 {
35395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35396 "Unable to get send buffer in Process Mgmt Logging Init Req");
35397 WDI_ASSERT(0);
35398 return WDI_STATUS_E_FAILURE;
35399 }
35400
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035401 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
35402 wdiFWLoggingInitReq->enableFlag;
35403 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
35404 wdiFWLoggingInitReq->frameSize;
35405 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
35406 wdiFWLoggingInitReq->frameType;
35407 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
35408 wdiFWLoggingInitReq->bufferMode;
35409 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
35410 wdiFWLoggingInitReq->continuousFrameLogging;
35411 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
35412 wdiFWLoggingInitReq->minLogBufferSize;
35413 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
35414 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053035415 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
35416 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
35417 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
35418 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035419
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035420 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035421
35422 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035423 &halFWLoggingInitReq.tFWLoggingInitReqParams,
35424 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035425
35426 /*-------------------------------------------------------------------------
35427 Send Mgmt Logging Init Request to HAL
35428 ------------------------------------------------------------------------*/
35429 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035430 wdiFWLoggingInitRspCb, pEventData->pUserData,
35431 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035432
35433 return wdiStatus;
35434}
35435
35436/**
c_manjeecfd1efb2015-09-25 19:32:34 +053035437 @brief Process FwrMemDumpReq Request
35438
35439 @param pWDICtx: pointer to the WLAN DAL context
35440 pEventData: pointer to the event information structure
35441
35442 @see
35443 @return Result of the function call
35444*/
35445WDI_Status
35446 WDI_ProcessFwrMemDumpReq
35447
35448(
35449 WDI_ControlBlockType* pWDICtx,
35450 WDI_EventInfoType* pEventData
35451)
35452{
35453 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
35454 wpt_uint8* pSendBuffer = NULL;
35455 wpt_uint16 usDataOffset = 0;
35456 wpt_uint16 usSendSize = 0;
35457 WDI_Status wdiStatus;
35458 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
35459 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35460
35461 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35462 "%s: %d Enter",__func__, __LINE__);
35463
35464 /*-------------------------------------------------------------------------
35465 Sanity check
35466 ------------------------------------------------------------------------*/
35467 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35468 ( NULL == pEventData->pEventData))
35469 {
35470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35471 "%s: Invalid parameters", __func__);
35472 WDI_ASSERT(0);
35473 return WDI_STATUS_E_FAILURE;
35474 }
35475
35476 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
35477
35478 /*-----------------------------------------------------------------------
35479 Get message buffer
35480 -----------------------------------------------------------------------*/
35481 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35482 WDI_FWR_MEM_DUMP_REQ,
35483 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
35484 &pSendBuffer, &usDataOffset, &usSendSize))||
35485 (usSendSize < (usDataOffset +
35486 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
35487 {
35488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35489 "Unable to get send buffer in Process Fwr Mem Dump Req");
35490 WDI_ASSERT(0);
35491 return WDI_STATUS_E_FAILURE;
35492 }
35493
35494 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
35495 wpalMemoryCopy( pSendBuffer+usDataOffset,
35496 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
35497 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
35498
35499 /*-------------------------------------------------------------------------
35500 Send Fwr Mem Dump Request to HAL
35501 ------------------------------------------------------------------------*/
35502 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35503 wdiFwrMemDumpRspCb, pEventData->pUserData,
35504 WDI_FWR_MEM_DUMP_RSP);
35505 return wdiStatus;
35506}
35507
35508/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053035509 @brief WDI_EncryptMsgReq
35510
35511 @param pwdiEncryptMsgParams: Req parameter for the FW
35512 wdiEncryptMsgCbRsp: callback for passing back the response
35513 of the Req operation received from the device
35514 pUserData: user data will be passed back with the callback
35515
35516 @return SUCCESS or FAIL
35517*/
35518WDI_Status
35519WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
35520 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
35521 void* pUserData)
35522{
35523 WDI_EventInfoType wdiEventData;
35524
35525 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35526 "%s: %d Enter" ,__func__, __LINE__);
35527 /*------------------------------------------------------------------------
35528 Sanity Check
35529 ------------------------------------------------------------------------*/
35530 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35531 {
35532 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35533 "WDI API call before module is initialized - Fail request");
35534
35535 return WDI_STATUS_E_NOT_ALLOWED;
35536 }
35537
35538 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
35539 wdiEventData.pEventData = pwdiEncryptMsgParams;
35540 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
35541 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
35542 wdiEventData.pUserData = pUserData;
35543
35544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35545}
35546
35547/*
35548 * FUNCTION: WDI_ProcessEncryptMsgReq
35549 * Request to WDI to encrypt the given message.
35550 *
35551 * @param pWDICtx: pointer to the WLAN DAL context
35552 * pEventData: pointer to the event information structure
35553 *
35554 * @return Result of the function call
35555 */
35556
35557WDI_Status
35558WDI_ProcessEncryptMsgReq
35559(
35560 WDI_ControlBlockType* pWDICtx,
35561 WDI_EventInfoType* pEventData
35562)
35563{
35564 wpt_uint8* pSendBuffer = NULL;
35565 wpt_uint16 usDataOffset = 0;
35566 wpt_uint16 usSendSize = 0;
35567 WDI_EncryptMsgRspCb* wdiEncMsgCb;
35568 tSetEncryptedDataParams *pHalEncryptDataReq;
35569 wpt_pkt80211 *pkt = NULL;
35570
35571 /*-------------------------------------------------------------------------
35572 Sanity check
35573 -------------------------------------------------------------------------*/
35574 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
35575 ( NULL == pEventData->pCBfnc ) )
35576 {
35577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35578 "%s: Invalid parameters", __func__);
35579 WDI_ASSERT(0);
35580 return WDI_STATUS_E_FAILURE;
35581 }
35582
35583 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
35584
35585 /*-----------------------------------------------------------------------
35586 Get message buffer
35587 -----------------------------------------------------------------------*/
35588 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35589 pWDICtx, WDI_ENCRYPT_MSG_REQ,
35590 sizeof(tSetEncryptedDataReqMsg),
35591 &pSendBuffer, &usDataOffset, &usSendSize)) ||
35592 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
35593 {
35594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35595 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
35596 pEventData);
35597 WDI_ASSERT(0);
35598 return WDI_STATUS_E_FAILURE;
35599 }
35600
35601 pWDICtx->wdiReqStatusCB = NULL;
35602 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35603 pkt = (wpt_pkt80211 *)pEventData->pEventData;
35604
35605 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
35606 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
35607
35608 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
35609
35610 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
35611 pkt->encParams.keyParams.key[0].keyId;
35612
35613 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
35614 &pkt->encParams.keyParams.key[0].key[0], 16);
35615
35616 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
35617
35618 pHalEncryptDataReq->data.length = pkt->data.length;
35619 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
35620
35621 /*-------------------------------------------------------------------------
35622 Send Get STA Request to HAL
35623 -------------------------------------------------------------------------*/
35624 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
35625 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
35626}
35627
35628/*
35629 * FUNCTION: WDI_ProcessEncryptMsgRsp
35630 * Receives the encrypted message from the firmware
35631 * @param pWDICtx: pointer to the WLAN DAL context
35632 * pEventData: pointer to the event information structure
35633 *
35634 * @return Result of the function call
35635 */
35636WDI_Status
35637WDI_ProcessEncryptMsgRsp
35638(
35639 WDI_ControlBlockType* pWDICtx,
35640 WDI_EventInfoType* pEventData
35641)
35642{
35643 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
35644 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
35645
35646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35647 "In %s",__func__);
35648
35649 /*-------------------------------------------------------------------------
35650 Sanity check
35651 -------------------------------------------------------------------------*/
35652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35653 ( NULL == pEventData->pEventData))
35654 {
35655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35656 "%s: Invalid parameters", __func__);
35657 WDI_ASSERT(0);
35658 return WDI_STATUS_E_FAILURE;
35659 }
35660
35661 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35662
35663 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35664
35665 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35666 pEventData->pEventData,
35667 pWDICtx->pRspCBUserData);
35668 return WDI_STATUS_SUCCESS;
35669}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035670
35671WDI_Status
35672WDI_NanRequest
35673(
35674 WDI_NanRequestType *pwdiNanRequest,
35675 void *usrData
35676)
35677{
35678 WDI_EventInfoType wdiEventData;
35679
35680 /*------------------------------------------------------------------------
35681 Sanity Check
35682 ------------------------------------------------------------------------*/
35683 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35684 {
35685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35686 "WDI API call before module is initialized - Fail request");
35687
35688 return WDI_STATUS_E_NOT_ALLOWED;
35689 }
35690
35691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35692 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35693 pwdiNanRequest->request_data_len);
35694
35695 /*------------------------------------------------------------------------
35696 Fill in Event data and post to the Main FSM
35697 ------------------------------------------------------------------------*/
35698 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35699 wdiEventData.pEventData = pwdiNanRequest;
35700 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35701 + pwdiNanRequest->request_data_len;
35702 wdiEventData.pUserData = usrData;
35703 wdiEventData.pCBfnc = NULL;
35704
35705
35706 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35707}
35708
35709WDI_Status
35710WDI_ProcessNanRequest
35711(
35712 WDI_ControlBlockType* pWDICtx,
35713 WDI_EventInfoType* pEventData
35714)
35715{
35716 WDI_NanRequestType *pwdiNanRequest = NULL;
35717 wpt_uint8* pSendBuffer = NULL;
35718 wpt_uint16 usDataOffset = 0;
35719 wpt_uint16 usSendSize = 0;
35720
35721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35722 "WDI_ProcessNanRequest");
35723
35724 /*-------------------------------------------------------------------------
35725 Sanity check
35726 -------------------------------------------------------------------------*/
35727 if (( NULL == pEventData ) ||
35728 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35729 {
35730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35731 "%s: Invalid parameters", __FUNCTION__);
35732 WDI_ASSERT(0);
35733 return WDI_STATUS_E_FAILURE;
35734 }
35735
35736 /*-----------------------------------------------------------------------
35737 Get message buffer
35738 -----------------------------------------------------------------------*/
35739 if (( WDI_STATUS_SUCCESS
35740 != WDI_GetMessageBuffer( pWDICtx,
35741 WDI_NAN_REQUEST,
35742 pwdiNanRequest->request_data_len,
35743 &pSendBuffer,
35744 &usDataOffset,
35745 &usSendSize))||
35746 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35747 {
35748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35749 "Unable to get send buffer in NAN request %p %p",
35750 pEventData, pwdiNanRequest);
35751 WDI_ASSERT(0);
35752 return WDI_STATUS_E_FAILURE;
35753 }
35754
35755 wpalMemoryCopy( pSendBuffer+usDataOffset,
35756 pwdiNanRequest->request_data,
35757 pwdiNanRequest->request_data_len);
35758
35759 pWDICtx->pReqStatusUserData = NULL;
35760 pWDICtx->pfncRspCB = NULL;
35761 vos_mem_free( pEventData->pUserData);
35762
35763 /*-------------------------------------------------------------------------
35764 Send NAN Request to HAL
35765 -------------------------------------------------------------------------*/
35766 return WDI_SendMsg( pWDICtx,
35767 pSendBuffer,
35768 usSendSize,
35769 NULL,
35770 NULL,
35771 WDI_NAN_RESPONSE);
35772}
35773
35774/**
35775 @brief Process NAN Response function (called when a
35776 response is being received over the bus from HAL)
35777
35778 @param pWDICtx: pointer to the WLAN DAL context
35779 pEventData: pointer to the event information structure
35780
35781 @see
35782 @return Result of the function call
35783*/
35784WDI_Status
35785WDI_ProcessNanResponse
35786(
35787 WDI_ControlBlockType* pWDICtx,
35788 WDI_EventInfoType* pEventData
35789)
35790{
35791 WDI_Status wdiStatus;
35792 eHalStatus halStatus;
35793
35794 /*-------------------------------------------------------------------------
35795 Sanity check
35796 -------------------------------------------------------------------------*/
35797 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35798 ( NULL == pEventData->pEventData))
35799 {
35800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35801 "%s: Invalid parameters", __func__);
35802 WDI_ASSERT(0);
35803 return WDI_STATUS_E_FAILURE;
35804 }
35805
35806 halStatus = *((eHalStatus*)pEventData->pEventData);
35807 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
35808
35809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35810 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
35811
35812 return WDI_STATUS_SUCCESS;
35813}/*WDI_ProcessNanResponse*/
35814
35815
35816/**
35817 @brief Process NAN Event function (called when
35818 an indication is being received over the
35819 bus from HAL)
35820
35821 @param pWDICtx: pointer to the WLAN DAL context
35822 pEventData: pointer to the event information structure
35823
35824 @see
35825 @return Result of the function call
35826*/
35827WDI_Status
35828WDI_ProcessNanEvent
35829(
35830 WDI_ControlBlockType* pWDICtx,
35831 WDI_EventInfoType* pEventData
35832)
35833{
35834 WDI_LowLevelIndType wdiInd;
35835
35836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35837
35838 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35839 ( NULL == pEventData->pEventData ))
35840 {
35841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35842 "%s: Invalid parameters", __func__);
35843 WDI_ASSERT( 0 );
35844 return WDI_STATUS_E_FAILURE;
35845 }
35846
35847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35848 "%s: Received NAN event", __func__);
35849 /*-------------------------------------------------------------------------
35850 Extract indication and send it to UMAC
35851 -------------------------------------------------------------------------*/
35852 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
35853 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
35854 pEventData->uEventDataSize;
35855 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
35856 pEventData->pEventData;
35857
35858 /*Notify UMAC*/
35859 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
35860
35861 return WDI_STATUS_SUCCESS;
35862}/*WDI_ProcessNanEvent*/
35863
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053035864
Gupta, Kapil7c34b322015-09-30 13:12:35 +053035865WDI_Status
35866WDI_Process_RssiBreachedInd
35867(
35868 WDI_ControlBlockType* pWDICtx,
35869 WDI_EventInfoType* pEventData
35870)
35871{
35872 WDI_LowLevelIndType wdiInd;
35873 tHalRssiMonitorIndParams halRssiBreachedInd;
35874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35875
35876 /*-------------------------------------------------------------------------
35877 Sanity check
35878 -------------------------------------------------------------------------*/
35879 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35880 ( NULL == pEventData->pEventData))
35881 {
35882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35883 "%s: Invalid parameters", __func__);
35884 WDI_ASSERT(0);
35885 return WDI_STATUS_E_FAILURE;
35886 }
35887
35888 /*-------------------------------------------------------------------------
35889 Extract indication and send it to UMAC
35890 -------------------------------------------------------------------------*/
35891 wpalMemoryCopy( &halRssiBreachedInd,
35892 pEventData->pEventData,
35893 sizeof(halRssiBreachedInd));
35894
35895
35896 /*Fill in the indication parameters*/
35897 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
35898 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiRssiBreachedInd,
35899 (void *)&halRssiBreachedInd,
35900 sizeof(WDI_RssiBreachedIndType));
35901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35902 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
35903 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
35904 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
35905 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
35906 /*Notify UMAC*/
35907 if (pWDICtx->wdiLowLevelIndCB)
35908 {
35909 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
35910 }
35911
35912 return WDI_STATUS_SUCCESS;
35913
35914}
35915
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053035916
35917WDI_Status
35918WDI_Process_LostLinkParamInd
35919(
35920 WDI_ControlBlockType* pWDICtx,
35921 WDI_EventInfoType* pEventData
35922)
35923{
35924 WDI_LowLevelIndType wdiInd;
35925 tHalLostLinkParametersIndParams halLostLinkParamInd;
35926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35927
35928 /*-------------------------------------------------------------------------
35929 Sanity check
35930 -------------------------------------------------------------------------*/
35931 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35932 ( NULL == pEventData->pEventData))
35933 {
35934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35935 "%s: Invalid parameters", __func__);
35936 WDI_ASSERT(0);
35937 return WDI_STATUS_E_FAILURE;
35938 }
35939
35940 /*-------------------------------------------------------------------------
35941 Extract indication and send it to UMAC
35942 -------------------------------------------------------------------------*/
35943 wpalMemoryCopy( (void *)&halLostLinkParamInd,
35944 pEventData->pEventData,
35945 sizeof(tHalLostLinkParametersIndParams));
35946
35947
35948 /*Fill in the indication parameters*/
35949 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
35950 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
35951 (void *)&halLostLinkParamInd,
35952 sizeof(WDI_LostLinkParamsIndType));
35953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35954 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
35955 "linkFlTx : %d,lastDataRate : %d", __func__,
35956 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
35957 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
35958 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
35959 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
35960 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
35961 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
35962 /*Notify UMAC*/
35963 if (pWDICtx->wdiLowLevelIndCB)
35964 {
35965 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
35966 }
35967
35968 return WDI_STATUS_SUCCESS;
35969
35970}
35971
Abhishek Singh41988ba2015-05-25 19:42:29 +053035972WDI_Status
35973WDI_ProcessSetRtsCtsHtvhtInd
35974(
35975 WDI_ControlBlockType* pWDICtx,
35976 WDI_EventInfoType* pEventData
35977)
35978{
35979 wpt_uint8* pSendBuffer = NULL;
35980 wpt_uint16 usDataOffset = 0;
35981 wpt_uint16 usSendSize = 0;
35982 wpt_uint32 *rtsCtsVal;
35983 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
35984 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35985
35986
35987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35988
35989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35990 "%s", __func__);
35991
35992 /*-------------------------------------------------------------------------
35993 Sanity check
35994 -------------------------------------------------------------------------*/
35995 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35996 {
35997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35998 "%s: Invalid parameters", __func__);
35999 WDI_ASSERT(0);
36000 return WDI_STATUS_E_FAILURE;
36001 }
36002 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
36003 /*-----------------------------------------------------------------------
36004 Get message buffer
36005 -----------------------------------------------------------------------*/
36006
36007 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36008 WDI_SET_RTS_CTS_HTVHT_IND,
36009 sizeof(tHalRtsCtsHtvhtIndParams),
36010 &pSendBuffer, &usDataOffset, &usSendSize))||
36011 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
36012 {
36013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36014 "Unable to get send buffer in RTS CTS ind %p ",
36015 pEventData);
36016 WDI_ASSERT(0);
36017 return WDI_STATUS_E_FAILURE;
36018 }
36019 rtsCtsHtvhtIndParams =
36020 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
36021 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
36022
36023 pWDICtx->pReqStatusUserData = NULL;
36024 pWDICtx->pfncRspCB = NULL;
36025 /*-------------------------------------------------------------------------
36026 Send SET_RTS_CTS_HTVHT Indication to HAL
36027 -------------------------------------------------------------------------*/
36028 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36029 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36030}
36031
36032WDI_Status
36033WDI_SetRtsCtsHTVhtInd
36034(
36035 wpt_uint32 rtsCtsVal
36036)
36037{
36038 WDI_EventInfoType wdiEventData;
36039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36040
36041 /*------------------------------------------------------------------------
36042 Sanity Check
36043 ------------------------------------------------------------------------*/
36044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36045 {
36046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36047 "WDI API call before module is initialized - Fail request");
36048 return WDI_STATUS_E_NOT_ALLOWED;
36049 }
36050
36051 /*------------------------------------------------------------------------
36052 Fill in Event data and post to the Main FSM
36053 ------------------------------------------------------------------------*/
36054 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
36055 wdiEventData.pEventData = (void *) &rtsCtsVal;
36056 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36057 wdiEventData.pCBfnc = NULL;
36058 wdiEventData.pUserData = NULL;
36059
36060 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36061
36062}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053036063
36064WDI_Status
36065WDI_ProcessEnableDisableCAEventInd
36066(
36067 WDI_ControlBlockType* pWDICtx,
36068 WDI_EventInfoType* pEventData
36069)
36070{
36071 wpt_uint8* pSendBuffer = NULL;
36072 wpt_uint16 usDataOffset = 0;
36073 wpt_uint16 usSendSize = 0;
36074 wpt_uint32 *val;
36075 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
36076 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36077
36078
36079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36080
36081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36082 "%s", __func__);
36083
36084 /*-------------------------------------------------------------------------
36085 Sanity check
36086 -------------------------------------------------------------------------*/
36087 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36088 {
36089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36090 "%s: Invalid parameters", __func__);
36091 WDI_ASSERT(0);
36092 return WDI_STATUS_E_FAILURE;
36093 }
36094 val = (wpt_uint32*)pEventData->pEventData;
36095 /*-----------------------------------------------------------------------
36096 Get message buffer
36097 -----------------------------------------------------------------------*/
36098
36099 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36100 WDI_SEND_FREQ_RANGE_CONTROL_IND,
36101 sizeof(tHalAvoidFreqRangeCtrlParam),
36102 &pSendBuffer, &usDataOffset, &usSendSize))||
36103 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
36104 {
36105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36106 "Unable to get send buffer in Channel Avoidance Ind %p ",
36107 pEventData);
36108 WDI_ASSERT(0);
36109 return WDI_STATUS_E_FAILURE;
36110 }
36111 avoidFreqRangeCtrlParam =
36112 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
36113 avoidFreqRangeCtrlParam->status = *val;
36114
36115 pWDICtx->pReqStatusUserData = NULL;
36116 pWDICtx->pfncRspCB = NULL;
36117 /*-------------------------------------------------------------------------
36118 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
36119 -------------------------------------------------------------------------*/
36120 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36121 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36122}
36123
36124WDI_Status
36125WDI_EnableDisableCAEventInd
36126(
36127 wpt_uint32 val
36128)
36129{
36130 WDI_EventInfoType wdiEventData;
36131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36132
36133 /*------------------------------------------------------------------------
36134 Sanity Check
36135 ------------------------------------------------------------------------*/
36136 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36137 {
36138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36139 "WDI API call before module is initialized - Fail request");
36140 return WDI_STATUS_E_NOT_ALLOWED;
36141 }
36142
36143 /*------------------------------------------------------------------------
36144 Fill in Event data and post to the Main FSM
36145 ------------------------------------------------------------------------*/
36146 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
36147 wdiEventData.pEventData = (void *) &val;
36148 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36149 wdiEventData.pCBfnc = NULL;
36150 wdiEventData.pUserData = NULL;
36151
36152 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36153
36154} /* WDI_EnableDisableCAEventInd */