blob: 8d27c2d634bff597564876f9532a064ca7a7cc94 [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 */
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +0530525
526#ifdef WLAN_FEATURE_EXTSCAN
527 WDI_ProcessHighPriorityDataInfoInd, /* WDI_HIGH_PRIORITY_DATA_INFO_IND */
528#else
529 NULL,
530#endif /* WLAN_FEATURE_EXTSCAN */
531
Jeff Johnson295189b2012-06-20 16:38:30 -0700532};
533
534
Jeff Johnsone7245742012-09-05 17:12:55 -0700535/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700536 DAL Request Processing Array - the functions in this table will only be
537 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700538 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700539 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700540WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700541{
542 /*INIT*/
543 WDI_ProcessStartRsp, /* WDI_START_RESP */
544 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
545 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
546
547 /*SCAN*/
548 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
549 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
550 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
551 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
552
553 /* ASSOCIATION*/
554 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
555 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
556 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
557 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
558 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
559
560 /* Security */
561 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
562 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
563 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
564 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
565
566 /* QoS and BA APIs */
567 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
568 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
569 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
570 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
571 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
572
573 /* Miscellaneous Control APIs */
574 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
575 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
576 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
577 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
578 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
579
580 /* BA APIs*/
581 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
582 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700583
Jeff Johnson295189b2012-06-20 16:38:30 -0700584 /* IBSS APIs*/
585 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
586 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
587
588 /*Soft AP APIs*/
589 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
590 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
591 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
592 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
593
594 /* PowerSave APIs */
595 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
596 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
597 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
598 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
599 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
600 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
601 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
602 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
603 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
604 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
605 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
606 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
607 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
608 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
609 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
610 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
611 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
612 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700613
Jeff Johnson295189b2012-06-20 16:38:30 -0700614
615 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
616
617 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
618 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
619#ifdef WLAN_FEATURE_VOWIFI_11R
620 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
621#else
622 NULL,
623#endif /* WLAN_FEATURE_VOWIFI_11R */
624 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
625 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700626#ifdef FEATURE_OEM_DATA_SUPPORT
627 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
628#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700629 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700630#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700631 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
632
Jeff Johnson295189b2012-06-20 16:38:30 -0700633 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700634
Jeff Johnson295189b2012-06-20 16:38:30 -0700635 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700636
Jeff Johnsone7245742012-09-05 17:12:55 -0700637 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
638
Jeff Johnson295189b2012-06-20 16:38:30 -0700639#ifdef FEATURE_WLAN_SCAN_PNO
640 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
641 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
642 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
643#else
644 NULL,
645 NULL,
646 NULL,
647#endif // FEATURE_WLAN_SCAN_PNO
648
649 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700650 /*---------------------------------------------------------------------
651 Indications
652 ---------------------------------------------------------------------*/
653#ifdef WLAN_FEATURE_PACKET_FILTERING
654 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700655 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700656 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700657 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700658 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700659 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700660 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700661 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700662#else
663 NULL,
664 NULL,
665 NULL,
666 NULL,
667#endif // WLAN_FEATURE_PACKET_FILTERING
668
669 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
670 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
671
672 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800673#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700674 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
675#else
676 NULL,
677#endif
678
679#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700680 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
681 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700682#else
683 NULL,
684 NULL,
685#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700686 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
687 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700688#ifdef WLAN_FEATURE_11AC
689 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700690#else
691 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700692#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800693#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800694 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
695#else
696 NULL,
697#endif
schang86c22c42013-03-13 18:41:24 -0700698 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700699#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700700 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700701#else
702 NULL,
703#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530704#ifdef FEATURE_WLAN_TDLS
705 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
706#else
707 NULL,
708#endif
Leo Chang9056f462013-08-01 19:21:11 -0700709#ifdef FEATURE_WLAN_LPHB
710 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
711#else
712 NULL,
713#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530714
715#ifdef FEATURE_WLAN_BATCH_SCAN
716 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
717#else
718 NULL,
719#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800720 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530721
c_hpothu92367912014-05-01 15:18:17 +0530722 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800723
c_hpothu92367912014-05-01 15:18:17 +0530724 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
725
726 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800727
Sunil Duttbd736ed2014-05-26 21:19:41 +0530728
729#ifdef WLAN_FEATURE_LINK_LAYER_STATS
730 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
731 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
732 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
733#else
734 NULL,
735 NULL,
736 NULL,
737#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530738#ifdef WLAN_FEATURE_EXTSCAN
739 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
740 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
741 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
742 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
743 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
744 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530745 WDI_ProcessEXTScanSetHotlistSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_SSID_RSP */
746 WDI_ProcessEXTScanResetHotlistSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP */
Dino Mycle41bdc942014-06-10 11:30:24 +0530747#else
748 NULL,
749 NULL,
750 NULL,
751 NULL,
752 NULL,
753 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530754 NULL,
755 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530756#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530757 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530758
759 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530760
761 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530762 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530763 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530764
Srinivas Dasari32a79262015-02-19 13:04:49 +0530765 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
766
Katya Nigamf0511f62015-05-05 16:40:57 +0530767 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
768 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530769 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530770 WDI_ProcessFwrMemDumpRsp, /* WDI_FWR_MEM_DUMP_RSP */
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530771 WDI_ProcessRssiMonitorStartRsp, /* WDI_START_RSSI_MONITOR_RSP*/
772 WDI_ProcessRssiMonitorStopRsp, /* WDI_STOP_RSSI_MONITOR_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700773 /*---------------------------------------------------------------------
774 Indications
775 ---------------------------------------------------------------------*/
776 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
777 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
778 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
779 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
780 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
781 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
782
783 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
784
785 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
786
Jeff Johnson295189b2012-06-20 16:38:30 -0700787 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700788
789#ifdef FEATURE_WLAN_SCAN_PNO
790 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
791#else
792 NULL,
793#endif // FEATURE_WLAN_SCAN_PNO
794
795#ifdef WLAN_WAKEUP_EVENTS
796 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
797#else // WLAN_WAKEUP_EVENTS
798 NULL,
799#endif // WLAN_WAKEUP_EVENTS
800
801 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800802
Viral Modid86bde22012-12-10 13:09:21 -0800803 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530804#ifdef FEATURE_WLAN_TDLS
805 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
806#else
807 NULL,
808#endif
Leo Chang9056f462013-08-01 19:21:11 -0700809
810#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700811 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700812#else
813 NULL,
814#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700815
816 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700817
818 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530819
820#ifdef FEATURE_WLAN_BATCH_SCAN
821 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
822#else
823 NULL,
824#endif
825
Leo Chang0b0e45a2013-12-15 15:18:55 -0800826#ifdef FEATURE_WLAN_CH_AVOID
827 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
828#else
829 NULL,
830#endif /* FEATURE_WLAN_CH_AVOID */
831
Sunil Duttbd736ed2014-05-26 21:19:41 +0530832 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
833#ifdef WLAN_FEATURE_LINK_LAYER_STATS
834 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
835#else
836 NULL,
837#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530838#ifdef WLAN_FEATURE_EXTSCAN
839 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
840 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
841 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
842 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530843 WDI_ProcessEXTScanSsidHotListResultInd, /* WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND */
Dino Mycle41bdc942014-06-10 11:30:24 +0530844#else
845 NULL,
846 NULL,
847 NULL,
848 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530849 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530850#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530851#ifdef FEATURE_WLAN_TDLS
852 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
853#else
854 NULL,
855#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530856 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530857 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530858 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530859 WDI_Process_RssiBreachedInd, /* WDI_HAL_RSSI_BREACHED_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700860};
861
862
Jeff Johnsone7245742012-09-05 17:12:55 -0700863/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700864 WLAN DAL Global Control Block
865 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700866WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700867static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
868
Jeff Johnsone7245742012-09-05 17:12:55 -0700869const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700870
871/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700872WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700873void* WDI_GET_PAL_CTX( void )
874{
Jeff Johnsone7245742012-09-05 17:12:55 -0700875 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700876}/*WDI_GET_PAL_CTX*/
877
Jeff Johnsone7245742012-09-05 17:12:55 -0700878/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700879 Helper inline converters
880 ============================================================================*/
881/*Convert WDI driver type into HAL driver type*/
882WPT_STATIC WPT_INLINE WDI_Status
883WDI_HAL_2_WDI_STATUS
884(
885 eHalStatus halStatus
886);
887
888/*Convert WDI request type into HAL request type*/
889WPT_STATIC WPT_INLINE tHalHostMsgType
890WDI_2_HAL_REQ_TYPE
891(
892 WDI_RequestEnumType wdiReqType
893);
894
895/*Convert WDI response type into HAL response type*/
896WPT_STATIC WPT_INLINE WDI_ResponseEnumType
897HAL_2_WDI_RSP_TYPE
898(
899 tHalHostMsgType halMsg
900);
901
902/*Convert WDI driver type into HAL driver type*/
903WPT_STATIC WPT_INLINE tDriverType
904WDI_2_HAL_DRV_TYPE
905(
906 WDI_DriverType wdiDriverType
907);
908
909/*Convert WDI stop reason into HAL stop reason*/
910WPT_STATIC WPT_INLINE tHalStopType
911WDI_2_HAL_STOP_REASON
912(
913 WDI_StopType wdiStopType
914);
915
916/*Convert WDI scan mode type into HAL scan mode type*/
917WPT_STATIC WPT_INLINE eHalSysMode
918WDI_2_HAL_SCAN_MODE
919(
920 WDI_ScanMode wdiScanMode
921);
922
923/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700924WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700925WDI_2_HAL_SEC_CH_OFFSET
926(
927 WDI_HTSecondaryChannelOffset wdiSecChOffset
928);
929
930/*Convert WDI BSS type into HAL BSS type*/
931WPT_STATIC WPT_INLINE tSirBssType
932WDI_2_HAL_BSS_TYPE
933(
934 WDI_BssType wdiBSSType
935);
936
937/*Convert WDI NW type into HAL NW type*/
938WPT_STATIC WPT_INLINE tSirNwType
939WDI_2_HAL_NW_TYPE
940(
941 WDI_NwType wdiNWType
942);
943
944/*Convert WDI chanel bonding type into HAL cb type*/
945WPT_STATIC WPT_INLINE ePhyChanBondState
946WDI_2_HAL_CB_STATE
947(
948 WDI_PhyChanBondState wdiCbState
949);
950
951/*Convert WDI chanel bonding type into HAL cb type*/
952WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
953WDI_2_HAL_HT_OPER_MODE
954(
955 WDI_HTOperatingMode wdiHTOperMode
956);
957
958/*Convert WDI mimo PS type into HAL mimo PS type*/
959WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
960WDI_2_HAL_MIMO_PS
961(
962 WDI_HTMIMOPowerSaveState wdiHTOperMode
963);
964
965/*Convert WDI ENC type into HAL ENC type*/
966WPT_STATIC WPT_INLINE tAniEdType
967WDI_2_HAL_ENC_TYPE
968(
969 WDI_EncryptType wdiEncType
970);
971
972/*Convert WDI WEP type into HAL WEP type*/
973WPT_STATIC WPT_INLINE tAniWepType
974WDI_2_HAL_WEP_TYPE
975(
976 WDI_WepType wdiWEPType
977);
978
979/*Convert WDI Link State into HAL Link State*/
980WPT_STATIC WPT_INLINE tSirLinkState
981WDI_2_HAL_LINK_STATE
982(
983 WDI_LinkStateType wdiLinkState
984);
985
Jeff Johnsone7245742012-09-05 17:12:55 -0700986/*Translate a STA Context from WDI into HAL*/
987WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700988void
989WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700990(
Jeff Johnson295189b2012-06-20 16:38:30 -0700991 tConfigStaParams* phalConfigSta,
992 WDI_ConfigStaReqInfoType* pwdiConfigSta
993);
Jeff Johnsone7245742012-09-05 17:12:55 -0700994
995/*Translate a Rate set info from WDI into HAL*/
996WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700997WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700998(
Jeff Johnson295189b2012-06-20 16:38:30 -0700999 tSirMacRateSet* pHalRateSet,
1000 WDI_RateSet* pwdiRateSet
1001);
1002
1003/*Translate an EDCA Parameter Record from WDI into HAL*/
1004WPT_STATIC WPT_INLINE void
1005WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -07001006(
Jeff Johnson295189b2012-06-20 16:38:30 -07001007 tSirMacEdcaParamRecord* phalEdcaParam,
1008 WDI_EdcaParamRecord* pWDIEdcaParam
1009);
1010
1011/*Copy a management frame header from WDI fmt into HAL fmt*/
1012WPT_STATIC WPT_INLINE void
1013WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
1014(
1015 tSirMacMgmtHdr* pmacMgmtHdr,
1016 WDI_MacMgmtHdr* pwdiMacMgmtHdr
1017);
1018
1019/*Copy config bss parameters from WDI fmt into HAL fmt*/
1020WPT_STATIC WPT_INLINE void
1021WDI_CopyWDIConfigBSSToHALConfigBSS
1022(
1023 tConfigBssParams* phalConfigBSS,
1024 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1025);
1026
Jeff Johnsone7245742012-09-05 17:12:55 -07001027/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001028 pointed to by user data */
1029WPT_STATIC WPT_INLINE void
1030WDI_ExtractRequestCBFromEvent
1031(
1032 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001033 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001034 void** ppUserData
1035);
1036
1037wpt_uint8
1038WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001039(
Jeff Johnson295189b2012-06-20 16:38:30 -07001040 WDI_ControlBlockType* pWDICtx,
1041 WDI_BSSSessionType** ppSession
1042);
1043
1044void
1045WDI_AddBcastSTAtoSTATable
1046(
1047 WDI_ControlBlockType* pWDICtx,
1048 WDI_AddStaParams * staParams,
1049 wpt_uint16 usBcastStaIdx
1050);
1051
1052WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001053(
Jeff Johnson295189b2012-06-20 16:38:30 -07001054 WDI_ControlBlockType* pWDICtx,
1055 WDI_EventInfoType* pEventData
1056);
1057
1058void
1059WDI_SetPowerStateCb
1060(
1061 wpt_status status,
1062 unsigned int dxePhyAddr,
1063 void *pContext
1064);
1065
Jeff Johnson295189b2012-06-20 16:38:30 -07001066/**
1067 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001068
1069 @param wdiReqMsgId: WDI Message request Id
1070
1071 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001072 @return Result of the function call
1073*/
1074static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1075{
1076 switch (wdiReqMsgId)
1077 {
1078 CASE_RETURN_STRING( WDI_START_REQ );
1079 CASE_RETURN_STRING( WDI_STOP_REQ );
1080 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1081 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1082 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1083 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1084 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1085 CASE_RETURN_STRING( WDI_JOIN_REQ );
1086 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1087 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1088 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1089 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1090 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1091 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1092 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1093 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1094 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1095 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1096 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1097 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1098 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1099 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001100 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001101 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1102 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1103 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1104 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1105 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1106 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1107 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1108 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1109 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1110 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1111 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1112 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001113 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001114 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301115#ifdef FEATURE_WLAN_TDLS
1116 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301117 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301118#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001119 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1120 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1121 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1122 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1123 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1124 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1125 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1126 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1127 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1128 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1129 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1130 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1131 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1132 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1133 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1134 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1135 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1136 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1137 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1138 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1139 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1140 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1141 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1142 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1143 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001144 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001145 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1146 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1147 #ifdef FEATURE_WLAN_SCAN_PNO
1148 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1149 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1150 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1151 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001152#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001153 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001154#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001155 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1156 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1157 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1158 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1159 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1160 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1161 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1162 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1163 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301164 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001165 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001166 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001167#ifdef WLAN_FEATURE_11W
1168 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1169#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301170#ifdef FEATURE_WLAN_BATCH_SCAN
1171 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1172 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1173 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1174#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301175 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1176 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001177 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301178#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1179 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1180 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1181 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1182#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301183#ifdef WLAN_FEATURE_EXTSCAN
1184 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1185 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1186 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1187 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1188 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1189 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301190 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SSID_HOTLIST_REQ);
1191 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ);
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +05301192 CASE_RETURN_STRING( WDI_HIGH_PRIORITY_DATA_INFO_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301193#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301194 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301195 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301196 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301197 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301198 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301199 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301200 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301201 CASE_RETURN_STRING( WDI_MON_START_REQ );
1202 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301203 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301204 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
c_manjeecfd1efb2015-09-25 19:32:34 +05301205 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_REQ);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301206 CASE_RETURN_STRING( WDI_START_RSSI_MONITOR_REQ );
1207 CASE_RETURN_STRING( WDI_STOP_RSSI_MONITOR_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001208 default:
1209 return "Unknown WDI MessageId";
1210 }
1211}
1212
1213
1214
1215/**
1216 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001217
1218 @param wdiRespMsgId: WDI Message response Id
1219
1220 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001221 @return Result of the function call
1222*/
1223static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1224{
1225 switch (wdiRespMsgId)
1226 {
1227 CASE_RETURN_STRING( WDI_START_RESP );
1228 CASE_RETURN_STRING( WDI_STOP_RESP );
1229 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1230 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1231 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1232 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1233 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1234 CASE_RETURN_STRING( WDI_JOIN_RESP );
1235 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1236 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1237 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1238 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1239 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1240 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1241 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1242 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1243 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1244 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1245 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1246 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1247 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1248 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1249 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1250 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1251 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1252 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1253 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1254 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1255 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1256 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1257 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1258 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1259 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1260 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1261 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301262#ifdef FEATURE_WLAN_TDLS
1263 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301264 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301265 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1266#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001267 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1268 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1269 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1270 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1271 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1272 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1273 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1274 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1275 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1276 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1277 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1278 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1279 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1280 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1281 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1282 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1283 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1284 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1285 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1286 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1287 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1288 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1289 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1290 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1291 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001292 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001293 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1294 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1295 #ifdef FEATURE_WLAN_SCAN_PNO
1296 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1297 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1298 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1299 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001300#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001301 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001302#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001303 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1304 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1305 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1306 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1307 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1308 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1309 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1310 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001311 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301312#ifdef FEATURE_WLAN_BATCH_SCAN
1313 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1314#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001315 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301316 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301317 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301318#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1319 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1320 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1321 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1322#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301323#ifdef WLAN_FEATURE_EXTSCAN
1324 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1325 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1326 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1327 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1328 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1329 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301330 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
1331 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
Dino Mycle41bdc942014-06-10 11:30:24 +05301332 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1333 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1334 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1335 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301336 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301337#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301338 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301339 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301340 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301341 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301342 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
c_manjeecfd1efb2015-09-25 19:32:34 +05301343 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_RSP);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301344 CASE_RETURN_STRING (WDI_START_RSSI_MONITOR_RSP);
1345 CASE_RETURN_STRING (WDI_STOP_RSSI_MONITOR_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001346 default:
1347 return "Unknown WDI MessageId";
1348 }
1349}
1350
1351/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301352 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1353 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301354 @param capabilityBitmap - Base address of a 4 element Bitmap array
1355 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301356 @see
1357 @returns None
1358 */
1359void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1360{
Abhishek Singh08b60122014-02-04 18:05:23 +05301361 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301362 char *pTempCapStr = NULL;
1363 char *pCapStr = NULL;
1364 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1365 if (NULL == pTempCapStr)
1366 {
1367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1368 "Memory allocation failed for CapStr");
1369 return;
1370 }
1371
1372 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301373 for (j = 0; j < 4; j++) {
1374 for (i = 0; i < 32; i++) {
1375 if ((*(capabilityBitmap + j) & (1 << i))) {
1376 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301377 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1378 pCapStr += strlen("MCC");
1379 break;
1380 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1381 pCapStr += strlen("P2P");
1382 break;
1383 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1384 pCapStr += strlen("DOT11AC");
1385 break;
1386 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1387 pCapStr += strlen("SLM_SESSIONIZATION");
1388 break;
1389 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1390 pCapStr += strlen("DOT11AC_OPMODE");
1391 break;
1392 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1393 pCapStr += strlen("SAP32STA");
1394 break;
1395 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1396 pCapStr += strlen("TDLS");
1397 break;
1398 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1399 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1400 break;
1401 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1402 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1403 break;
1404 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1405 pCapStr += strlen("BEACON_OFFLOAD");
1406 break;
1407 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1408 pCapStr += strlen("SCAN_OFFLOAD");
1409 break;
1410 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1411 pCapStr += strlen("ROAM_OFFLOAD");
1412 break;
1413 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1414 pCapStr += strlen("BCN_MISS_OFFLOAD");
1415 break;
1416 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1417 pCapStr += strlen("STA_POWERSAVE");
1418 break;
1419 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1420 pCapStr += strlen("AP_UAPSD");
1421 break;
1422 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1423 pCapStr += strlen("AP_DFS");
1424 break;
1425 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1426 pCapStr += strlen("BLOCKACK");
1427 break;
1428 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1429 pCapStr += strlen("PHY_ERR");
1430 break;
1431 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1432 pCapStr += strlen("BCN_FILTER");
1433 break;
1434 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1435 pCapStr += strlen("RTT");
1436 break;
1437 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1438 pCapStr += strlen("RATECTRL");
1439 break;
1440 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1441 pCapStr += strlen("WOW");
1442 break;
1443 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1444 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1445 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301446 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1447 pCapStr += strlen("FW_IN_TX_PATH");
1448 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301449 case HT40_OBSS_SCAN:
1450 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1451 "%s", "HT40_OBSS_SCAN");
1452 pCapStr += strlen("HT40_OBSS_SCAN");
1453 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301454 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1455 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1456 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1457 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1458 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301459 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1460 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1461 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301462 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1463 pCapStr += strlen("CH_SWITCH_V1");
1464 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301465#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1466 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1467 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1468 break;
1469#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301470#ifdef WLAN_FEATURE_EXTSCAN
1471 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1472 pCapStr += strlen("EXTENDED_SCAN");
1473 break;
1474#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301475 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1476 pCapStr += strlen("MU_MIMO");
1477 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301478
Mihir Shetec34258c2014-07-30 17:50:27 +05301479 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1480 pCapStr += strlen("DYNAMIC_WMM_PS");
1481 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301482 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1483 pCapStr += strlen("FW_STATS");
1484 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301485 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1486 pCapStr += strlen("MAC_SPOOFED_SCAN");
1487 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301488 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1489 pCapStr += strlen("WPS_PRBRSP_TMPL");
1490 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301491 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1492 pCapStr += strlen("BCN_IE_FLT_DELTA");
1493 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301494 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1495 pCapStr += strlen("MGMT_FRAME_LOGGING");
1496 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301497 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1498 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1499 break;
1500
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301501 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1502 pCapStr += strlen("DISA");
1503 break;
1504
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301505 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1506 pCapStr += strlen("TDLS_OFF_CHANNEL");
1507 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301508 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1509 pCapStr += strlen("LOGGING_ENHANCEMENT");
1510 break;
c_manjeecfd1efb2015-09-25 19:32:34 +05301511 case MEMORY_DUMP_SUPPORTED:snprintf(pCapStr, sizeof("FW_MEM_DUMP_LOGGING"), "%s", "FW_MEM_DUMP_LOGGING");
1512 pCapStr += strlen("FW_MEM_DUMP_LOGGING");
1513 break;
Sushant Kaushik33200572015-08-05 16:46:20 +05301514 case PER_PKT_STATS_SUPPORTED: snprintf(pCapStr, sizeof("PER_PKT_STATS_SUPPORTED"), "%s", "PER_PKT_STATS_SUPPORTED");
1515 pCapStr += strlen("PER_PKT_STATS_SUPPORTED");
1516 break;
1517
1518
Abhishek Singh08b60122014-02-04 18:05:23 +05301519 }
1520 *pCapStr++ = ',';
1521 *pCapStr++ = ' ';
1522 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301523 }
1524 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301525 pCapStr -= 2;
1526 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301528 if (pTempCapStr)
1529 {
1530 vos_mem_free(pTempCapStr);
1531 pTempCapStr = NULL;
1532 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301533}
1534
1535/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001536 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001537
1538 @param halStatusId: HAL status Id
1539
1540 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001541 @return Result of the function call
1542*/
1543static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1544{
1545 switch (halStatusId)
1546 {
1547 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1548 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1549 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1550 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1551 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1552 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1553 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1554 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1555 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1556 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1557 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1558 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1559 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1560 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1561 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1562 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1563 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1564 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1565 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1566 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1567 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1568 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1569 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1570 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1571 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1572 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1573 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1574 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1575 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1576 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1577 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1578 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1579 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1580 default:
1581 return "Unknown HAL status";
1582 }
1583}
1584
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301585/**
1586 * wdi_state_info_dump() - prints state information of wdi layer
1587 */
1588static void wdi_state_info_dump(void)
1589{
1590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1591 "%s pending commands: %d", __func__,
1592 gWDICb.wptPendingQueue.count);
1593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1594 "uGlobalState %d wdiExpectedResponse: %d",
1595 gWDICb.uGlobalState, gWDICb.wdiExpectedResponse);
1596}
1597
1598
1599/**
1600 * wdi_register_debug_callback() - registration function for wdi layer
1601 * to print WDI state information
1602 */
1603static void wdi_register_debug_callback(void)
1604{
1605 vos_register_debug_callback(VOS_MODULE_ID_WDI, &wdi_state_info_dump);
1606}
1607
1608
Jeff Johnsone7245742012-09-05 17:12:55 -07001609/*========================================================================
1610
Jeff Johnson295189b2012-06-20 16:38:30 -07001611 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001612
Jeff Johnson295189b2012-06-20 16:38:30 -07001613==========================================================================*/
1614
1615/**
1616 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001617
Jeff Johnson295189b2012-06-20 16:38:30 -07001618 DAL will allocate all the resources it needs. It will open PAL, it will also
1619 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001620 DXE/SMD or any other drivers that they need.
1621
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301622 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001623 ppWDIGlobalCtx: output pointer of Global Context
1624 pWdiDevCapability: output pointer of device capability
1625
1626 @return Result of the function call
1627*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001628WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001629WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001630(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301631 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 void** ppWDIGlobalCtx,
1633 WDI_DeviceCapabilityType* pWdiDevCapability,
1634 unsigned int driverType
1635)
1636{
1637 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001638 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001639 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001640 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1642
1643 /*---------------------------------------------------------------------
1644 Sanity check
1645 ---------------------------------------------------------------------*/
1646 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1647 {
1648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1649 "Invalid input parameters in WDI_Init");
1650
Jeff Johnsone7245742012-09-05 17:12:55 -07001651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001652 }
1653
1654 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001655 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001656 ---------------------------------------------------------------------*/
1657 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1658 {
1659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1660 "WDI module already initialized - return");
1661
Jeff Johnsone7245742012-09-05 17:12:55 -07001662 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001663 }
1664
1665 /*Module is now initialized - this flag is to ensure the fact that multiple
1666 init will not happen on WDI
1667 !! - potential race does exist because read and set are not atomic,
1668 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001669 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001670
1671 /*Setup the control block */
1672 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301673 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001674
1675 /*Setup the STA Table*/
1676 wdiStatus = WDI_STATableInit(&gWDICb);
1677 if ( WDI_STATUS_SUCCESS != wdiStatus )
1678 {
1679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1680 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001681 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001682 goto fail_STATableInit;
1683 }
1684
1685 /*------------------------------------------------------------------------
1686 Open the PAL
1687 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301688 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001689 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1690 {
1691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1692 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001693 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001694 goto fail_wpalOpen;
1695 }
1696
1697 /*Initialize main synchro mutex - it will be used to ensure integrity of
1698 the main WDI Control Block*/
1699 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1700 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1701 {
1702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1703 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001704 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001705 goto fail_mutex;
1706 }
1707
1708 /*Initialize the response timer - it will be used to time all messages
1709 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001710 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1711 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001712 &gWDICb);
1713 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1714 {
1715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1716 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001717 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001718 goto fail_timer;
1719 }
1720
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001721 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1722 WDI_SsrTimerCB,
1723 &gWDICb);
1724 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1725 {
1726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1727 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001728 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001729 goto fail_timer2;
1730 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 /* Initialize the WDI Pending Request Queue*/
1732 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1733 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1734 {
1735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1736 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001737 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001738 goto fail_pend_queue;
1739 }
1740
1741 /*Init WDI Pending Assoc Id Queue */
1742 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1743 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1744 {
1745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1746 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001747 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001748 goto fail_assoc_queue;
1749 }
1750
1751 /*Initialize the BSS sessions pending Queue */
1752 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1753 {
1754 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1755 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1756 {
1757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1758 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001759 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001760 goto fail_bss_queue;
1761 }
1762 }
1763
1764 /*Indicate the control block is sufficiently initialized for callbacks*/
1765 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1766
1767 /*------------------------------------------------------------------------
1768 Initialize the Data Path Utility Module
1769 ------------------------------------------------------------------------*/
1770 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1771 if ( WDI_STATUS_SUCCESS != wdiStatus )
1772 {
1773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1774 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001775 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001776 goto fail_dp_util_init;
1777 }
1778
1779 /* Init Set power state event */
1780 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001781 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001782 {
1783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1784 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001785 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001786 goto fail_power_event;
1787 }
1788
1789 /* Init WCTS action event */
1790 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001791 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001792 {
1793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1794 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001795 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 goto fail_wcts_event;
1797 }
1798
1799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001800 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001801 ------------------------------------------------------------------------*/
1802 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1803 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001804 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001805 wctsCBs.wctsRxMsgCBData = &gWDICb;
1806
Jeff Johnsone7245742012-09-05 17:12:55 -07001807 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001809 WDI_CT_CHANNEL_SIZE,
1810 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001811
1812 if ( NULL == gWDICb.wctsHandle )
1813 {
1814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001815 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001816 goto fail_wcts_open;
1817 }
1818
1819 gWDICb.driverMode = (tDriverType)driverType;
1820 /* FTM mode not need to open Transport Driver */
1821 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001822 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001823 /*------------------------------------------------------------------------
1824 Open the Data Transport
1825 ------------------------------------------------------------------------*/
1826 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1827 {
1828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001829 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001830 goto fail_wdts_open;
1831 }
1832 }
1833
1834 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001835 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301836 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001837 /*Send the context as a ptr to the global WDI Control Block*/
1838 *ppWDIGlobalCtx = &gWDICb;
1839
1840 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001841 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001842 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1843 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301844
1845 wdi_register_debug_callback();
1846
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 return WDI_STATUS_SUCCESS;
1848
1849 /* ERROR handlers
1850 Undo everything that completed successfully */
1851
1852 fail_wdts_open:
1853 {
1854 wpt_status eventStatus;
1855
1856 /* Closing WCTS in this scenario is tricky since it has to close
1857 the SMD channel and then we get notified asynchronously when
1858 the channel has been closed. So we take some of the logic from
1859 the "normal" close procedure in WDI_Close()
1860 */
1861
1862 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001863 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001864 {
1865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001866 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001867 }
1868
1869 WCTS_CloseTransport(gWDICb.wctsHandle);
1870
1871 /* Wait for WCTS to close the control transport. If we were able
1872 to reset the event flag, then we'll wait for the event,
1873 otherwise we'll wait for a maximum amount of time required for
1874 the channel to be closed */
1875 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1876 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001877 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001878 WDI_WCTS_ACTION_TIMEOUT);
1879 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1880 {
1881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001882 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001883 }
1884 }
1885 else
1886 {
1887 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1888 }
1889 }
1890 fail_wcts_open:
1891 wpalEventDelete(&gWDICb.wctsActionEvent);
1892 fail_wcts_event:
1893 wpalEventDelete(&gWDICb.setPowerStateEvent);
1894 fail_power_event:
1895 WDI_DP_UtilsExit(&gWDICb);
1896 fail_dp_util_init:
1897 gWDICb.magic = 0;
1898 fail_bss_queue:
1899 /* entries 0 thru i-1 were successfully initialized */
1900 while (0 < i)
1901 {
1902 i--;
1903 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1904 }
1905 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1906 fail_assoc_queue:
1907 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1908 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001909 wpalTimerDelete(&gWDICb.ssrTimer);
1910 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001911 wpalTimerDelete(&gWDICb.wptResponseTimer);
1912 fail_timer:
1913 wpalMutexDelete(&gWDICb.wptMutex);
1914 fail_mutex:
1915 wpalClose(gWDICb.pPALContext);
1916 fail_wpalOpen:
1917 WDI_STATableClose(&gWDICb);
1918 fail_STATableInit:
1919 gWDIInitialized = eWLAN_PAL_FALSE;
1920
1921 return WDI_STATUS_E_FAILURE;
1922
1923}/*WDI_Init*/;
1924
1925/**
1926 @brief WDI_Start will be called when the upper MAC is ready to
1927 commence operation with the WLAN Device. Upon the call
1928 of this API the WLAN DAL will pack and send a HAL Start
1929 message to the lower RIVA sub-system if the SMD channel
1930 has been fully opened and the RIVA subsystem is up.
1931
1932 If the RIVA sub-system is not yet up and running DAL
1933 will queue the request for Open and will wait for the
1934 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001935 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001936
1937 WDI_Init must have been called.
1938
Jeff Johnsone7245742012-09-05 17:12:55 -07001939 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001940 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001941
Jeff Johnson295189b2012-06-20 16:38:30 -07001942 wdiStartRspCb: callback for passing back the response of
1943 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001944
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001946 callback
1947
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 @see WDI_Start
1949 @return Result of the function call
1950*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001951WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001952WDI_Start
1953(
1954 WDI_StartReqParamsType* pwdiStartParams,
1955 WDI_StartRspCb wdiStartRspCb,
1956 void* pUserData
1957)
1958{
1959 WDI_EventInfoType wdiEventData;
1960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1961
1962 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001963 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001964 ------------------------------------------------------------------------*/
1965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1966 {
1967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1968 "WDI API call before module is initialized - Fail request");
1969
Jeff Johnsone7245742012-09-05 17:12:55 -07001970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001971 }
1972
1973 /*------------------------------------------------------------------------
1974 Fill in Event data and post to the Main FSM
1975 ------------------------------------------------------------------------*/
1976 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001977 wdiEventData.pEventData = pwdiStartParams;
1978 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1979 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001980 wdiEventData.pUserData = pUserData;
1981
1982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1983
1984}/*WDI_Start*/
1985
1986/**
1987 @brief WDI_Stop will be called when the upper MAC is ready to
1988 stop any operation with the WLAN Device. Upon the call
1989 of this API the WLAN DAL will pack and send a HAL Stop
1990 message to the lower RIVA sub-system if the DAL Core is
1991 in started state.
1992
1993 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001994
1995 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001996
1997 WDI_Start must have been called.
1998
Jeff Johnsone7245742012-09-05 17:12:55 -07001999 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002000 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002001
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 wdiStopRspCb: callback for passing back the response of
2003 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002004
Jeff Johnson295189b2012-06-20 16:38:30 -07002005 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002006 callback
2007
Jeff Johnson295189b2012-06-20 16:38:30 -07002008 @see WDI_Start
2009 @return Result of the function call
2010*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002011WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002012WDI_Stop
2013(
2014 WDI_StopReqParamsType* pwdiStopParams,
2015 WDI_StopRspCb wdiStopRspCb,
2016 void* pUserData
2017)
2018{
2019 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07002020 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2022
2023 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 ------------------------------------------------------------------------*/
2026 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2027 {
2028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2029 "WDI API call before module is initialized - Fail request");
2030
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002032 }
2033
Jeff Johnson43971f52012-07-17 12:26:56 -07002034 /*Access to the global state must be locked before cleaning */
2035 wpalMutexAcquire(&pWDICtx->wptMutex);
2036
2037 /*Clear all pending request*/
2038 WDI_ClearPendingRequests(pWDICtx);
2039
2040 /*We have completed cleaning unlock now*/
2041 wpalMutexRelease(&pWDICtx->wptMutex);
2042
Jeff Johnson295189b2012-06-20 16:38:30 -07002043 /* Free the global variables */
2044 wpalMemoryFree(gpHostWlanFeatCaps);
2045 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002046 gpHostWlanFeatCaps = NULL;
2047 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002048
2049 /*------------------------------------------------------------------------
2050 Fill in Event data and post to the Main FSM
2051 ------------------------------------------------------------------------*/
2052 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 wdiEventData.pEventData = pwdiStopParams;
2054 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
2055 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002056 wdiEventData.pUserData = pUserData;
2057
2058 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2059
2060}/*WDI_Stop*/
2061
2062
2063
2064/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002065 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002066 needs to interact with DAL. DAL will free its control
2067 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002068
2069 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002070
2071 WDI_Stop must have been called.
2072
2073 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002074
Jeff Johnson295189b2012-06-20 16:38:30 -07002075 @see WDI_Stop
2076 @return Result of the function call
2077*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002078WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002079WDI_Close
2080(
2081 void
2082)
2083{
2084 wpt_uint8 i;
2085 WDI_EventInfoType wdiEventData;
2086 wpt_status wptStatus;
2087 wpt_status eventStatus;
2088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2089
2090 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002092 ------------------------------------------------------------------------*/
2093 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2094 {
2095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2096 "WDI API call before module is initialized - Fail request");
2097
Jeff Johnsone7245742012-09-05 17:12:55 -07002098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002099 }
2100
2101 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2102 (the control transport will be closed by the FSM and we'll want
2103 to wait until that completes)*/
2104 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 {
2107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002108 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 /* fall through and try to finish closing via the FSM */
2110 }
2111
2112 /*------------------------------------------------------------------------
2113 Fill in Event data and post to the Main FSM
2114 ------------------------------------------------------------------------*/
2115 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002116 wdiEventData.pEventData = NULL;
2117 wdiEventData.uEventDataSize = 0;
2118 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002119 wdiEventData.pUserData = NULL;
2120
2121 gWDIInitialized = eWLAN_PAL_FALSE;
2122
2123 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2124
2125 /*Wait for WCTS to close the control transport
2126 (but only if we were able to reset the event flag*/
2127 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2128 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002129 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002130 WDI_WCTS_ACTION_TIMEOUT);
2131 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2132 {
2133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002134 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002135 }
2136 }
2137
2138 /* Destroy the WCTS action event */
2139 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2140 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2141 {
2142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2143 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002144 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 }
2146
2147 /* Destroy the Set Power State event */
2148 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2149 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2150 {
2151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2152 "WDI Close failed to destroy an event");
2153
Jeff Johnsone7245742012-09-05 17:12:55 -07002154 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002155 }
2156
2157 /*------------------------------------------------------------------------
2158 Closes the Data Path Utility Module
2159 ------------------------------------------------------------------------*/
2160 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2161 {
2162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2163 "WDI Init failed to close the DP Util Module");
2164
Jeff Johnsone7245742012-09-05 17:12:55 -07002165 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002166 }
2167
2168 /*destroy the BSS sessions pending Queue */
2169 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2170 {
2171 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2172 }
2173
2174 /* destroy the WDI Pending Assoc Id Request Queue*/
2175 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2176
2177 /* destroy the WDI Pending Request Queue*/
2178 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002179
Jeff Johnson295189b2012-06-20 16:38:30 -07002180 /*destroy the response timer */
2181 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2182
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002183 /*destroy the SSR timer */
2184 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2185
Jeff Johnson295189b2012-06-20 16:38:30 -07002186 /*invalidate the main synchro mutex */
2187 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2188 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2189 {
2190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2191 "Failed to delete mutex %d", wptStatus);
2192 WDI_ASSERT(0);
2193 }
2194
2195 /*Clear control block. note that this will clear the "magic"
2196 which will inhibit all asynchronous callbacks*/
2197 WDI_CleanCB(&gWDICb);
2198
2199 return wptStatus;
2200
2201}/*WDI_Close*/
2202
2203/**
2204 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2205 This will do most of the WDI stop & close
2206 operations without doing any handshake with Riva
2207
2208 This will also make sure that the control transport
2209 will NOT be closed.
2210
2211 This request will not be queued.
2212
2213
2214 WDI_Start must have been called.
2215
2216 @param closeTransport: Close control channel if this is set
2217
2218 @return Result of the function call
2219*/
2220WDI_Status
2221WDI_Shutdown
2222(
2223 wpt_boolean closeTransport
2224)
2225{
2226 WDI_EventInfoType wdiEventData;
2227 wpt_status wptStatus;
2228 int i = 0;
2229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2230
2231 /*------------------------------------------------------------------------
2232 Sanity Check
2233 ------------------------------------------------------------------------*/
2234 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2235 {
2236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2237 "WDI API call before module is initialized - Fail request");
2238
2239 return WDI_STATUS_E_NOT_ALLOWED;
2240 }
2241
2242 /*------------------------------------------------------------------------
2243 Fill in Event data and post to the Main FSM
2244 ------------------------------------------------------------------------*/
2245 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2246 wdiEventData.pEventData = NULL;
2247 wdiEventData.uEventDataSize = 0;
2248
2249 /* Shutdown will not be queued, if the state is busy timer will be
2250 * stopped & this message will be processed.*/
2251 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2252 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2253 {
2254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002255 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 }
2257 /* Destroy the Set Power State event */
2258 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2259 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2260 {
2261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2262 "WDI Close failed to destroy an event");
2263
2264 WDI_ASSERT(0);
2265 }
2266 /*------------------------------------------------------------------------
2267 Closes the Data Path Utility Module
2268 ------------------------------------------------------------------------*/
2269 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2270 {
2271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2272 "WDI Init failed to close the DP Util Module");
2273
2274 WDI_ASSERT(0);
2275 }
2276 if ( closeTransport )
2277 {
2278 /* Close control transport, called from module unload */
2279 WCTS_CloseTransport(gWDICb.wctsHandle);
2280 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002281 else
2282 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002283 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002284 the pending messages in the transport queue */
2285 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2286 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002287 /*destroy the BSS sessions pending Queue */
2288 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2289 {
2290 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2291 }
2292
2293 /* destroy the WDI Pending Assoc Id Request Queue*/
2294 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2295 /* destroy the WDI Pending Request Queue*/
2296 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2297 /*destroy the response timer */
2298 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002299 /*destroy the SSR timer */
2300 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002301
2302 /*invalidate the main synchro mutex */
2303 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2304 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2305 {
2306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002307 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002308 WDI_ASSERT(0);
2309 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002310 /* Free the global variables */
2311 wpalMemoryFree(gpHostWlanFeatCaps);
2312 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002313 gpHostWlanFeatCaps = NULL;
2314 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002315 /*Clear control block. note that this will clear the "magic"
2316 which will inhibit all asynchronous callbacks*/
2317 WDI_CleanCB(&gWDICb);
2318 return wptStatus;
2319
2320}/*WDI_Shutdown*/
2321
2322
Jeff Johnsone7245742012-09-05 17:12:55 -07002323/*========================================================================
2324
Jeff Johnson295189b2012-06-20 16:38:30 -07002325 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002326
Jeff Johnson295189b2012-06-20 16:38:30 -07002327==========================================================================*/
2328
2329/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002330 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002331 the WLAN Device to get ready for a scan procedure. Upon
2332 the call of this API the WLAN DAL will pack and send a
2333 HAL Init Scan request message to the lower RIVA
2334 sub-system if DAL is in state STARTED.
2335
2336 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002337 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002338
2339 WDI_Start must have been called.
2340
2341 @param wdiInitScanParams: the init scan parameters as specified
2342 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002343
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 wdiInitScanRspCb: callback for passing back the response
2345 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002346
Jeff Johnson295189b2012-06-20 16:38:30 -07002347 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 callback
2349
Jeff Johnson295189b2012-06-20 16:38:30 -07002350 @see WDI_Start
2351 @return Result of the function call
2352*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002353WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002354WDI_InitScanReq
2355(
2356 WDI_InitScanReqParamsType* pwdiInitScanParams,
2357 WDI_InitScanRspCb wdiInitScanRspCb,
2358 void* pUserData
2359)
2360{
2361 WDI_EventInfoType wdiEventData;
2362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2363
2364 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002366 ------------------------------------------------------------------------*/
2367 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2368 {
2369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2370 "WDI API call before module is initialized - Fail request");
2371
Jeff Johnsone7245742012-09-05 17:12:55 -07002372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 }
2374
2375 /*------------------------------------------------------------------------
2376 Fill in Event data and post to the Main FSM
2377 ------------------------------------------------------------------------*/
2378 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002379 wdiEventData.pEventData = pwdiInitScanParams;
2380 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2381 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002382 wdiEventData.pUserData = pUserData;
2383
2384 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2385
2386}/*WDI_InitScanReq*/
2387
2388/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002389 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002390 wishes to change the Scan channel on the WLAN Device.
2391 Upon the call of this API the WLAN DAL will pack and
2392 send a HAL Start Scan request message to the lower RIVA
2393 sub-system if DAL is in state STARTED.
2394
2395 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002396 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002397
2398 WDI_InitScanReq must have been called.
2399
Jeff Johnsone7245742012-09-05 17:12:55 -07002400 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002402
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 wdiStartScanRspCb: callback for passing back the
2404 response of the start scan operation received from the
2405 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002406
Jeff Johnson295189b2012-06-20 16:38:30 -07002407 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 callback
2409
Jeff Johnson295189b2012-06-20 16:38:30 -07002410 @see WDI_InitScanReq
2411 @return Result of the function call
2412*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002413WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002414WDI_StartScanReq
2415(
2416 WDI_StartScanReqParamsType* pwdiStartScanParams,
2417 WDI_StartScanRspCb wdiStartScanRspCb,
2418 void* pUserData
2419)
2420{
2421 WDI_EventInfoType wdiEventData;
2422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2423
2424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002425 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 ------------------------------------------------------------------------*/
2427 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2428 {
2429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2430 "WDI API call before module is initialized - Fail request");
2431
Jeff Johnsone7245742012-09-05 17:12:55 -07002432 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002433 }
2434
2435 /*------------------------------------------------------------------------
2436 Fill in Event data and post to the Main FSM
2437 ------------------------------------------------------------------------*/
2438 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 wdiEventData.pEventData = pwdiStartScanParams;
2440 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2441 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002442 wdiEventData.pUserData = pUserData;
2443
2444 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2445
2446}/*WDI_StartScanReq*/
2447
2448
2449/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002450 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002451 wants to end scanning for a particular channel that it
2452 had set before by calling Scan Start on the WLAN Device.
2453 Upon the call of this API the WLAN DAL will pack and
2454 send a HAL End Scan request message to the lower RIVA
2455 sub-system if DAL is in state STARTED.
2456
2457 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002459
2460 WDI_StartScanReq must have been called.
2461
Jeff Johnsone7245742012-09-05 17:12:55 -07002462 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002463 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 wdiEndScanRspCb: callback for passing back the response
2466 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002469 callback
2470
Jeff Johnson295189b2012-06-20 16:38:30 -07002471 @see WDI_StartScanReq
2472 @return Result of the function call
2473*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002474WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002475WDI_EndScanReq
2476(
2477 WDI_EndScanReqParamsType* pwdiEndScanParams,
2478 WDI_EndScanRspCb wdiEndScanRspCb,
2479 void* pUserData
2480)
2481{
2482 WDI_EventInfoType wdiEventData;
2483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2484
2485 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 ------------------------------------------------------------------------*/
2488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2489 {
2490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2491 "WDI API call before module is initialized - Fail request");
2492
Jeff Johnsone7245742012-09-05 17:12:55 -07002493 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002494 }
2495
2496 /*------------------------------------------------------------------------
2497 Fill in Event data and post to the Main FSM
2498 ------------------------------------------------------------------------*/
2499 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002500 wdiEventData.pEventData = pwdiEndScanParams;
2501 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2502 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 wdiEventData.pUserData = pUserData;
2504
2505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2506
2507}/*WDI_EndScanReq*/
2508
2509
2510/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 completed the scan process on the WLAN Device. Upon the
2513 call of this API the WLAN DAL will pack and send a HAL
2514 Finish Scan Request request message to the lower RIVA
2515 sub-system if DAL is in state STARTED.
2516
2517 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002518 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002519
2520 WDI_InitScanReq must have been called.
2521
Jeff Johnsone7245742012-09-05 17:12:55 -07002522 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002523 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002524
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 wdiFinishScanRspCb: callback for passing back the
2526 response of the finish scan operation received from the
2527 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002528
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002530 callback
2531
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 @see WDI_InitScanReq
2533 @return Result of the function call
2534*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002536WDI_FinishScanReq
2537(
2538 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2539 WDI_FinishScanRspCb wdiFinishScanRspCb,
2540 void* pUserData
2541)
2542{
2543 WDI_EventInfoType wdiEventData;
2544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2545
2546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002548 ------------------------------------------------------------------------*/
2549 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2550 {
2551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2552 "WDI API call before module is initialized - Fail request");
2553
Jeff Johnsone7245742012-09-05 17:12:55 -07002554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002555 }
2556
2557 /*------------------------------------------------------------------------
2558 Fill in Event data and post to the Main FSM
2559 ------------------------------------------------------------------------*/
2560 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002561 wdiEventData.pEventData = pwdiFinishScanParams;
2562 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2563 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 wdiEventData.pUserData = pUserData;
2565
2566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2567
2568}/*WDI_FinishScanReq*/
2569
Jeff Johnsone7245742012-09-05 17:12:55 -07002570/*========================================================================
2571
Jeff Johnson295189b2012-06-20 16:38:30 -07002572 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002573
Jeff Johnson295189b2012-06-20 16:38:30 -07002574==========================================================================*/
2575
2576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002577 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002578 to start an association procedure to a BSS. Upon the
2579 call of this API the WLAN DAL will pack and send a HAL
2580 Join request message to the lower RIVA sub-system if
2581 DAL is in state STARTED.
2582
2583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002585
2586 WDI_Start must have been called.
2587
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002589 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 wdiJoinRspCb: callback for passing back the response of
2592 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002595 callback
2596
Jeff Johnson295189b2012-06-20 16:38:30 -07002597 @see WDI_Start
2598 @return Result of the function call
2599*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002600WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002601WDI_JoinReq
2602(
2603 WDI_JoinReqParamsType* pwdiJoinParams,
2604 WDI_JoinRspCb wdiJoinRspCb,
2605 void* pUserData
2606)
2607{
2608 WDI_EventInfoType wdiEventData;
2609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2610
2611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 ------------------------------------------------------------------------*/
2614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2615 {
2616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2617 "WDI API call before module is initialized - Fail request");
2618
Jeff Johnsone7245742012-09-05 17:12:55 -07002619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002620 }
2621
2622 /*------------------------------------------------------------------------
2623 Fill in Event data and post to the Main FSM
2624 ------------------------------------------------------------------------*/
2625 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002626 wdiEventData.pEventData = pwdiJoinParams;
2627 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2628 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002629 wdiEventData.pUserData = pUserData;
2630
2631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2632
2633}/*WDI_JoinReq*/
2634
2635/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002636 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002637 wishes to configure the newly acquired or in process of
2638 being acquired BSS to the HW . Upon the call of this API
2639 the WLAN DAL will pack and send a HAL Config BSS request
2640 message to the lower RIVA sub-system if DAL is in state
2641 STARTED.
2642
2643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002645
2646 WDI_JoinReq must have been called.
2647
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002650
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 wdiConfigBSSRspCb: callback for passing back the
2652 response of the config BSS operation received from the
2653 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002654
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002656 callback
2657
Jeff Johnson295189b2012-06-20 16:38:30 -07002658 @see WDI_JoinReq
2659 @return Result of the function call
2660*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002661WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002662WDI_ConfigBSSReq
2663(
2664 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2665 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2666 void* pUserData
2667)
2668{
2669 WDI_EventInfoType wdiEventData;
2670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2671
2672 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002673 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002674 ------------------------------------------------------------------------*/
2675 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2676 {
2677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2678 "WDI API call before module is initialized - Fail request");
2679
Jeff Johnsone7245742012-09-05 17:12:55 -07002680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002681 }
2682
2683 /*------------------------------------------------------------------------
2684 Fill in Event data and post to the Main FSM
2685 ------------------------------------------------------------------------*/
2686 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002687 wdiEventData.pEventData = pwdiConfigBSSParams;
2688 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2689 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002690 wdiEventData.pUserData = pUserData;
2691
2692 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2693
2694}/*WDI_ConfigBSSReq*/
2695
2696/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002697 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002698 disassociating from the BSS and wishes to notify HW.
2699 Upon the call of this API the WLAN DAL will pack and
2700 send a HAL Del BSS request message to the lower RIVA
2701 sub-system if DAL is in state STARTED.
2702
2703 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002704 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002705
2706 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2707
Jeff Johnsone7245742012-09-05 17:12:55 -07002708 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002710
Jeff Johnson295189b2012-06-20 16:38:30 -07002711 wdiDelBSSRspCb: callback for passing back the response
2712 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002713
Jeff Johnson295189b2012-06-20 16:38:30 -07002714 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002715 callback
2716
2717 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002718 @return Result of the function call
2719*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002721WDI_DelBSSReq
2722(
2723 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2724 WDI_DelBSSRspCb wdiDelBSSRspCb,
2725 void* pUserData
2726)
2727{
2728 WDI_EventInfoType wdiEventData;
2729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2730
2731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002733 ------------------------------------------------------------------------*/
2734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2735 {
2736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2737 "WDI API call before module is initialized - Fail request");
2738
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 }
2741
2742 /*------------------------------------------------------------------------
2743 Fill in Event data and post to the Main FSM
2744 ------------------------------------------------------------------------*/
2745 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002746 wdiEventData.pEventData = pwdiDelBSSParams;
2747 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2748 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002749 wdiEventData.pUserData = pUserData;
2750
2751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2752
2753}/*WDI_DelBSSReq*/
2754
2755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 associated to a BSS and wishes to configure HW for
2758 associated state. Upon the call of this API the WLAN DAL
2759 will pack and send a HAL Post Assoc request message to
2760 the lower RIVA sub-system if DAL is in state STARTED.
2761
2762 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002764
2765 WDI_JoinReq must have been called.
2766
2767 @param wdiPostAssocReqParams: the assoc parameters as specified
2768 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002769
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 wdiPostAssocRspCb: callback for passing back the
2771 response of the post assoc operation received from the
2772 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002773
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002775 callback
2776
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 @see WDI_JoinReq
2778 @return Result of the function call
2779*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002780WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002781WDI_PostAssocReq
2782(
2783 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2784 WDI_PostAssocRspCb wdiPostAssocRspCb,
2785 void* pUserData
2786)
2787{
2788 WDI_EventInfoType wdiEventData;
2789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2790
2791 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002792 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 ------------------------------------------------------------------------*/
2794 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2795 {
2796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2797 "WDI API call before module is initialized - Fail request");
2798
Jeff Johnsone7245742012-09-05 17:12:55 -07002799 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002800 }
2801
2802 /*------------------------------------------------------------------------
2803 Fill in Event data and post to the Main FSM
2804 ------------------------------------------------------------------------*/
2805 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002806 wdiEventData.pEventData = pwdiPostAssocReqParams;
2807 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2808 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002809 wdiEventData.pUserData = pUserData;
2810
2811 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2812
2813}/*WDI_PostAssocReq*/
2814
2815/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002816 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 association with another STA has ended and the station
2818 must be deleted from HW. Upon the call of this API the
2819 WLAN DAL will pack and send a HAL Del STA request
2820 message to the lower RIVA sub-system if DAL is in state
2821 STARTED.
2822
2823 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002824 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002825
2826 WDI_PostAssocReq must have been called.
2827
Jeff Johnsone7245742012-09-05 17:12:55 -07002828 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002829 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002830
Jeff Johnson295189b2012-06-20 16:38:30 -07002831 wdiDelSTARspCb: callback for passing back the response
2832 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002833
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002835 callback
2836
Jeff Johnson295189b2012-06-20 16:38:30 -07002837 @see WDI_PostAssocReq
2838 @return Result of the function call
2839*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002840WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002841WDI_DelSTAReq
2842(
2843 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2844 WDI_DelSTARspCb wdiDelSTARspCb,
2845 void* pUserData
2846)
2847{
2848 WDI_EventInfoType wdiEventData;
2849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2850
2851 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002852 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002853 ------------------------------------------------------------------------*/
2854 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2855 {
2856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2857 "WDI API call before module is initialized - Fail request");
2858
Jeff Johnsone7245742012-09-05 17:12:55 -07002859 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002860 }
2861
2862 /*------------------------------------------------------------------------
2863 Fill in Event data and post to the Main FSM
2864 ------------------------------------------------------------------------*/
2865 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002866 wdiEventData.pEventData = pwdiDelSTAParams;
2867 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2868 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 wdiEventData.pUserData = pUserData;
2870
2871 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2872
2873}/*WDI_DelSTAReq*/
2874
Jeff Johnsone7245742012-09-05 17:12:55 -07002875/*========================================================================
2876
Jeff Johnson295189b2012-06-20 16:38:30 -07002877 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002878
Jeff Johnson295189b2012-06-20 16:38:30 -07002879==========================================================================*/
2880
2881/**
2882 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2883 install a BSS encryption key on the HW. Upon the call of this
2884 API the WLAN DAL will pack and send a Set BSS Key request
2885 message to the lower RIVA sub-system if DAL is in state
2886 STARTED.
2887
2888 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002889 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002890
2891 WDI_PostAssocReq must have been called.
2892
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002895
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 wdiSetBSSKeyRspCb: callback for passing back the
2897 response of the set BSS Key operation received from the
2898 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002899
Jeff Johnson295189b2012-06-20 16:38:30 -07002900 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002901 callback
2902
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 @see WDI_PostAssocReq
2904 @return Result of the function call
2905*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002906WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002907WDI_SetBSSKeyReq
2908(
2909 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2910 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2911 void* pUserData
2912)
2913{
2914 WDI_EventInfoType wdiEventData;
2915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2916
2917 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002918 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002919 ------------------------------------------------------------------------*/
2920 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2921 {
2922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2923 "WDI API call before module is initialized - Fail request");
2924
Jeff Johnsone7245742012-09-05 17:12:55 -07002925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002926 }
2927
2928 /*------------------------------------------------------------------------
2929 Fill in Event data and post to the Main FSM
2930 ------------------------------------------------------------------------*/
2931 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002932 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2933 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2934 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002935 wdiEventData.pUserData = pUserData;
2936
2937 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2938
2939}/*WDI_SetBSSKeyReq*/
2940
2941/**
2942 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2943 uninstall a BSS key from HW. Upon the call of this API the
2944 WLAN DAL will pack and send a HAL Remove BSS Key request
2945 message to the lower RIVA sub-system if DAL is in state
2946 STARTED.
2947
2948 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002949 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002950
2951 WDI_SetBSSKeyReq must have been called.
2952
Jeff Johnsone7245742012-09-05 17:12:55 -07002953 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002954 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002955
Jeff Johnson295189b2012-06-20 16:38:30 -07002956 wdiRemoveBSSKeyRspCb: callback for passing back the
2957 response of the remove BSS key operation received from
2958 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002959
Jeff Johnson295189b2012-06-20 16:38:30 -07002960 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002961 callback
2962
Jeff Johnson295189b2012-06-20 16:38:30 -07002963 @see WDI_SetBSSKeyReq
2964 @return Result of the function call
2965*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002966WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002967WDI_RemoveBSSKeyReq
2968(
2969 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2970 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2971 void* pUserData
2972)
2973{
2974 WDI_EventInfoType wdiEventData;
2975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2976
2977 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002978 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002979 ------------------------------------------------------------------------*/
2980 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2981 {
2982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2983 "WDI API call before module is initialized - Fail request");
2984
Jeff Johnsone7245742012-09-05 17:12:55 -07002985 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002986 }
2987
2988 /*------------------------------------------------------------------------
2989 Fill in Event data and post to the Main FSM
2990 ------------------------------------------------------------------------*/
2991 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002992 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2993 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2994 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002995 wdiEventData.pUserData = pUserData;
2996
2997 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2998
2999}/*WDI_RemoveBSSKeyReq*/
3000
3001
3002/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003003 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07003004 ready to install a STA(ast) encryption key in HW. Upon
3005 the call of this API the WLAN DAL will pack and send a
3006 HAL Set STA Key request message to the lower RIVA
3007 sub-system if DAL is in state STARTED.
3008
3009 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003010 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003011
3012 WDI_PostAssocReq must have been called.
3013
Jeff Johnsone7245742012-09-05 17:12:55 -07003014 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003015 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003016
Jeff Johnson295189b2012-06-20 16:38:30 -07003017 wdiSetSTAKeyRspCb: callback for passing back the
3018 response of the set STA key operation received from the
3019 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003020
Jeff Johnson295189b2012-06-20 16:38:30 -07003021 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003022 callback
3023
Jeff Johnson295189b2012-06-20 16:38:30 -07003024 @see WDI_PostAssocReq
3025 @return Result of the function call
3026*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003027WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003028WDI_SetSTAKeyReq
3029(
3030 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
3031 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
3032 void* pUserData
3033)
3034{
3035 WDI_EventInfoType wdiEventData;
3036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3037
3038 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003039 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003040 ------------------------------------------------------------------------*/
3041 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3042 {
3043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3044 "WDI API call before module is initialized - Fail request");
3045
Jeff Johnsone7245742012-09-05 17:12:55 -07003046 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003047 }
3048
3049 /*------------------------------------------------------------------------
3050 Fill in Event data and post to the Main FSM
3051 ------------------------------------------------------------------------*/
3052 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003053 wdiEventData.pEventData = pwdiSetSTAKeyParams;
3054 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
3055 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003056 wdiEventData.pUserData = pUserData;
3057
3058 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3059
3060}/*WDI_SetSTAKeyReq*/
3061
3062
3063/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003064 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 wants to uninstall a previously set STA key in HW. Upon
3066 the call of this API the WLAN DAL will pack and send a
3067 HAL Remove STA Key request message to the lower RIVA
3068 sub-system if DAL is in state STARTED.
3069
3070 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003072
3073 WDI_SetSTAKeyReq must have been called.
3074
Jeff Johnsone7245742012-09-05 17:12:55 -07003075 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003076 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003077
Jeff Johnson295189b2012-06-20 16:38:30 -07003078 wdiRemoveSTAKeyRspCb: callback for passing back the
3079 response of the remove STA key operation received from
3080 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003081
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003083 callback
3084
Jeff Johnson295189b2012-06-20 16:38:30 -07003085 @see WDI_SetSTAKeyReq
3086 @return Result of the function call
3087*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003088WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003089WDI_RemoveSTAKeyReq
3090(
3091 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3092 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3093 void* pUserData
3094)
3095{
3096 WDI_EventInfoType wdiEventData;
3097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3098
3099 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003100 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003101 ------------------------------------------------------------------------*/
3102 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3103 {
3104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3105 "WDI API call before module is initialized - Fail request");
3106
Jeff Johnsone7245742012-09-05 17:12:55 -07003107 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003108 }
3109
3110 /*------------------------------------------------------------------------
3111 Fill in Event data and post to the Main FSM
3112 ------------------------------------------------------------------------*/
3113 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003114 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3115 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3116 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 wdiEventData.pUserData = pUserData;
3118
3119 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3120
3121}/*WDI_RemoveSTAKeyReq*/
3122
3123
3124/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003125 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 wants to install a STA Bcast encryption key on the HW.
3127 Upon the call of this API the WLAN DAL will pack and
3128 send a HAL Start request message to the lower RIVA
3129 sub-system if DAL is in state STARTED.
3130
3131 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003132 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003133
3134 WDI_PostAssocReq must have been called.
3135
Jeff Johnsone7245742012-09-05 17:12:55 -07003136 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003137 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003138
Jeff Johnson295189b2012-06-20 16:38:30 -07003139 wdiSetSTABcastKeyRspCb: callback for passing back the
3140 response of the set BSS Key operation received from the
3141 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003142
Jeff Johnson295189b2012-06-20 16:38:30 -07003143 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003144 callback
3145
Jeff Johnson295189b2012-06-20 16:38:30 -07003146 @see WDI_PostAssocReq
3147 @return Result of the function call
3148*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003149WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003150WDI_SetSTABcastKeyReq
3151(
3152 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3153 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3154 void* pUserData
3155)
3156
3157{
3158 WDI_EventInfoType wdiEventData;
3159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3160
3161 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003162 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003163 ------------------------------------------------------------------------*/
3164 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3165 {
3166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3167 "WDI API call before module is initialized - Fail request");
3168
Jeff Johnsone7245742012-09-05 17:12:55 -07003169 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003170 }
3171
3172 /*------------------------------------------------------------------------
3173 Fill in Event data and post to the Main FSM
3174 ------------------------------------------------------------------------*/
3175 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003176 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3177 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3178 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003179 wdiEventData.pUserData = pUserData;
3180
3181 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3182
3183}/*WDI_SetSTABcastKeyReq*/
3184
3185/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003186 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 MAC wants to uninstall a STA Bcast key from HW. Upon the
3188 call of this API the WLAN DAL will pack and send a HAL
3189 Remove STA Bcast Key request message to the lower RIVA
3190 sub-system if DAL is in state STARTED.
3191
3192 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003193 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003194
3195 WDI_SetSTABcastKeyReq must have been called.
3196
Jeff Johnsone7245742012-09-05 17:12:55 -07003197 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003198 parameters as specified by the Device
3199 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003200
Jeff Johnson295189b2012-06-20 16:38:30 -07003201 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3202 response of the remove STA Bcast key operation received
3203 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003204
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003206 callback
3207
Jeff Johnson295189b2012-06-20 16:38:30 -07003208 @see WDI_SetSTABcastKeyReq
3209 @return Result of the function call
3210*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003211WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003212WDI_RemoveSTABcastKeyReq
3213(
3214 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3215 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3216 void* pUserData
3217)
3218{
3219 WDI_EventInfoType wdiEventData;
3220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3221
3222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003224 ------------------------------------------------------------------------*/
3225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3226 {
3227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3228 "WDI API call before module is initialized - Fail request");
3229
Jeff Johnsone7245742012-09-05 17:12:55 -07003230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003231 }
3232
3233 /*------------------------------------------------------------------------
3234 Fill in Event data and post to the Main FSM
3235 ------------------------------------------------------------------------*/
3236 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003237 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3238 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3239 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003240 wdiEventData.pUserData = pUserData;
3241
3242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3243
3244}/*WDI_RemoveSTABcastKeyReq*/
3245
3246/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003247 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 MAC wants to set Max Tx Power to HW. Upon the
3249 call of this API the WLAN DAL will pack and send a HAL
3250 Remove STA Bcast Key request message to the lower RIVA
3251 sub-system if DAL is in state STARTED.
3252
3253 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003254 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003255
3256 WDI_SetSTABcastKeyReq must have been called.
3257
Jeff Johnsone7245742012-09-05 17:12:55 -07003258 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003259 parameters as specified by the Device
3260 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003261
Jeff Johnson295189b2012-06-20 16:38:30 -07003262 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3263 response of the remove STA Bcast key operation received
3264 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003265
Jeff Johnson295189b2012-06-20 16:38:30 -07003266 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003267 callback
3268
Jeff Johnson295189b2012-06-20 16:38:30 -07003269 @see WDI_SetMaxTxPowerReq
3270 @return Result of the function call
3271*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003272WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003273WDI_SetMaxTxPowerReq
3274(
3275 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3276 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3277 void* pUserData
3278)
3279{
3280 WDI_EventInfoType wdiEventData;
3281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3282
3283 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003284 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003285 ------------------------------------------------------------------------*/
3286 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3287 {
3288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3289 "WDI API call before module is initialized - Fail request");
3290
Jeff Johnsone7245742012-09-05 17:12:55 -07003291 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003292 }
3293
3294 /*------------------------------------------------------------------------
3295 Fill in Event data and post to the Main FSM
3296 ------------------------------------------------------------------------*/
3297 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003298 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3299 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3300 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003301 wdiEventData.pUserData = pUserData;
3302
3303 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3304}
3305
schang86c22c42013-03-13 18:41:24 -07003306/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003307 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3308 MAC wants to set Max Tx Power to HW for specific band.
3309
3310 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3311
3312 wdiReqStatusCb: callback for passing back the
3313 response msg from the device
3314
3315 pUserData: user data will be passed back with the
3316 callback
3317
3318 @see WDI_SetMaxTxPowerPerBandReq
3319 @return Result of the function call
3320*/
3321WDI_Status
3322WDI_SetMaxTxPowerPerBandReq
3323(
3324 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3325 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3326 void* pUserData
3327)
3328{
3329 WDI_EventInfoType wdiEventData;
3330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3331
3332 /*------------------------------------------------------------------------
3333 Sanity Check
3334 ------------------------------------------------------------------------*/
3335 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3336 {
3337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3338 "WDI API call before module is initialized - Fail request");
3339
3340 return WDI_STATUS_E_NOT_ALLOWED;
3341 }
3342
3343 /*------------------------------------------------------------------------
3344 Fill in Event data and post to the Main FSM
3345 ------------------------------------------------------------------------*/
3346 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3347 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3348 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3349 wdiEventData.pCBfnc = wdiReqStatusCb;
3350 wdiEventData.pUserData = pUserData;
3351
3352 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3353}
3354
3355/**
schang86c22c42013-03-13 18:41:24 -07003356 @brief WDI_SetTxPowerReq will be called when the upper
3357 MAC wants to set Tx Power to HW.
3358 In state BUSY this request will be queued. Request won't
3359 be allowed in any other state.
3360
3361
3362 @param pwdiSetTxPowerParams: set TS Power parameters
3363 BSSID and target TX Power with dbm included
3364
3365 wdiReqStatusCb: callback for passing back the response
3366
3367 pUserData: user data will be passed back with the
3368 callback
3369
3370 @return Result of the function call
3371*/
3372WDI_Status
3373WDI_SetTxPowerReq
3374(
3375 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3376 WDA_SetTxPowerRspCb wdiReqStatusCb,
3377 void* pUserData
3378)
3379{
3380 WDI_EventInfoType wdiEventData;
3381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3382
3383 /*------------------------------------------------------------------------
3384 Sanity Check
3385 ------------------------------------------------------------------------*/
3386 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3387 {
3388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3389 "WDI API call before module is initialized - Fail request");
3390
3391 return WDI_STATUS_E_NOT_ALLOWED;
3392 }
3393
3394 /*------------------------------------------------------------------------
3395 Fill in Event data and post to the Main FSM
3396 ------------------------------------------------------------------------*/
3397 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3398 wdiEventData.pEventData = pwdiSetTxPowerParams;
3399 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3400 wdiEventData.pCBfnc = wdiReqStatusCb;
3401 wdiEventData.pUserData = pUserData;
3402
3403 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3404}
3405
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003406#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003407WDI_Status
3408WDI_TSMStatsReq
3409(
3410 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3411 WDI_TsmRspCb wdiReqStatusCb,
3412 void* pUserData
3413)
3414{
3415 WDI_EventInfoType wdiEventData;
3416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003417 /*------------------------------------------------------------------------
3418 Sanity Check
3419 ------------------------------------------------------------------------*/
3420 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3421 {
3422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3423 "WDI API call before module is initialized - Fail request");
3424
3425 return WDI_STATUS_E_NOT_ALLOWED;
3426 }
3427
3428 /*------------------------------------------------------------------------
3429 Fill in Event data and post to the Main FSM
3430 ------------------------------------------------------------------------*/
3431 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3432 wdiEventData.pEventData = pwdiTsmReqParams;
3433 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3434 wdiEventData.pCBfnc = wdiReqStatusCb;
3435 wdiEventData.pUserData = pUserData;
3436
3437 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3438
3439}
3440#endif
3441
3442/*========================================================================
3443
3444 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003445
Jeff Johnson295189b2012-06-20 16:38:30 -07003446==========================================================================*/
3447
3448/**
3449 @brief WDI_AddTSReq will be called when the upper MAC to inform
3450 the device of a successful add TSpec negotiation. HW
3451 needs to receive the TSpec Info from the UMAC in order
3452 to configure properly the QoS data traffic. Upon the
3453 call of this API the WLAN DAL will pack and send a HAL
3454 Add TS request message to the lower RIVA sub-system if
3455 DAL is in state STARTED.
3456
3457 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003458 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003459
3460 WDI_PostAssocReq must have been called.
3461
3462 @param wdiAddTsReqParams: the add TS parameters as specified by
3463 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003464
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 wdiAddTsRspCb: callback for passing back the response of
3466 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003467
Jeff Johnson295189b2012-06-20 16:38:30 -07003468 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003469 callback
3470
Jeff Johnson295189b2012-06-20 16:38:30 -07003471 @see WDI_PostAssocReq
3472 @return Result of the function call
3473*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003474WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003475WDI_AddTSReq
3476(
3477 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3478 WDI_AddTsRspCb wdiAddTsRspCb,
3479 void* pUserData
3480)
3481{
3482 WDI_EventInfoType wdiEventData;
3483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3484
3485 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003486 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 ------------------------------------------------------------------------*/
3488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3489 {
3490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3491 "WDI API call before module is initialized - Fail request");
3492
Jeff Johnsone7245742012-09-05 17:12:55 -07003493 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003494 }
3495
3496 /*------------------------------------------------------------------------
3497 Fill in Event data and post to the Main FSM
3498 ------------------------------------------------------------------------*/
3499 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003500 wdiEventData.pEventData = pwdiAddTsReqParams;
3501 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3502 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003503 wdiEventData.pUserData = pUserData;
3504
3505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3506
3507}/*WDI_AddTSReq*/
3508
3509
3510
3511/**
3512 @brief WDI_DelTSReq will be called when the upper MAC has ended
3513 admission on a specific AC. This is to inform HW that
3514 QoS traffic parameters must be rest. Upon the call of
3515 this API the WLAN DAL will pack and send a HAL Del TS
3516 request message to the lower RIVA sub-system if DAL is
3517 in state STARTED.
3518
3519 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003520 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003521
3522 WDI_AddTSReq must have been called.
3523
3524 @param wdiDelTsReqParams: the del TS parameters as specified by
3525 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003526
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 wdiDelTsRspCb: callback for passing back the response of
3528 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003531 callback
3532
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 @see WDI_AddTSReq
3534 @return Result of the function call
3535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003537WDI_DelTSReq
3538(
3539 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3540 WDI_DelTsRspCb wdiDelTsRspCb,
3541 void* pUserData
3542)
3543{
3544 WDI_EventInfoType wdiEventData;
3545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3546
3547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003549 ------------------------------------------------------------------------*/
3550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3551 {
3552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3553 "WDI API call before module is initialized - Fail request");
3554
Jeff Johnsone7245742012-09-05 17:12:55 -07003555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003556 }
3557
3558 /*------------------------------------------------------------------------
3559 Fill in Event data and post to the Main FSM
3560 ------------------------------------------------------------------------*/
3561 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003562 wdiEventData.pEventData = pwdiDelTsReqParams;
3563 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3564 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003565 wdiEventData.pUserData = pUserData;
3566
3567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3568
3569}/*WDI_DelTSReq*/
3570
3571
3572
3573/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003574 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003575 wishes to update the EDCA parameters used by HW for QoS
3576 data traffic. Upon the call of this API the WLAN DAL
3577 will pack and send a HAL Update EDCA Params request
3578 message to the lower RIVA sub-system if DAL is in state
3579 STARTED.
3580
3581 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003582 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003583
3584 WDI_PostAssocReq must have been called.
3585
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 wdiUpdateEDCAParamsRspCb: callback for passing back the
3590 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003591
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003593 callback
3594
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 @see WDI_PostAssocReq
3596 @return Result of the function call
3597*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003598WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003599WDI_UpdateEDCAParams
3600(
3601 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3602 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3603 void* pUserData
3604)
3605{
3606 WDI_EventInfoType wdiEventData;
3607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3608
3609 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003611 ------------------------------------------------------------------------*/
3612 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3613 {
3614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3615 "WDI API call before module is initialized - Fail request");
3616
Jeff Johnsone7245742012-09-05 17:12:55 -07003617 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003618 }
3619
3620 /*------------------------------------------------------------------------
3621 Fill in Event data and post to the Main FSM
3622 ------------------------------------------------------------------------*/
3623 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003624 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3625 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3626 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003627 wdiEventData.pUserData = pUserData;
3628
3629 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3630
3631}/*WDI_UpdateEDCAParams*/
3632
3633
3634/**
3635 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3636 successfully a BA session and needs to notify the HW for
3637 the appropriate settings to take place. Upon the call of
3638 this API the WLAN DAL will pack and send a HAL Add BA
3639 request message to the lower RIVA sub-system if DAL is
3640 in state STARTED.
3641
3642 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003643 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003644
3645 WDI_PostAssocReq must have been called.
3646
3647 @param wdiAddBAReqParams: the add BA parameters as specified by
3648 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003649
Jeff Johnson295189b2012-06-20 16:38:30 -07003650 wdiAddBARspCb: callback for passing back the response of
3651 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003652
Jeff Johnson295189b2012-06-20 16:38:30 -07003653 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003654 callback
3655
Jeff Johnson295189b2012-06-20 16:38:30 -07003656 @see WDI_PostAssocReq
3657 @return Result of the function call
3658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003660WDI_AddBASessionReq
3661(
3662 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3663 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3664 void* pUserData
3665)
3666{
3667 WDI_EventInfoType wdiEventData;
3668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3669
3670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003671 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003672 ------------------------------------------------------------------------*/
3673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3674 {
3675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3676 "WDI API call before module is initialized - Fail request");
3677
Jeff Johnsone7245742012-09-05 17:12:55 -07003678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003679 }
3680
3681 /*------------------------------------------------------------------------
3682 Fill in Event data and post to the Main FSM
3683 ------------------------------------------------------------------------*/
3684 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003685 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3686 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3687 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 wdiEventData.pUserData = pUserData;
3689
3690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3691
3692}/*WDI_AddBASessionReq*/
3693
3694/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003695 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003696 inform HW that it has deleted a previously created BA
3697 session. Upon the call of this API the WLAN DAL will
3698 pack and send a HAL Del BA request message to the lower
3699 RIVA sub-system if DAL is in state STARTED.
3700
3701 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003702 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003703
3704 WDI_AddBAReq must have been called.
3705
3706 @param wdiDelBAReqParams: the del BA parameters as specified by
3707 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003708
Jeff Johnson295189b2012-06-20 16:38:30 -07003709 wdiDelBARspCb: callback for passing back the response of
3710 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003711
Jeff Johnson295189b2012-06-20 16:38:30 -07003712 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003713 callback
3714
Jeff Johnson295189b2012-06-20 16:38:30 -07003715 @see WDI_AddBAReq
3716 @return Result of the function call
3717*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003718WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003719WDI_DelBAReq
3720(
3721 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3722 WDI_DelBARspCb wdiDelBARspCb,
3723 void* pUserData
3724)
3725{
3726 WDI_EventInfoType wdiEventData;
3727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3728
3729 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003730 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003731 ------------------------------------------------------------------------*/
3732 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3733 {
3734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3735 "WDI API call before module is initialized - Fail request");
3736
Jeff Johnsone7245742012-09-05 17:12:55 -07003737 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 }
3739
3740 /*------------------------------------------------------------------------
3741 Fill in Event data and post to the Main FSM
3742 ------------------------------------------------------------------------*/
3743 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003744 wdiEventData.pEventData = pwdiDelBAReqParams;
3745 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3746 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 wdiEventData.pUserData = pUserData;
3748
3749 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3750
3751}/*WDI_DelBAReq*/
3752
Jeff Johnsone7245742012-09-05 17:12:55 -07003753/*========================================================================
3754
Jeff Johnson295189b2012-06-20 16:38:30 -07003755 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003756
Jeff Johnson295189b2012-06-20 16:38:30 -07003757==========================================================================*/
3758
3759/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003761 wants to set the power save related configurations of
3762 the WLAN Device. Upon the call of this API the WLAN DAL
3763 will pack and send a HAL Update CFG request message to
3764 the lower RIVA sub-system if DAL is in state STARTED.
3765
3766 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003767 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003768
3769 WDI_Start must have been called.
3770
Jeff Johnsone7245742012-09-05 17:12:55 -07003771 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003772 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003773
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 wdiSetPwrSaveCfgCb: callback for passing back the
3775 response of the set power save cfg operation received
3776 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003777
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003779 callback
3780
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003782 @return Result of the function call
3783*/
3784WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003785WDI_SetPwrSaveCfgReq
3786(
3787 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3788 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3789 void* pUserData
3790)
3791{
3792 WDI_EventInfoType wdiEventData;
3793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3794
3795 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003796 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 ------------------------------------------------------------------------*/
3798 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3799 {
3800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3801 "WDI API call before module is initialized - Fail request");
3802
Jeff Johnsone7245742012-09-05 17:12:55 -07003803 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003804 }
3805
3806 /*------------------------------------------------------------------------
3807 Fill in Event data and post to the Main FSM
3808 ------------------------------------------------------------------------*/
3809 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003810 wdiEventData.pEventData = pwdiPowerSaveCfg;
3811 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3812 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 wdiEventData.pUserData = pUserData;
3814
3815 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3816
3817}/*WDI_SetPwrSaveCfgReq*/
3818
3819/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003820 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003821 request the device to get into IMPS power state. Upon
3822 the call of this API the WLAN DAL will send a HAL Enter
3823 IMPS request message to the lower RIVA sub-system if DAL
3824 is in state STARTED.
3825
3826 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003827 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003828
Jeff Johnsone7245742012-09-05 17:12:55 -07003829
3830 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 response of the Enter IMPS operation received from the
3832 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003833
Jeff Johnson295189b2012-06-20 16:38:30 -07003834 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003835 callback
3836
Jeff Johnson295189b2012-06-20 16:38:30 -07003837 @see WDI_Start
3838 @return Result of the function call
3839*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003840WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003841WDI_EnterImpsReq
3842(
Mihir Shetea4306052014-03-25 00:02:54 +05303843 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003844 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3845 void* pUserData
3846)
3847{
3848 WDI_EventInfoType wdiEventData;
3849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3850
3851 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003852 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003853 ------------------------------------------------------------------------*/
3854 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3855 {
3856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3857 "WDI API call before module is initialized - Fail request");
3858
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003860 }
3861
3862 /*------------------------------------------------------------------------
3863 Fill in Event data and post to the Main FSM
3864 ------------------------------------------------------------------------*/
3865 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303866 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3867 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 wdiEventData.pUserData = pUserData;
3870
3871 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3872
3873}/*WDI_EnterImpsReq*/
3874
3875/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003876 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003877 request the device to get out of IMPS power state. Upon
3878 the call of this API the WLAN DAL will send a HAL Exit
3879 IMPS request message to the lower RIVA sub-system if DAL
3880 is in state STARTED.
3881
3882 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003884
Jeff Johnson295189b2012-06-20 16:38:30 -07003885
Jeff Johnsone7245742012-09-05 17:12:55 -07003886
3887 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003889
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 callback
3892
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 @see WDI_Start
3894 @return Result of the function call
3895*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003896WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003897WDI_ExitImpsReq
3898(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303899 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003900 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3901 void* pUserData
3902)
3903{
3904 WDI_EventInfoType wdiEventData;
3905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3906
3907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 ------------------------------------------------------------------------*/
3910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3911 {
3912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3913 "WDI API call before module is initialized - Fail request");
3914
Jeff Johnsone7245742012-09-05 17:12:55 -07003915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003916 }
3917
3918 /*------------------------------------------------------------------------
3919 Fill in Event data and post to the Main FSM
3920 ------------------------------------------------------------------------*/
3921 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303922 wdiEventData.pEventData = pwdiExitImpsReqParams;
3923 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 wdiEventData.pUserData = pUserData;
3926
3927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3928
3929}/*WDI_ExitImpsReq*/
3930
3931/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 request the device to get into BMPS power state. Upon
3934 the call of this API the WLAN DAL will pack and send a
3935 HAL Enter BMPS request message to the lower RIVA
3936 sub-system if DAL is in state STARTED.
3937
3938 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003940
3941 WDI_PostAssocReq must have been called.
3942
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 wdiEnterBmpsRspCb: callback for passing back the
3947 response of the Enter BMPS operation received from the
3948 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003949
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003951 callback
3952
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 @see WDI_PostAssocReq
3954 @return Result of the function call
3955*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003957WDI_EnterBmpsReq
3958(
3959 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3960 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3961 void* pUserData
3962)
3963{
3964 WDI_EventInfoType wdiEventData;
3965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3966
3967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 ------------------------------------------------------------------------*/
3970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3971 {
3972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3973 "WDI API call before module is initialized - Fail request");
3974
Jeff Johnsone7245742012-09-05 17:12:55 -07003975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003976 }
3977
3978 /*------------------------------------------------------------------------
3979 Fill in Event data and post to the Main FSM
3980 ------------------------------------------------------------------------*/
3981 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003982 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3983 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3984 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 wdiEventData.pUserData = pUserData;
3986
3987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3988
3989}/*WDI_EnterBmpsReq*/
3990
3991/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003993 request the device to get out of BMPS power state. Upon
3994 the call of this API the WLAN DAL will pack and send a
3995 HAL Exit BMPS request message to the lower RIVA
3996 sub-system if DAL is in state STARTED.
3997
3998 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004000
4001 WDI_PostAssocReq must have been called.
4002
Jeff Johnsone7245742012-09-05 17:12:55 -07004003 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004004 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 wdiExitBmpsRspCb: callback for passing back the response
4007 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004008
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004010 callback
4011
Jeff Johnson295189b2012-06-20 16:38:30 -07004012 @see WDI_PostAssocReq
4013 @return Result of the function call
4014*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004015WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004016WDI_ExitBmpsReq
4017(
4018 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
4019 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
4020 void* pUserData
4021)
4022{
4023 WDI_EventInfoType wdiEventData;
4024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4025
4026 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004027 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004028 ------------------------------------------------------------------------*/
4029 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4030 {
4031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4032 "WDI API call before module is initialized - Fail request");
4033
Jeff Johnsone7245742012-09-05 17:12:55 -07004034 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004035 }
4036
4037 /*------------------------------------------------------------------------
4038 Fill in Event data and post to the Main FSM
4039 ------------------------------------------------------------------------*/
4040 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004041 wdiEventData.pEventData = pwdiExitBmpsReqParams;
4042 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
4043 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004044 wdiEventData.pUserData = pUserData;
4045
4046 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4047
4048}/*WDI_ExitBmpsReq*/
4049
4050/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 request the device to get into UAPSD power state. Upon
4053 the call of this API the WLAN DAL will pack and send a
4054 HAL Enter UAPSD request message to the lower RIVA
4055 sub-system if DAL is in state STARTED.
4056
4057 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004059
4060 WDI_PostAssocReq must have been called.
4061 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004062
4063 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004065
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 wdiEnterUapsdRspCb: callback for passing back the
4067 response of the Enter UAPSD operation received from the
4068 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004069
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 callback
4072
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4074 @return Result of the function call
4075*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004076WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004077WDI_EnterUapsdReq
4078(
4079 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4080 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4081 void* pUserData
4082)
4083{
4084 WDI_EventInfoType wdiEventData;
4085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4086
4087 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 ------------------------------------------------------------------------*/
4090 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4091 {
4092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4093 "WDI API call before module is initialized - Fail request");
4094
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 }
4097
4098 /*------------------------------------------------------------------------
4099 Fill in Event data and post to the Main FSM
4100 ------------------------------------------------------------------------*/
4101 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4103 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4104 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 wdiEventData.pUserData = pUserData;
4106
4107 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4108
4109}/*WDI_EnterUapsdReq*/
4110
4111/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 request the device to get out of UAPSD power state. Upon
4114 the call of this API the WLAN DAL will send a HAL Exit
4115 UAPSD request message to the lower RIVA sub-system if
4116 DAL is in state STARTED.
4117
4118 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004120
4121 WDI_PostAssocReq must have been called.
4122
Jeff Johnsone7245742012-09-05 17:12:55 -07004123 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 response of the Exit UAPSD operation received from the
4125 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004126
Jeff Johnson295189b2012-06-20 16:38:30 -07004127 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004128 callback
4129
Jeff Johnson295189b2012-06-20 16:38:30 -07004130 @see WDI_PostAssocReq
4131 @return Result of the function call
4132*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004133WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004134WDI_ExitUapsdReq
4135(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004136 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004137 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4138 void* pUserData
4139)
4140{
4141 WDI_EventInfoType wdiEventData;
4142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4143
4144 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 ------------------------------------------------------------------------*/
4147 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4148 {
4149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4150 "WDI API call before module is initialized - Fail request");
4151
Jeff Johnsone7245742012-09-05 17:12:55 -07004152 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004153 }
4154
4155 /*------------------------------------------------------------------------
4156 Fill in Event data and post to the Main FSM
4157 ------------------------------------------------------------------------*/
4158 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004159 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4160 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004162 wdiEventData.pUserData = pUserData;
4163
4164 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4165
4166}/*WDI_ExitUapsdReq*/
4167
4168/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004170 MAC wants to set the UAPSD related configurations
4171 of an associated STA (while acting as an AP) to the WLAN
4172 Device. Upon the call of this API the WLAN DAL will pack
4173 and send a HAL Update UAPSD params request message to
4174 the lower RIVA sub-system if DAL is in state STARTED.
4175
4176 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004177 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004178
4179 WDI_ConfigBSSReq must have been called.
4180
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004182 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004183
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 wdiUpdateUapsdParamsCb: callback for passing back the
4185 response of the update UAPSD params operation received
4186 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004187
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004189 callback
4190
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 @see WDI_ConfigBSSReq
4192 @return Result of the function call
4193*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004194WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004195WDI_UpdateUapsdParamsReq
4196(
4197 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4198 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4199 void* pUserData
4200)
4201{
4202 WDI_EventInfoType wdiEventData;
4203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4204
4205 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 ------------------------------------------------------------------------*/
4208 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4209 {
4210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4211 "WDI API call before module is initialized - Fail request");
4212
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004214 }
4215
4216 /*------------------------------------------------------------------------
4217 Fill in Event data and post to the Main FSM
4218 ------------------------------------------------------------------------*/
4219 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004220 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004221 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004222 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 wdiEventData.pUserData = pUserData;
4224
4225 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4226
4227}/*WDI_UpdateUapsdParamsReq*/
4228
4229/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004231 MAC wants to set the UAPSD related configurations before
4232 requesting for enter UAPSD power state to the WLAN
4233 Device. Upon the call of this API the WLAN DAL will pack
4234 and send a HAL Set UAPSD params request message to
4235 the lower RIVA sub-system if DAL is in state STARTED.
4236
4237 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004238 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004239
4240 WDI_PostAssocReq must have been called.
4241
4242 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4243 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004244
Jeff Johnson295189b2012-06-20 16:38:30 -07004245 wdiSetUapsdAcParamsCb: callback for passing back the
4246 response of the set UAPSD params operation received from
4247 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004248
Jeff Johnson295189b2012-06-20 16:38:30 -07004249 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004250 callback
4251
Jeff Johnson295189b2012-06-20 16:38:30 -07004252 @see WDI_PostAssocReq
4253 @return Result of the function call
4254*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004256WDI_SetUapsdAcParamsReq
4257(
4258 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4259 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4260 void* pUserData
4261)
4262{
4263 WDI_EventInfoType wdiEventData;
4264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4265
4266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 ------------------------------------------------------------------------*/
4269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4270 {
4271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4272 "WDI API call before module is initialized - Fail request");
4273
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 }
4276
4277 /*------------------------------------------------------------------------
4278 Fill in Event data and post to the Main FSM
4279 ------------------------------------------------------------------------*/
4280 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004281 wdiEventData.pEventData = pwdiUapsdInfo;
4282 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4283 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004284 wdiEventData.pUserData = pUserData;
4285
4286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4287
4288}/*WDI_SetUapsdAcParamsReq*/
4289
4290/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304291 @brief WDI_FWLoggingDXEdoneInd
4292
4293 FW Logging DXE done Indication from the upper layer will be sent
4294 down to HAL
4295
4296 @param WDI_FWLoggingDXEdoneIndInfoType
4297
4298 @see
4299
4300 @return Status of the request
4301*/
4302WDI_Status
4303WDI_FWLoggingDXEdoneInd
4304(
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304305 wpt_uint32 data
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304306)
4307{
4308
4309 WDI_EventInfoType wdiEventData;
4310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4311
4312 /*------------------------------------------------------------------------
4313 Sanity Check
4314 ------------------------------------------------------------------------*/
4315 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4316 {
4317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4318 "WDI API call before module is initialized - Fail request");
4319
4320 return WDI_STATUS_E_NOT_ALLOWED;
4321 }
4322
4323 /*------------------------------------------------------------------------
4324 Fill in Event data and post to the Main FSM
4325 ------------------------------------------------------------------------*/
4326 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304327 wdiEventData.pEventData = (void *)&data;
4328 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304329 wdiEventData.pCBfnc = NULL;
4330 wdiEventData.pUserData = NULL;
4331
4332 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4333
4334}/*WDI_FWLoggingDXEdoneInd*/
4335
4336/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304337 @brief WDI_GetFrameLogReq will be called when the upper
4338 MAC wants to initialize frame logging. Upon the call of
4339 this API the WLAN DAL will pack and send a HAL
4340 Frame logging init request message to
4341 the lower RIVA sub-system.
4342
4343 In state BUSY this request will be queued. Request won't
4344 be allowed in any other state.
4345
4346
4347 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4348 as specified by the Device Interface
4349
4350 wdiGetFrameLogRspCb: callback for passing back the
4351 response of the frame logging init operation received
4352 from the device
4353
4354 pUserData: user data will be passed back with the
4355 callback
4356
4357 @return Result of the function call
4358*/
4359WDI_Status
4360WDI_GetFrameLogReq
4361(
4362 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4363 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4364 void* pUserData
4365)
4366{
4367 WDI_EventInfoType wdiEventData;
4368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4369
4370 /*------------------------------------------------------------------------
4371 Sanity Check
4372 ------------------------------------------------------------------------*/
4373 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4374 {
4375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4376 "WDI API call before module is initialized - Fail request");
4377
4378 return WDI_STATUS_E_NOT_ALLOWED;
4379 }
4380
4381 /*------------------------------------------------------------------------
4382 Fill in Event data and post to the Main FSM
4383 ------------------------------------------------------------------------*/
4384 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4385 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4386 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4387 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4388 wdiEventData.pUserData = pUserData;
4389
4390 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4391}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304392
4393
4394/**
4395 @brief WDI_FatalEventLogsReq will be called when the upper
4396 MAC wants to send the flush command. Upon the call of
4397 this API the WLAN DAL will pack and send a HAL
4398 Fatal Event Req message to the lower RIVA sub-system.
4399
4400 In state BUSY this request will be queued. Request won't
4401 be allowed in any other state.
4402
4403
4404 @param pwdiFlushLogsReqInfo: the Flush Logs params
4405 as specified by the Device Interface
4406
4407 wdiFlushLogsRspCb: callback for passing back the
4408 response of the Flush Logs operation received
4409 from the device
4410
4411 pUserData: user data will be passed back with the
4412 callback
4413
4414 @return Result of the function call
4415*/
4416
4417WDI_Status
4418WDI_FatalEventLogsReq
4419(
4420 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4421 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4422 void* pUserData
4423)
4424{
4425 WDI_EventInfoType wdiEventData;
4426
4427 /*------------------------------------------------------------------------
4428 Sanity Check
4429 ------------------------------------------------------------------------*/
4430 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4431 {
4432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4433 "WDI API call before module is initialized - Fail request");
4434
4435 return WDI_STATUS_E_NOT_ALLOWED;
4436 }
4437
4438 /*------------------------------------------------------------------------
4439 Fill in Event data and post to the Main FSM
4440 ------------------------------------------------------------------------*/
4441 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4442 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4443 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4444 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4445 wdiEventData.pUserData = pUserData;
4446
4447 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4448
4449}
4450
4451
Siddharth Bhal64246172015-02-27 01:04:37 +05304452/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304453 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304454 MAC wants to initialize frame logging. Upon the call of
4455 this API the WLAN DAL will pack and send a HAL
4456 Frame logging init request message to
4457 the lower RIVA sub-system.
4458
4459 In state BUSY this request will be queued. Request won't
4460 be allowed in any other state.
4461
4462
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304463 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304464 as specified by the Device Interface
4465
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304466 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304467 response of the frame logging init operation received
4468 from the device
4469
4470 pUserData: user data will be passed back with the
4471 callback
4472
4473 @return Result of the function call
4474*/
4475WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304476WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304477(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304478 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4479 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304480 void* pUserData
4481)
4482{
4483 WDI_EventInfoType wdiEventData;
4484
4485 /*------------------------------------------------------------------------
4486 Sanity Check
4487 ------------------------------------------------------------------------*/
4488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4489 {
4490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4491 "WDI API call before module is initialized - Fail request");
4492
4493 return WDI_STATUS_E_NOT_ALLOWED;
4494 }
4495
4496 /*------------------------------------------------------------------------
4497 Fill in Event data and post to the Main FSM
4498 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304499 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4500 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4501 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4502 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304503 wdiEventData.pUserData = pUserData;
4504
4505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4506}
4507
c_manjeecfd1efb2015-09-25 19:32:34 +05304508
4509/**
4510 @brief WDI_FwrMemDumpReq will be called when the upper
4511 MAC wants to get fwr mem dump. Upon the call of
4512 this API the WLAN DAL will pack and send a HAL
4513 Frame logging init request message to
4514 the lower RIVA sub-system.
4515
4516 In state BUSY this request will be queued. Request won't
4517 be allowed in any other state.
4518
4519
4520 @param pWdiFwrMemDumpReq: the fwr mem dump req params
4521 as specified by the Device Interface
4522
4523 wdiFWLoggingInitReqCb: callback for passing back the
4524 response of the frame logging init operation received
4525 from the device
4526
4527 pUserData: user data will be passed back with the
4528 callback
4529
4530 @return Result of the function call
4531*/
4532
4533WDI_Status
4534WDI_FwrMemDumpReq
4535
4536(
4537 WDI_FwrMemDumpReqType *pwdiFwrMemDumpReqInfo,
4538 WDI_FwrMemDumpCb wdiFwrMemDumpRspCb,
4539 void* pUserData
4540)
4541{
4542 WDI_EventInfoType wdiEventData;
4543
4544 /*------------------------------------------------------------------------
4545 Sanity Check
4546 ------------------------------------------------------------------------*/
4547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4548 {
4549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4550 "WDI API call before module is initialized - Fail request");
4551
4552 return WDI_STATUS_E_NOT_ALLOWED;
4553 }
4554
4555 /*------------------------------------------------------------------------
4556 Fill in Event data and post to the Main FSM
4557 ------------------------------------------------------------------------*/
4558 wdiEventData.wdiRequest = WDI_FWR_MEM_DUMP_REQ;
4559 wdiEventData.pEventData = pwdiFwrMemDumpReqInfo;
4560 wdiEventData.uEventDataSize = sizeof(WDI_FwrMemDumpReqType);
4561 wdiEventData.pCBfnc = wdiFwrMemDumpRspCb;
4562 wdiEventData.pUserData = pUserData;
4563
4564 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4565}
4566
4567
4568
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304569/**
Gupta, Kapil7c34b322015-09-30 13:12:35 +05304570 @brief WDI_StartRssiMonitorReq will be called when the upper
4571 MAC wants to initialize Rssi Monitor on a bssid.
4572 Upon the call of this API the WLAN DAL will pack and
4573 send a HAL Rssi Monitor init request message to
4574 the lower RIVA sub-system.
4575
4576 In state BUSY this request will be queued. Request won't
4577 be allowed in any other state.
4578
4579
4580 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4581 as specified by the Device Interface
4582
4583 wdiRssiMonitorStartRspCb: callback for passing back the
4584 response of the rssi monitor operation received
4585 from the device
4586
4587 pUserData: user data will be passed back with the
4588 callback
4589
4590 @return Result of the function call
4591*/
4592WDI_Status
4593WDI_StartRssiMonitorReq
4594(
4595 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4596 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb,
4597 void* pUserData
4598)
4599{
4600 WDI_EventInfoType wdiEventData;
4601
4602 /*------------------------------------------------------------------------
4603 Sanity Check
4604 ------------------------------------------------------------------------*/
4605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4606 {
4607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4608 "WDI API call before module is initialized - Fail request");
4609
4610 return WDI_STATUS_E_NOT_ALLOWED;
4611 }
4612
4613 /*------------------------------------------------------------------------
4614 Fill in Event data and post to the Main FSM
4615 ------------------------------------------------------------------------*/
4616 wdiEventData.wdiRequest = WDI_START_RSSI_MONITOR_REQ;
4617 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4618 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4619 wdiEventData.pCBfnc = wdiRssiMonitorStartRspCb;
4620 wdiEventData.pUserData = pUserData;
4621
4622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4623}
4624
4625/**
4626 @brief WDI_StopRssiMonitorReq will be called when the upper
4627 MAC wants to stop Rssi Monitor on a bssid.
4628 Upon the call of this API the WLAN DAL will pack and
4629 send a HAL Rssi Monitor stop request message to
4630 the lower RIVA sub-system.
4631
4632 In state BUSY this request will be queued. Request won't
4633 be allowed in any other state.
4634
4635
4636 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4637 as specified by the Device Interface
4638
4639 wdiRssiMonitorStopRspCb: callback for passing back the
4640 response of the rssi monitor operation received
4641 from the device
4642
4643 pUserData: user data will be passed back with the
4644 callback
4645
4646 @return Result of the function call
4647*/
4648WDI_Status
4649WDI_StopRssiMonitorReq
4650(
4651 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4652 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb,
4653 void* pUserData
4654)
4655{
4656 WDI_EventInfoType wdiEventData;
4657
4658 /*------------------------------------------------------------------------
4659 Sanity Check
4660 ------------------------------------------------------------------------*/
4661 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4662 {
4663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4664 "WDI API call before module is initialized - Fail request");
4665
4666 return WDI_STATUS_E_NOT_ALLOWED;
4667 }
4668
4669 /*------------------------------------------------------------------------
4670 Fill in Event data and post to the Main FSM
4671 ------------------------------------------------------------------------*/
4672 wdiEventData.wdiRequest = WDI_STOP_RSSI_MONITOR_REQ;
4673 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4674 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4675 wdiEventData.pCBfnc = wdiRssiMonitorStopRspCb;
4676 wdiEventData.pUserData = pUserData;
4677
4678 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4679}
4680
4681
4682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 MAC wants to set/reset the RXP filters for received pkts
4685 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4686 and send a HAL configure RXP filter request message to
4687 the lower RIVA sub-system.
4688
4689 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004690 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004691
Jeff Johnsone7245742012-09-05 17:12:55 -07004692
4693 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004694 filter as specified by the Device
4695 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004696
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 wdiConfigureRxpFilterCb: callback for passing back the
4698 response of the configure RXP filter operation received
4699 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004700
Jeff Johnson295189b2012-06-20 16:38:30 -07004701 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004702 callback
4703
Jeff Johnson295189b2012-06-20 16:38:30 -07004704 @return Result of the function call
4705*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004706WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004707WDI_ConfigureRxpFilterReq
4708(
4709 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4710 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4711 void* pUserData
4712)
4713{
4714 WDI_EventInfoType wdiEventData;
4715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4716
4717 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004718 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 ------------------------------------------------------------------------*/
4720 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4721 {
4722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4723 "WDI API call before module is initialized - Fail request");
4724
Jeff Johnsone7245742012-09-05 17:12:55 -07004725 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004726 }
4727
4728 /*------------------------------------------------------------------------
4729 Fill in Event data and post to the Main FSM
4730 ------------------------------------------------------------------------*/
4731 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004732 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4733 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4734 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004735 wdiEventData.pUserData = pUserData;
4736
4737 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4738}/*WDI_ConfigureRxpFilterReq*/
4739
4740/**
4741 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4742 wants to set the beacon filters while in power save.
4743 Upon the call of this API the WLAN DAL will pack and
4744 send a Beacon filter request message to the
4745 lower RIVA sub-system.
4746
4747 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004748 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004749
Jeff Johnsone7245742012-09-05 17:12:55 -07004750
4751 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004752 filter as specified by the Device
4753 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004754
Jeff Johnson295189b2012-06-20 16:38:30 -07004755 wdiBeaconFilterCb: callback for passing back the
4756 response of the set beacon filter operation received
4757 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004758
Jeff Johnson295189b2012-06-20 16:38:30 -07004759 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004760 callback
4761
Jeff Johnson295189b2012-06-20 16:38:30 -07004762 @return Result of the function call
4763*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004764WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004765WDI_SetBeaconFilterReq
4766(
4767 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4768 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4769 void* pUserData
4770)
4771{
4772 WDI_EventInfoType wdiEventData;
4773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4774
4775 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004776 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 ------------------------------------------------------------------------*/
4778 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4779 {
4780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4781 "WDI API call before module is initialized - Fail request");
4782
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004784 }
4785
4786 /*------------------------------------------------------------------------
4787 Fill in Event data and post to the Main FSM
4788 ------------------------------------------------------------------------*/
4789 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004790 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004791 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004792 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004793 wdiEventData.pUserData = pUserData;
4794
4795 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4796}/*WDI_SetBeaconFilterReq*/
4797
4798/**
4799 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4800 wants to remove the beacon filter for particular IE
4801 while in power save. Upon the call of this API the WLAN
4802 DAL will pack and send a remove Beacon filter request
4803 message to the lower RIVA sub-system.
4804
4805 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004806 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004807
Jeff Johnsone7245742012-09-05 17:12:55 -07004808
4809 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 filter as specified by the Device
4811 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004812
Jeff Johnson295189b2012-06-20 16:38:30 -07004813 wdiBeaconFilterCb: callback for passing back the
4814 response of the remove beacon filter operation received
4815 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004816
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004818 callback
4819
Jeff Johnson295189b2012-06-20 16:38:30 -07004820 @return Result of the function call
4821*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004822WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004823WDI_RemBeaconFilterReq
4824(
4825 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4826 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4827 void* pUserData
4828)
4829{
4830 WDI_EventInfoType wdiEventData;
4831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4832
4833 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004834 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004835 ------------------------------------------------------------------------*/
4836 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4837 {
4838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4839 "WDI API call before module is initialized - Fail request");
4840
Jeff Johnsone7245742012-09-05 17:12:55 -07004841 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004842 }
4843
4844 /*------------------------------------------------------------------------
4845 Fill in Event data and post to the Main FSM
4846 ------------------------------------------------------------------------*/
4847 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004848 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004849 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004850 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004851 wdiEventData.pUserData = pUserData;
4852
4853 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4854}/*WDI_RemBeaconFilterReq*/
4855
4856/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004857 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 MAC wants to set the RSSI thresholds related
4859 configurations while in power save. Upon the call of
4860 this API the WLAN DAL will pack and send a HAL Set RSSI
4861 thresholds request message to the lower RIVA
4862 sub-system if DAL is in state STARTED.
4863
4864 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004865 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004866
4867 WDI_PostAssocReq must have been called.
4868
4869 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4870 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004871
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 wdiSetUapsdAcParamsCb: callback for passing back the
4873 response of the set UAPSD params operation received from
4874 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004875
Jeff Johnson295189b2012-06-20 16:38:30 -07004876 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004877 callback
4878
Jeff Johnson295189b2012-06-20 16:38:30 -07004879 @see WDI_PostAssocReq
4880 @return Result of the function call
4881*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004882WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004883WDI_SetRSSIThresholdsReq
4884(
4885 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4886 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4887 void* pUserData
4888)
4889{
4890 WDI_EventInfoType wdiEventData;
4891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4892
4893 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004894 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004895 ------------------------------------------------------------------------*/
4896 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4897 {
4898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4899 "WDI API call before module is initialized - Fail request");
4900
Jeff Johnsone7245742012-09-05 17:12:55 -07004901 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 }
4903
4904 /*------------------------------------------------------------------------
4905 Fill in Event data and post to the Main FSM
4906 ------------------------------------------------------------------------*/
4907 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004908 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004909 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004911 wdiEventData.pUserData = pUserData;
4912
4913 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4914}/* WDI_SetRSSIThresholdsReq*/
4915
4916/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004917 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004918 wants to set the filter to minimize unnecessary host
4919 wakeup due to broadcast traffic while in power save.
4920 Upon the call of this API the WLAN DAL will pack and
4921 send a HAL host offload request message to the
4922 lower RIVA sub-system if DAL is in state STARTED.
4923
4924 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004925 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004926
4927 WDI_PostAssocReq must have been called.
4928
Jeff Johnsone7245742012-09-05 17:12:55 -07004929 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004930 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004931
Jeff Johnson295189b2012-06-20 16:38:30 -07004932 wdiHostOffloadCb: callback for passing back the response
4933 of the host offload operation received from the
4934 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004935
Jeff Johnson295189b2012-06-20 16:38:30 -07004936 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004937 callback
4938
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 @see WDI_PostAssocReq
4940 @return Result of the function call
4941*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004942WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004943WDI_HostOffloadReq
4944(
4945 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4946 WDI_HostOffloadCb wdiHostOffloadCb,
4947 void* pUserData
4948)
4949{
4950 WDI_EventInfoType wdiEventData;
4951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4952
4953 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004954 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004955 ------------------------------------------------------------------------*/
4956 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4957 {
4958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4959 "WDI API call before module is initialized - Fail request");
4960
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004962 }
4963
4964 /*------------------------------------------------------------------------
4965 Fill in Event data and post to the Main FSM
4966 ------------------------------------------------------------------------*/
4967 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004968 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004969 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 wdiEventData.pUserData = pUserData;
4972
4973 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4974}/*WDI_HostOffloadReq*/
4975
4976/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 @brief WDI_KeepAliveReq will be called when the upper MAC
4978 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004979 and minimize unnecessary host wakeups due to while in power save.
4980 Upon the call of this API the WLAN DAL will pack and
4981 send a HAL Keep Alive request message to the
4982 lower RIVA sub-system if DAL is in state STARTED.
4983
4984 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004985 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004986
4987 WDI_PostAssocReq must have been called.
4988
Jeff Johnsone7245742012-09-05 17:12:55 -07004989 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004990 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004991
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 wdiKeepAliveCb: callback for passing back the response
4993 of the Keep Alive operation received from the
4994 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004995
Jeff Johnson295189b2012-06-20 16:38:30 -07004996 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 callback
4998
Jeff Johnson295189b2012-06-20 16:38:30 -07004999 @see WDI_PostAssocReq
5000 @return Result of the function call
5001*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005002WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005003WDI_KeepAliveReq
5004(
5005 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
5006 WDI_KeepAliveCb wdiKeepAliveCb,
5007 void* pUserData
5008)
5009{
5010 WDI_EventInfoType wdiEventData;
5011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5012
5013 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005014 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005015 ------------------------------------------------------------------------*/
5016 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5017 {
5018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5019 "WDI_KeepAliveReq: WDI API call before module "
5020 "is initialized - Fail request");
5021
Jeff Johnsone7245742012-09-05 17:12:55 -07005022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005023 }
5024
5025 /*------------------------------------------------------------------------
5026 Fill in Event data and post to the Main FSM
5027 ------------------------------------------------------------------------*/
5028 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005029 wdiEventData.pEventData = pwdiKeepAliveParams;
5030 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
5031 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005032 wdiEventData.pUserData = pUserData;
5033
5034 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5035}/*WDI_KeepAliveReq*/
5036
5037/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005038 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005039 wants to set the Wowl Bcast ptrn to minimize unnecessary
5040 host wakeup due to broadcast traffic while in power
5041 save. Upon the call of this API the WLAN DAL will pack
5042 and send a HAL Wowl Bcast ptrn request message to the
5043 lower RIVA sub-system if DAL is in state STARTED.
5044
5045 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005046 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005047
5048 WDI_PostAssocReq must have been called.
5049
Jeff Johnsone7245742012-09-05 17:12:55 -07005050 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005051 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005052
Jeff Johnson295189b2012-06-20 16:38:30 -07005053 wdiWowlAddBcPtrnCb: callback for passing back the
5054 response of the add Wowl bcast ptrn operation received
5055 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005056
Jeff Johnson295189b2012-06-20 16:38:30 -07005057 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005058 callback
5059
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 @see WDI_PostAssocReq
5061 @return Result of the function call
5062*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005063WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005064WDI_WowlAddBcPtrnReq
5065(
5066 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
5067 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
5068 void* pUserData
5069)
5070{
5071 WDI_EventInfoType wdiEventData;
5072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5073
5074 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005075 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005076 ------------------------------------------------------------------------*/
5077 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5078 {
5079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5080 "WDI API call before module is initialized - Fail request");
5081
Jeff Johnsone7245742012-09-05 17:12:55 -07005082 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005083 }
5084
5085 /*------------------------------------------------------------------------
5086 Fill in Event data and post to the Main FSM
5087 ------------------------------------------------------------------------*/
5088 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005089 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005090 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005091 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005092 wdiEventData.pUserData = pUserData;
5093
5094 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5095}/*WDI_WowlAddBcPtrnReq*/
5096
5097/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005098 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005099 wants to clear the Wowl Bcast ptrn. Upon the call of
5100 this API the WLAN DAL will pack and send a HAL delete
5101 Wowl Bcast ptrn request message to the lower RIVA
5102 sub-system if DAL is in state STARTED.
5103
5104 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005105 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005106
5107 WDI_WowlAddBcPtrnReq must have been called.
5108
Jeff Johnsone7245742012-09-05 17:12:55 -07005109 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005110 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005111
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 wdiWowlDelBcPtrnCb: callback for passing back the
5113 response of the del Wowl bcast ptrn operation received
5114 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005115
Jeff Johnson295189b2012-06-20 16:38:30 -07005116 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005117 callback
5118
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 @see WDI_WowlAddBcPtrnReq
5120 @return Result of the function call
5121*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005122WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005123WDI_WowlDelBcPtrnReq
5124(
5125 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
5126 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
5127 void* pUserData
5128)
5129{
5130 WDI_EventInfoType wdiEventData;
5131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5132
5133 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005135 ------------------------------------------------------------------------*/
5136 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5137 {
5138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5139 "WDI API call before module is initialized - Fail request");
5140
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 }
5143
5144 /*------------------------------------------------------------------------
5145 Fill in Event data and post to the Main FSM
5146 ------------------------------------------------------------------------*/
5147 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005149 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005150 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 wdiEventData.pUserData = pUserData;
5152
5153 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5154}/*WDI_WowlDelBcPtrnReq*/
5155
5156/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005157 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 wants to enter the Wowl state to minimize unnecessary
5159 host wakeup while in power save. Upon the call of this
5160 API the WLAN DAL will pack and send a HAL Wowl enter
5161 request message to the lower RIVA sub-system if DAL is
5162 in state STARTED.
5163
5164 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005166
5167 WDI_PostAssocReq must have been called.
5168
Jeff Johnsone7245742012-09-05 17:12:55 -07005169 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005170 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005171
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 wdiWowlEnterReqCb: callback for passing back the
5173 response of the enter Wowl operation received from the
5174 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005175
Jeff Johnson295189b2012-06-20 16:38:30 -07005176 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 callback
5178
Jeff Johnson295189b2012-06-20 16:38:30 -07005179 @see WDI_PostAssocReq
5180 @return Result of the function call
5181*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005182WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005183WDI_WowlEnterReq
5184(
5185 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
5186 WDI_WowlEnterReqCb wdiWowlEnterCb,
5187 void* pUserData
5188)
5189{
5190 WDI_EventInfoType wdiEventData;
5191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5192
5193 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005194 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005195 ------------------------------------------------------------------------*/
5196 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5197 {
5198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5199 "WDI API call before module is initialized - Fail request");
5200
Jeff Johnsone7245742012-09-05 17:12:55 -07005201 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005202 }
5203
5204 /*------------------------------------------------------------------------
5205 Fill in Event data and post to the Main FSM
5206 ------------------------------------------------------------------------*/
5207 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005208 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005209 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005210 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005211 wdiEventData.pUserData = pUserData;
5212
5213 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5214}/*WDI_WowlEnterReq*/
5215
5216/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005217 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 wants to exit the Wowl state. Upon the call of this API
5219 the WLAN DAL will pack and send a HAL Wowl exit request
5220 message to the lower RIVA sub-system if DAL is in state
5221 STARTED.
5222
5223 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005224 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005225
5226 WDI_WowlEnterReq must have been called.
5227
Jeff Johnsone7245742012-09-05 17:12:55 -07005228 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005229 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005230
Jeff Johnson295189b2012-06-20 16:38:30 -07005231 wdiWowlExitReqCb: callback for passing back the response
5232 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005233
Jeff Johnson295189b2012-06-20 16:38:30 -07005234 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005235 callback
5236
Jeff Johnson295189b2012-06-20 16:38:30 -07005237 @see WDI_WowlEnterReq
5238 @return Result of the function call
5239*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005240WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005241WDI_WowlExitReq
5242(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005243 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005244 WDI_WowlExitReqCb wdiWowlExitCb,
5245 void* pUserData
5246)
5247{
5248 WDI_EventInfoType wdiEventData;
5249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5250
5251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005252 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005253 ------------------------------------------------------------------------*/
5254 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5255 {
5256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5257 "WDI API call before module is initialized - Fail request");
5258
Jeff Johnsone7245742012-09-05 17:12:55 -07005259 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 }
5261
5262 /*------------------------------------------------------------------------
5263 Fill in Event data and post to the Main FSM
5264 ------------------------------------------------------------------------*/
5265 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005266 wdiEventData.pEventData = pwdiWowlExitParams;
5267 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005268 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005269 wdiEventData.pUserData = pUserData;
5270
5271 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5272}/*WDI_WowlExitReq*/
5273
5274/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005276 the upper MAC wants to dynamically adjusts the listen
5277 interval based on the WLAN/MSM activity. Upon the call
5278 of this API the WLAN DAL will pack and send a HAL
5279 configure Apps Cpu Wakeup State request message to the
5280 lower RIVA sub-system.
5281
5282 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005283 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005284
Jeff Johnsone7245742012-09-05 17:12:55 -07005285
5286 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005287 Apps Cpu Wakeup State as specified by the
5288 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005289
Jeff Johnson295189b2012-06-20 16:38:30 -07005290 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5291 back the response of the configure Apps Cpu Wakeup State
5292 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005293
Jeff Johnson295189b2012-06-20 16:38:30 -07005294 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005295 callback
5296
Jeff Johnson295189b2012-06-20 16:38:30 -07005297 @return Result of the function call
5298*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005299WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005300WDI_ConfigureAppsCpuWakeupStateReq
5301(
5302 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5303 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5304 void* pUserData
5305)
5306{
5307 WDI_EventInfoType wdiEventData;
5308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5309
5310 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005311 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005312 ------------------------------------------------------------------------*/
5313 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5314 {
5315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5316 "WDI API call before module is initialized - Fail request");
5317
Jeff Johnsone7245742012-09-05 17:12:55 -07005318 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 }
5320
5321 /*------------------------------------------------------------------------
5322 Fill in Event data and post to the Main FSM
5323 ------------------------------------------------------------------------*/
5324 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005325 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5326 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5327 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005328 wdiEventData.pUserData = pUserData;
5329
5330 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5331}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5332/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005333 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005334 to to perform a flush operation on a given AC. Upon the
5335 call of this API the WLAN DAL will pack and send a HAL
5336 Flush AC request message to the lower RIVA sub-system if
5337 DAL is in state STARTED.
5338
5339 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005340 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005341
5342 WDI_AddBAReq must have been called.
5343
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005346
Jeff Johnson295189b2012-06-20 16:38:30 -07005347 wdiFlushAcRspCb: callback for passing back the response
5348 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005349
Jeff Johnson295189b2012-06-20 16:38:30 -07005350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 callback
5352
Jeff Johnson295189b2012-06-20 16:38:30 -07005353 @see WDI_AddBAReq
5354 @return Result of the function call
5355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005357WDI_FlushAcReq
5358(
5359 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5360 WDI_FlushAcRspCb wdiFlushAcRspCb,
5361 void* pUserData
5362)
5363{
5364 WDI_EventInfoType wdiEventData;
5365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5366
5367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005369 ------------------------------------------------------------------------*/
5370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5371 {
5372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5373 "WDI API call before module is initialized - Fail request");
5374
Jeff Johnsone7245742012-09-05 17:12:55 -07005375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005376 }
5377
5378 /*------------------------------------------------------------------------
5379 Fill in Event data and post to the Main FSM
5380 ------------------------------------------------------------------------*/
5381 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005382 wdiEventData.pEventData = pwdiFlushAcReqParams;
5383 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5384 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005385 wdiEventData.pUserData = pUserData;
5386
5387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5388
5389}/*WDI_FlushAcReq*/
5390
5391/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 wants to notify the lower mac on a BT AMP event. This is
5394 to inform BTC-SLM that some BT AMP event occurred. Upon
5395 the call of this API the WLAN DAL will pack and send a
5396 HAL BT AMP event request message to the lower RIVA
5397 sub-system if DAL is in state STARTED.
5398
5399 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005400 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005401
Jeff Johnsone7245742012-09-05 17:12:55 -07005402
5403 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005404 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005405
Jeff Johnson295189b2012-06-20 16:38:30 -07005406 wdiBtAmpEventRspCb: callback for passing back the
5407 response of the BT AMP event operation received from the
5408 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005409
Jeff Johnson295189b2012-06-20 16:38:30 -07005410 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005411 callback
5412
Jeff Johnson295189b2012-06-20 16:38:30 -07005413 @return Result of the function call
5414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005416WDI_BtAmpEventReq
5417(
5418 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5419 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5420 void* pUserData
5421)
5422{
5423 WDI_EventInfoType wdiEventData;
5424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5425
5426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005428 ------------------------------------------------------------------------*/
5429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5430 {
5431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5432 "WDI API call before module is initialized - Fail request");
5433
Jeff Johnsone7245742012-09-05 17:12:55 -07005434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005435 }
5436
5437 /*------------------------------------------------------------------------
5438 Fill in Event data and post to the Main FSM
5439 ------------------------------------------------------------------------*/
5440 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005441 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5442 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5443 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005444 wdiEventData.pUserData = pUserData;
5445
5446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5447
5448}/*WDI_BtAmpEventReq*/
5449
Jeff Johnsone7245742012-09-05 17:12:55 -07005450#ifdef FEATURE_OEM_DATA_SUPPORT
5451/**
5452 @brief WDI_Start Oem Data Req will be called when the upper MAC
5453 wants to notify the lower mac on a oem data Req event.Upon
5454 the call of this API the WLAN DAL will pack and send a
5455 HAL OEM Data Req event request message to the lower RIVA
5456 sub-system if DAL is in state STARTED.
5457
5458 In state BUSY this request will be queued. Request won't
5459 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005460
5461
Jeff Johnsone7245742012-09-05 17:12:55 -07005462
5463 @param pwdiOemDataReqParams: the Oem Data Req as
5464 specified by the Device Interface
5465
5466 wdiStartOemDataRspCb: callback for passing back the
5467 response of the Oem Data Req received from the
5468 device
5469
5470 pUserData: user data will be passed back with the
5471 callback
5472
5473 @return Result of the function call
5474*/
5475WDI_Status
5476WDI_StartOemDataReq
5477(
5478 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5479 WDI_oemDataRspCb wdiOemDataRspCb,
5480 void* pUserData
5481)
5482{
5483 WDI_EventInfoType wdiEventData;
5484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5485
5486 /*------------------------------------------------------------------------
5487 Sanity Check
5488 ------------------------------------------------------------------------*/
5489 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5490 {
5491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5492 "WDI API call before module is initialized - Fail request");
5493
5494 return WDI_STATUS_E_NOT_ALLOWED;
5495 }
5496
5497 /*------------------------------------------------------------------------
5498 Fill in Event data and post to the Main FSM
5499 ------------------------------------------------------------------------*/
5500 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5501 wdiEventData.pEventData = pwdiOemDataReqParams;
5502 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5503 wdiEventData.pCBfnc = wdiOemDataRspCb;
5504 wdiEventData.pUserData = pUserData;
5505
5506 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5507
5508
5509}
5510
5511#endif
5512
5513
5514/*========================================================================
5515
Jeff Johnson295189b2012-06-20 16:38:30 -07005516 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005517
Jeff Johnson295189b2012-06-20 16:38:30 -07005518==========================================================================*/
5519/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005520 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005521 the WLAN HW to change the current channel of operation.
5522 Upon the call of this API the WLAN DAL will pack and
5523 send a HAL Start request message to the lower RIVA
5524 sub-system if DAL is in state STARTED.
5525
5526 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005527 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005528
5529 WDI_Start must have been called.
5530
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005532 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005533
Jeff Johnson295189b2012-06-20 16:38:30 -07005534 wdiSwitchChRspCb: callback for passing back the response
5535 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005536
Jeff Johnson295189b2012-06-20 16:38:30 -07005537 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005538 callback
5539
Jeff Johnson295189b2012-06-20 16:38:30 -07005540 @see WDI_Start
5541 @return Result of the function call
5542*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005543WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005544WDI_SwitchChReq
5545(
5546 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5547 WDI_SwitchChRspCb wdiSwitchChRspCb,
5548 void* pUserData
5549)
5550{
5551 WDI_EventInfoType wdiEventData;
5552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5553
5554 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005555 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005556 ------------------------------------------------------------------------*/
5557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5558 {
5559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5560 "WDI API call before module is initialized - Fail request");
5561
Jeff Johnsone7245742012-09-05 17:12:55 -07005562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005563 }
5564
5565 /*------------------------------------------------------------------------
5566 Fill in Event data and post to the Main FSM
5567 ------------------------------------------------------------------------*/
5568 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005569 wdiEventData.pEventData = pwdiSwitchChReqParams;
5570 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5571 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005572 wdiEventData.pUserData = pUserData;
5573
5574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5575
5576}/*WDI_SwitchChReq*/
5577
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005578/**
5579 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5580 the WLAN HW to change the current channel of operation.
5581 Upon the call of this API the WLAN DAL will pack and
5582 send a HAL Start request message to the lower RIVA
5583 sub-system if DAL is in state STARTED.
5584 This request message also includes source of channel switch,
5585 like CSA,
5586
5587 In state BUSY this request will be queued. Request won't
5588 be allowed in any other state.
5589
5590 WDI_Start must have been called.
5591
5592 @param wdiSwitchChReqParams: the switch ch parameters as
5593 specified by the Device Interface
5594
5595 wdiSwitchChRspCb: callback for passing back the response
5596 of the switch ch operation received from the device
5597
5598 pUserData: user data will be passed back with the
5599 callback
5600
5601 @see WDI_Start
5602 @return Result of the function call
5603*/
5604WDI_Status
5605WDI_SwitchChReq_V1
5606(
5607 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5608 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5609 void* pUserData
5610)
5611{
5612 WDI_EventInfoType wdiEventData;
5613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5615 "WDI API call WDI_SwitchChReq_V1");
5616 /*------------------------------------------------------------------------
5617 Sanity Check
5618 ------------------------------------------------------------------------*/
5619 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5620 {
5621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5622 "WDI API call before module is initialized - Fail request");
5623
5624 return WDI_STATUS_E_NOT_ALLOWED;
5625 }
5626
5627 /*------------------------------------------------------------------------
5628 Fill in Event data and post to the Main FSM
5629 ------------------------------------------------------------------------*/
5630 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5631 wdiEventData.pEventData = pwdiSwitchChReqParams;
5632 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5633 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5634 wdiEventData.pUserData = pUserData;
5635
5636 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5637
5638}/*WDI_SwitchChReq_V1*/
5639
Jeff Johnson295189b2012-06-20 16:38:30 -07005640
5641/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005642 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005643 wishes to add or update a STA in HW. Upon the call of
5644 this API the WLAN DAL will pack and send a HAL Start
5645 message request message to the lower RIVA sub-system if
5646 DAL is in state STARTED.
5647
5648 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005649 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005650
5651 WDI_Start must have been called.
5652
Jeff Johnsone7245742012-09-05 17:12:55 -07005653 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005654 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005655
Jeff Johnson295189b2012-06-20 16:38:30 -07005656 wdiConfigSTARspCb: callback for passing back the
5657 response of the config STA operation received from the
5658 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005659
Jeff Johnson295189b2012-06-20 16:38:30 -07005660 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005661 callback
5662
Jeff Johnson295189b2012-06-20 16:38:30 -07005663 @see WDI_Start
5664 @return Result of the function call
5665*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005666WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005667WDI_ConfigSTAReq
5668(
5669 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5670 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5671 void* pUserData
5672)
5673{
5674 WDI_EventInfoType wdiEventData;
5675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5676
5677 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005678 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 ------------------------------------------------------------------------*/
5680 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5681 {
5682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5683 "WDI API call before module is initialized - Fail request");
5684
Jeff Johnsone7245742012-09-05 17:12:55 -07005685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005686 }
5687
5688 /*------------------------------------------------------------------------
5689 Fill in Event data and post to the Main FSM
5690 ------------------------------------------------------------------------*/
5691 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005692 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5693 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5694 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005695 wdiEventData.pUserData = pUserData;
5696
5697 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5698
5699}/*WDI_ConfigSTAReq*/
5700
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005701 /**
5702 @brief WDI_UpdateChannelReq will be called when the upper MAC
5703 wants to update the channel list on change in country code.
5704
5705 In state BUSY this request will be queued. Request won't
5706 be allowed in any other state.
5707
5708 WDI_UpdateChannelReq must have been called.
5709
5710 @param wdiUpdateChannelReqParams: the updated channel parameters
5711 as specified by the Device Interface
5712
5713 wdiUpdateChannelRspCb: callback for passing back the
5714 response of the update channel operation received from
5715 the device
5716
5717 pUserData: user data will be passed back with the
5718 callback
5719
5720 @return Result of the function call
5721*/
5722WDI_Status
5723WDI_UpdateChannelReq
5724(
5725 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5726 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5727 void* pUserData
5728)
5729{
5730 WDI_EventInfoType wdiEventData = {{0}};
5731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5732
5733 /*------------------------------------------------------------------------
5734 Sanity Check
5735 ------------------------------------------------------------------------*/
5736 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5737 {
5738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5739 "WDI API call before module is initialized - Fail request");
5740
5741 return WDI_STATUS_E_NOT_ALLOWED;
5742 }
5743
5744 /*------------------------------------------------------------------------
5745 Fill in Event data and post to the Main FSM
5746 ------------------------------------------------------------------------*/
5747 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5748 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5749 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5750 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5751 wdiEventData.pUserData = pUserData;
5752
5753 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5754
5755}/*WDI_UpdateChannelReq*/
5756
Jeff Johnson295189b2012-06-20 16:38:30 -07005757/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005758 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005759 wants to change the state of an ongoing link. Upon the
5760 call of this API the WLAN DAL will pack and send a HAL
5761 Start message request message to the lower RIVA
5762 sub-system if DAL is in state STARTED.
5763
5764 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005765 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005766
5767 WDI_JoinStartReq must have been called.
5768
Jeff Johnsone7245742012-09-05 17:12:55 -07005769 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005770 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005771
Jeff Johnson295189b2012-06-20 16:38:30 -07005772 wdiSetLinkStateRspCb: callback for passing back the
5773 response of the set link state operation received from
5774 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005775
Jeff Johnson295189b2012-06-20 16:38:30 -07005776 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005777 callback
5778
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 @see WDI_JoinStartReq
5780 @return Result of the function call
5781*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005782WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005783WDI_SetLinkStateReq
5784(
5785 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5786 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5787 void* pUserData
5788)
5789{
5790 WDI_EventInfoType wdiEventData;
5791 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5792
5793 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005794 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005795 ------------------------------------------------------------------------*/
5796 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5797 {
5798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5799 "WDI API call before module is initialized - Fail request");
5800
Jeff Johnsone7245742012-09-05 17:12:55 -07005801 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005802 }
5803
5804 /*------------------------------------------------------------------------
5805 Fill in Event data and post to the Main FSM
5806 ------------------------------------------------------------------------*/
5807 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005808 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5809 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5810 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 wdiEventData.pUserData = pUserData;
5812
5813 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5814
5815}/*WDI_SetLinkStateReq*/
5816
5817
5818/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005819 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 to get statistics (MIB counters) from the device. Upon
5821 the call of this API the WLAN DAL will pack and send a
5822 HAL Start request message to the lower RIVA sub-system
5823 if DAL is in state STARTED.
5824
5825 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005826 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005827
5828 WDI_Start must have been called.
5829
Jeff Johnsone7245742012-09-05 17:12:55 -07005830 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005831 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005832
Jeff Johnson295189b2012-06-20 16:38:30 -07005833 wdiGetStatsRspCb: callback for passing back the response
5834 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005835
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005837 callback
5838
Jeff Johnson295189b2012-06-20 16:38:30 -07005839 @see WDI_Start
5840 @return Result of the function call
5841*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005842WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005843WDI_GetStatsReq
5844(
5845 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5846 WDI_GetStatsRspCb wdiGetStatsRspCb,
5847 void* pUserData
5848)
5849{
5850 WDI_EventInfoType wdiEventData;
5851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5852
5853 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005854 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005855 ------------------------------------------------------------------------*/
5856 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5857 {
5858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5859 "WDI API call before module is initialized - Fail request");
5860
Jeff Johnsone7245742012-09-05 17:12:55 -07005861 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005862 }
5863
5864 /*------------------------------------------------------------------------
5865 Fill in Event data and post to the Main FSM
5866 ------------------------------------------------------------------------*/
5867 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005868 wdiEventData.pEventData = pwdiGetStatsReqParams;
5869 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5870 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005871 wdiEventData.pUserData = pUserData;
5872
5873 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5874
5875}/*WDI_GetStatsReq*/
5876
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005877#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005878/**
5879 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5880 to get roam rssi from the device. Upon
5881 the call of this API the WLAN DAL will pack and send a
5882 HAL Start request message to the lower RIVA sub-system
5883 if DAL is in state STARTED.
5884
5885 In state BUSY this request will be queued. Request won't
5886 be allowed in any other state.
5887
5888 WDI_Start must have been called.
5889
5890 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5891 specified by the Device Interface
5892
5893 wdiGetRoamRssiRspCb: callback for passing back the response
5894 of the get stats operation received from the device
5895
5896 pUserData: user data will be passed back with the
5897 callback
5898
5899 @see WDI_Start
5900 @return Result of the function call
5901*/
5902WDI_Status
5903WDI_GetRoamRssiReq
5904(
5905 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5906 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5907 void* pUserData
5908)
5909{
5910 WDI_EventInfoType wdiEventData;
5911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5912
5913 /*------------------------------------------------------------------------
5914 Sanity Check
5915 ------------------------------------------------------------------------*/
5916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5917 {
5918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5919 "WDI API call before module is initialized - Fail request");
5920
5921 return WDI_STATUS_E_NOT_ALLOWED;
5922 }
5923 /*------------------------------------------------------------------------
5924 Fill in Event data and post to the Main FSM
5925 ------------------------------------------------------------------------*/
5926 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5927 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5928 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5929 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5930 wdiEventData.pUserData = pUserData;
5931
5932 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5933
5934}/*WDI_GetRoamRssiReq*/
5935#endif
5936
Jeff Johnson295189b2012-06-20 16:38:30 -07005937
5938/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005939 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005940 it wishes to change the configuration of the WLAN
5941 Device. Upon the call of this API the WLAN DAL will pack
5942 and send a HAL Update CFG request message to the lower
5943 RIVA sub-system if DAL is in state STARTED.
5944
5945 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005946 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005947
5948 WDI_Start must have been called.
5949
Jeff Johnsone7245742012-09-05 17:12:55 -07005950 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005951 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005952
Jeff Johnson295189b2012-06-20 16:38:30 -07005953 wdiUpdateCfgsRspCb: callback for passing back the
5954 response of the update cfg operation received from the
5955 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005956
Jeff Johnson295189b2012-06-20 16:38:30 -07005957 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005958 callback
5959
Jeff Johnson295189b2012-06-20 16:38:30 -07005960 @see WDI_Start
5961 @return Result of the function call
5962*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005964WDI_UpdateCfgReq
5965(
5966 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5967 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5968 void* pUserData
5969)
5970{
5971 WDI_EventInfoType wdiEventData;
5972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5973
5974 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 ------------------------------------------------------------------------*/
5977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5978 {
5979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5980 "WDI API call before module is initialized - Fail request");
5981
Jeff Johnsone7245742012-09-05 17:12:55 -07005982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005983 }
5984
5985 /*------------------------------------------------------------------------
5986 Fill in Event data and post to the Main FSM
5987 ------------------------------------------------------------------------*/
5988 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005989 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5990 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5991 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005992 wdiEventData.pUserData = pUserData;
5993
5994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5995
5996}/*WDI_UpdateCfgReq*/
5997
5998
5999
6000/**
6001 @brief WDI_AddBAReq will be called when the upper MAC has setup
6002 successfully a BA session and needs to notify the HW for
6003 the appropriate settings to take place. Upon the call of
6004 this API the WLAN DAL will pack and send a HAL Add BA
6005 request message to the lower RIVA sub-system if DAL is
6006 in state STARTED.
6007
6008 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006009 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006010
6011 WDI_PostAssocReq must have been called.
6012
6013 @param wdiAddBAReqParams: the add BA parameters as specified by
6014 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006015
Jeff Johnson295189b2012-06-20 16:38:30 -07006016 wdiAddBARspCb: callback for passing back the response of
6017 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006018
Jeff Johnson295189b2012-06-20 16:38:30 -07006019 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006020 callback
6021
Jeff Johnson295189b2012-06-20 16:38:30 -07006022 @see WDI_PostAssocReq
6023 @return Result of the function call
6024*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006025WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006026WDI_AddBAReq
6027(
6028 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
6029 WDI_AddBARspCb wdiAddBARspCb,
6030 void* pUserData
6031)
6032{
6033 WDI_EventInfoType wdiEventData;
6034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6035
6036 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006037 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006038 ------------------------------------------------------------------------*/
6039 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6040 {
6041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6042 "WDI API call before module is initialized - Fail request");
6043
Jeff Johnsone7245742012-09-05 17:12:55 -07006044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006045 }
6046
6047 /*------------------------------------------------------------------------
6048 Fill in Event data and post to the Main FSM
6049 ------------------------------------------------------------------------*/
6050 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006051 wdiEventData.pEventData = pwdiAddBAReqParams;
6052 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
6053 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 wdiEventData.pUserData = pUserData;
6055
6056 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6057
6058}/*WDI_AddBAReq*/
6059
6060
6061/**
6062 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
6063 successfully a BA session and needs to notify the HW for
6064 the appropriate settings to take place. Upon the call of
6065 this API the WLAN DAL will pack and send a HAL Add BA
6066 request message to the lower RIVA sub-system if DAL is
6067 in state STARTED.
6068
6069 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006070 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006071
6072 WDI_PostAssocReq must have been called.
6073
6074 @param wdiAddBAReqParams: the add BA parameters as specified by
6075 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006076
Jeff Johnson295189b2012-06-20 16:38:30 -07006077 wdiAddBARspCb: callback for passing back the response of
6078 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006079
Jeff Johnson295189b2012-06-20 16:38:30 -07006080 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006081 callback
6082
Jeff Johnson295189b2012-06-20 16:38:30 -07006083 @see WDI_PostAssocReq
6084 @return Result of the function call
6085*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006086WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006087WDI_TriggerBAReq
6088(
6089 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
6090 WDI_TriggerBARspCb wdiTriggerBARspCb,
6091 void* pUserData
6092)
6093{
6094 WDI_EventInfoType wdiEventData;
6095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6096
6097 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006098 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006099 ------------------------------------------------------------------------*/
6100 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6101 {
6102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6103 "WDI API call before module is initialized - Fail request");
6104
Jeff Johnsone7245742012-09-05 17:12:55 -07006105 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006106 }
6107
6108 /*------------------------------------------------------------------------
6109 Fill in Event data and post to the Main FSM
6110 ------------------------------------------------------------------------*/
6111 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006112 wdiEventData.pEventData = pwdiTriggerBAReqParams;
6113 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
6114 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006115 wdiEventData.pUserData = pUserData;
6116
6117 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6118
6119}/*WDI_AddBAReq*/
6120
6121/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006122 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006123 wishes to update any of the Beacon parameters used by HW.
6124 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
6125 message to the lower RIVA sub-system if DAL is in state
6126 STARTED.
6127
6128 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006129 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006130
6131 WDI_PostAssocReq must have been called.
6132
Jeff Johnsone7245742012-09-05 17:12:55 -07006133 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006134 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006135
Jeff Johnson295189b2012-06-20 16:38:30 -07006136 wdiUpdateBeaconParamsRspCb: callback for passing back the
6137 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006138
Jeff Johnson295189b2012-06-20 16:38:30 -07006139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006140 callback
6141
Jeff Johnson295189b2012-06-20 16:38:30 -07006142 @see WDI_PostAssocReq
6143 @return Result of the function call
6144*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006146WDI_UpdateBeaconParamsReq
6147(
6148 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
6149 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
6150 void* pUserData
6151)
6152{
6153 WDI_EventInfoType wdiEventData;
6154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6155
6156 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006157 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006158 ------------------------------------------------------------------------*/
6159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6160 {
6161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6162 "WDI API call before module is initialized - Fail request");
6163
Jeff Johnsone7245742012-09-05 17:12:55 -07006164 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006165 }
6166
6167 /*------------------------------------------------------------------------
6168 Fill in Event data and post to the Main FSM
6169 ------------------------------------------------------------------------*/
6170 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006171 wdiEventData.pEventData = pwdiUpdateBeaconParams;
6172 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
6173 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006174 wdiEventData.pUserData = pUserData;
6175
6176 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6177
6178}/*WDI_UpdateBeaconParamsReq*/
6179
6180/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006182 wishes to update the Beacon template used by HW.
6183 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
6184 message to the lower RIVA sub-system if DAL is in state
6185 STARTED.
6186
6187 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006188 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006189
6190 WDI_PostAssocReq must have been called.
6191
Jeff Johnsone7245742012-09-05 17:12:55 -07006192 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006193 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006194
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 wdiSendBeaconParamsRspCb: callback for passing back the
6196 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006197
Jeff Johnson295189b2012-06-20 16:38:30 -07006198 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006199 callback
6200
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 @see WDI_PostAssocReq
6202 @return Result of the function call
6203*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006204WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006205WDI_SendBeaconParamsReq
6206(
6207 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
6208 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
6209 void* pUserData
6210)
6211{
6212 WDI_EventInfoType wdiEventData;
6213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6214
6215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 ------------------------------------------------------------------------*/
6218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6219 {
6220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6221 "WDI API call before module is initialized - Fail request");
6222
Jeff Johnsone7245742012-09-05 17:12:55 -07006223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006224 }
6225
6226 /*------------------------------------------------------------------------
6227 Fill in Event data and post to the Main FSM
6228 ------------------------------------------------------------------------*/
6229 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006230 wdiEventData.pEventData = pwdiSendBeaconParams;
6231 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6232 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006233 wdiEventData.pUserData = pUserData;
6234
6235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6236
6237}/*WDI_SendBeaconParamsReq*/
6238
6239/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006240 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006241 upper MAC wants to update the probe response template to
6242 be transmitted as Soft AP
6243 Upon the call of this API the WLAN DAL will
6244 pack and send the probe rsp template message to the
6245 lower RIVA sub-system if DAL is in state STARTED.
6246
6247 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006248 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006249
6250
Jeff Johnsone7245742012-09-05 17:12:55 -07006251 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006252 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006253
Jeff Johnson295189b2012-06-20 16:38:30 -07006254 wdiSendBeaconParamsRspCb: callback for passing back the
6255 response of the Send Beacon Params operation received
6256 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006257
Jeff Johnson295189b2012-06-20 16:38:30 -07006258 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006259 callback
6260
Jeff Johnson295189b2012-06-20 16:38:30 -07006261 @see WDI_AddBAReq
6262 @return Result of the function call
6263*/
6264
Jeff Johnsone7245742012-09-05 17:12:55 -07006265WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006266WDI_UpdateProbeRspTemplateReq
6267(
6268 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6269 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6270 void* pUserData
6271)
6272{
6273 WDI_EventInfoType wdiEventData;
6274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6275
6276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006277 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006278 ------------------------------------------------------------------------*/
6279 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6280 {
6281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6282 "WDI API call before module is initialized - Fail request");
6283
Jeff Johnsone7245742012-09-05 17:12:55 -07006284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006285 }
6286
6287 /*------------------------------------------------------------------------
6288 Fill in Event data and post to the Main FSM
6289 ------------------------------------------------------------------------*/
6290 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006291 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6292 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6293 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006294 wdiEventData.pUserData = pUserData;
6295
6296 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6297
6298}/*WDI_UpdateProbeRspTemplateReq*/
6299
6300/**
6301 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6302 to the NV memory.
6303
6304
6305 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6306 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006307
Jeff Johnson295189b2012-06-20 16:38:30 -07006308 wdiNvDownloadRspCb: callback for passing back the response of
6309 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006310
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006312 callback
6313
Jeff Johnson295189b2012-06-20 16:38:30 -07006314 @see WDI_PostAssocReq
6315 @return Result of the function call
6316*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006317WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006318WDI_NvDownloadReq
6319(
6320 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6321 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6322 void* pUserData
6323)
6324{
6325 WDI_EventInfoType wdiEventData;
6326
6327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006328 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006329 ------------------------------------------------------------------------*/
6330 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6331 {
6332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6333 "WDI API call before module is initialized - Fail request");
6334
Jeff Johnsone7245742012-09-05 17:12:55 -07006335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006336 }
6337
6338 /*------------------------------------------------------------------------
6339 Fill in Event data and post to the Main FSM
6340 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006341 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6342 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6343 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6344 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006345 wdiEventData.pUserData = pUserData;
6346
6347 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6348
6349}/*WDI_NVDownloadReq*/
6350
Jeff Johnson295189b2012-06-20 16:38:30 -07006351/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 upper MAC wants to send Notice of Absence
6354 Upon the call of this API the WLAN DAL will
6355 pack and send the probe rsp template message to the
6356 lower RIVA sub-system if DAL is in state STARTED.
6357
6358 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006359 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006360
6361
Jeff Johnsone7245742012-09-05 17:12:55 -07006362 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006363 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006364
Jeff Johnson295189b2012-06-20 16:38:30 -07006365 wdiSendBeaconParamsRspCb: callback for passing back the
6366 response of the Send Beacon Params operation received
6367 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006368
Jeff Johnson295189b2012-06-20 16:38:30 -07006369 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006370 callback
6371
Jeff Johnson295189b2012-06-20 16:38:30 -07006372 @see WDI_AddBAReq
6373 @return Result of the function call
6374*/
6375WDI_Status
6376WDI_SetP2PGONOAReq
6377(
6378 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6379 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6380 void* pUserData
6381)
6382{
6383 WDI_EventInfoType wdiEventData;
6384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6385
6386 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006387 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006388 ------------------------------------------------------------------------*/
6389 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6390 {
6391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6392 "WDI API call before module is initialized - Fail request");
6393
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006395 }
6396
6397 /*------------------------------------------------------------------------
6398 Fill in Event data and post to the Main FSM
6399 ------------------------------------------------------------------------*/
6400 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6402 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6403 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 wdiEventData.pUserData = pUserData;
6405
6406 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6407
6408}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006409
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306410#ifdef FEATURE_WLAN_TDLS
6411/**
6412 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6413 upper MAC wants to send TDLS Link Establish Request Parameters
6414 Upon the call of this API the WLAN DAL will
6415 pack and send the TDLS Link Establish Request message to the
6416 lower RIVA sub-system if DAL is in state STARTED.
6417
6418 In state BUSY this request will be queued. Request won't
6419 be allowed in any other state.
6420
6421
6422 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6423 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6424
6425 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6426 response of the TDLS Link Establish request received
6427 from the device
6428
6429 pUserData: user data will be passed back with the
6430 callback
6431
6432 @see
6433 @return Result of the function call
6434*/
6435WDI_Status
6436WDI_SetTDLSLinkEstablishReq
6437(
6438 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6439 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6440 void* pUserData
6441)
6442{
6443 WDI_EventInfoType wdiEventData;
6444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6445
6446 /*------------------------------------------------------------------------
6447 Sanity Check
6448 ------------------------------------------------------------------------*/
6449 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6450 {
6451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6452 "WDI API call before module is initialized - Fail request");
6453
6454 return WDI_STATUS_E_NOT_ALLOWED;
6455 }
6456
6457 /*------------------------------------------------------------------------
6458 Fill in Event data and post to the Main FSM
6459 ------------------------------------------------------------------------*/
6460 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6461 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6462 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6463 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6464 wdiEventData.pUserData = pUserData;
6465
6466 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6467
6468}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306469
6470//tdlsoffchan
6471/**
6472 @brief WDI_SetTDLSChanSwitchReq will be called when the
6473 upper MAC wants to send TDLS Chan Switch Request Parameters
6474 Upon the call of this API the WLAN DAL will
6475 pack and send the TDLS Link Establish Request message to the
6476 lower RIVA sub-system if DAL is in state STARTED.
6477
6478 In state BUSY this request will be queued. Request won't
6479 be allowed in any other state.
6480
6481
6482 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6483 for Link Establishment (Used for TDLS Off Channel ...)
6484
6485 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6486 response of the TDLS Chan Switch request received
6487 from the device
6488
6489 pUserData: user data will be passed back with the
6490 callback
6491
6492 @see
6493 @return Result of the function call
6494*/
6495WDI_Status
6496WDI_SetTDLSChanSwitchReq
6497(
6498 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6499 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6500 void* pUserData
6501)
6502{
6503 WDI_EventInfoType wdiEventData;
6504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6505
6506 /*------------------------------------------------------------------------
6507 Sanity Check
6508 ------------------------------------------------------------------------*/
6509 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6510 {
6511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6512 "WDI API call before module is initialized - Fail request");
6513
6514 return WDI_STATUS_E_NOT_ALLOWED;
6515 }
6516
6517 /*------------------------------------------------------------------------
6518 Fill in Event data and post to the Main FSM
6519 ------------------------------------------------------------------------*/
6520 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6521 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6522 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6523 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6524 wdiEventData.pUserData = pUserData;
6525
6526 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6527
6528}/*WDI_SetTDLSChanSwitchReq*/
6529
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306530#endif
6531
Jeff Johnson295189b2012-06-20 16:38:30 -07006532/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006533 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006534 UMAC wanted to add STA self while opening any new session
6535 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006536 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006537
6538
Jeff Johnsone7245742012-09-05 17:12:55 -07006539 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006540 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006541
Jeff Johnson295189b2012-06-20 16:38:30 -07006542 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006543 callback
6544
6545 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006546 @return Result of the function call
6547*/
6548WDI_Status
6549WDI_AddSTASelfReq
6550(
6551 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6552 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6553 void* pUserData
6554)
6555{
6556 WDI_EventInfoType wdiEventData;
6557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6558
6559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006560 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006561 ------------------------------------------------------------------------*/
6562 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6563 {
6564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6565 "WDI API call before module is initialized - Fail request");
6566
Jeff Johnsone7245742012-09-05 17:12:55 -07006567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006568 }
6569
6570 /*------------------------------------------------------------------------
6571 Fill in Event data and post to the Main FSM
6572 ------------------------------------------------------------------------*/
6573 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006574 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6575 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6576 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006577 wdiEventData.pUserData = pUserData;
6578
6579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6580
6581}/*WDI_AddSTASelfReq*/
6582
6583
Jeff Johnsone7245742012-09-05 17:12:55 -07006584#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006585/**
6586 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6587 the device of a successful add TSpec negotiation. HW
6588 needs to receive the TSpec Info from the UMAC in order
6589 to configure properly the QoS data traffic. Upon the
6590 call of this API the WLAN DAL will pack and send a HAL
6591 Add TS request message to the lower RIVA sub-system if
6592 DAL is in state STARTED.
6593
6594 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006595 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006596
6597 WDI_PostAssocReq must have been called.
6598
6599 @param wdiAddTsReqParams: the add TS parameters as specified by
6600 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006601
Jeff Johnson295189b2012-06-20 16:38:30 -07006602 wdiAddTsRspCb: callback for passing back the response of
6603 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006604
Jeff Johnson295189b2012-06-20 16:38:30 -07006605 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006606 callback
6607
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 @see WDI_PostAssocReq
6609 @return Result of the function call
6610*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006611WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006612WDI_AggrAddTSReq
6613(
6614 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6615 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6616 void* pUserData
6617)
6618{
6619 WDI_EventInfoType wdiEventData;
6620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6621
6622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006623 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006624 ------------------------------------------------------------------------*/
6625 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6626 {
6627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6628 "WDI API call before module is initialized - Fail request");
6629
Jeff Johnsone7245742012-09-05 17:12:55 -07006630 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006631 }
6632
6633 /*------------------------------------------------------------------------
6634 Fill in Event data and post to the Main FSM
6635 ------------------------------------------------------------------------*/
6636 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006637 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6638 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6639 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006640 wdiEventData.pUserData = pUserData;
6641
6642 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6643
6644}/*WDI_AggrAddTSReq*/
6645
6646#endif /* WLAN_FEATURE_VOWIFI_11R */
6647
Jeff Johnson295189b2012-06-20 16:38:30 -07006648/**
6649 @brief WDI_FTMCommandReq
6650 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006651
6652 @param ftmCommandReq: FTM Command Body
6653 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006654 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006655
Jeff Johnson295189b2012-06-20 16:38:30 -07006656 @see
6657 @return Result of the function call
6658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006660WDI_FTMCommandReq
6661(
6662 WDI_FTMCommandReqType *ftmCommandReq,
6663 WDI_FTMCommandRspCb ftmCommandRspCb,
6664 void *pUserData
6665)
6666{
6667 WDI_EventInfoType wdiEventData;
6668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6669
6670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006671 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006672 ------------------------------------------------------------------------*/
6673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6674 {
6675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6676 "WDI API call before module is initialized - Fail request");
6677
Jeff Johnsone7245742012-09-05 17:12:55 -07006678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006679 }
6680
6681 /*------------------------------------------------------------------------
6682 Fill in Event data and post to the Main FSM
6683 ------------------------------------------------------------------------*/
6684 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6685 wdiEventData.pEventData = (void *)ftmCommandReq;
6686 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6687 wdiEventData.pCBfnc = ftmCommandRspCb;
6688 wdiEventData.pUserData = pUserData;
6689
6690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6691}
Jeff Johnson295189b2012-06-20 16:38:30 -07006692/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006693 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006694
6695 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006696 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006697
6698
6699 @param pwdiResumeReqParams: as specified by
6700 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006701
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 wdiResumeReqRspCb: callback for passing back the response of
6703 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006704
Jeff Johnson295189b2012-06-20 16:38:30 -07006705 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006706 callback
6707
6708 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006709 @return Result of the function call
6710*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006711WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006712WDI_HostResumeReq
6713(
6714 WDI_ResumeParamsType* pwdiResumeReqParams,
6715 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6716 void* pUserData
6717)
6718{
6719 WDI_EventInfoType wdiEventData;
6720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6721
6722 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006723 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 ------------------------------------------------------------------------*/
6725 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6726 {
6727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6728 "WDI API call before module is initialized - Fail request");
6729
Jeff Johnsone7245742012-09-05 17:12:55 -07006730 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006731 }
6732
6733 /*------------------------------------------------------------------------
6734 Fill in Event data and post to the Main FSM
6735 ------------------------------------------------------------------------*/
6736 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006737 wdiEventData.pEventData = pwdiResumeReqParams;
6738 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6739 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006740 wdiEventData.pUserData = pUserData;
6741
6742 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6743
6744}/*WDI_HostResumeReq*/
6745
6746/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006747 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006748
6749 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006750 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006751
6752
6753 @param pwdiDelStaSelfReqParams: as specified by
6754 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006755
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 wdiDelStaSelfRspCb: callback for passing back the response of
6757 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006758
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006760 callback
6761
Jeff Johnson295189b2012-06-20 16:38:30 -07006762 @see WDI_PostAssocReq
6763 @return Result of the function call
6764*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006765WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006766WDI_DelSTASelfReq
6767(
6768 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6769 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6770 void* pUserData
6771)
6772{
6773 WDI_EventInfoType wdiEventData;
6774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6775
6776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006778 ------------------------------------------------------------------------*/
6779 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6780 {
6781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6782 "WDI API call before module is initialized - Fail request");
6783
Jeff Johnsone7245742012-09-05 17:12:55 -07006784 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006785 }
6786
6787 /*------------------------------------------------------------------------
6788 Fill in Event data and post to the Main FSM
6789 ------------------------------------------------------------------------*/
6790 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006791 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6792 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6793 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006794 wdiEventData.pUserData = pUserData;
6795
6796 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6797
6798}/*WDI_AggrAddTSReq*/
6799
6800/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006801 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6802 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 Upon the call of this API the WLAN DAL will pack
6804 and send a HAL Set Tx Per Tracking request message to the
6805 lower RIVA sub-system if DAL is in state STARTED.
6806
6807 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006808 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006809
Jeff Johnsone7245742012-09-05 17:12:55 -07006810 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006811 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006812
Jeff Johnson295189b2012-06-20 16:38:30 -07006813 pwdiSetTxPerTrackingRspCb: callback for passing back the
6814 response of the set Tx PER Tracking configurations operation received
6815 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006816
Jeff Johnson295189b2012-06-20 16:38:30 -07006817 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006818 callback
6819
Jeff Johnson295189b2012-06-20 16:38:30 -07006820 @return Result of the function call
6821*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006822WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006823WDI_SetTxPerTrackingReq
6824(
6825 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6826 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6827 void* pUserData
6828)
6829{
6830 WDI_EventInfoType wdiEventData;
6831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6832
6833 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006834 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 ------------------------------------------------------------------------*/
6836 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6837 {
6838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6839 "WDI API call before module is initialized - Fail request");
6840
Jeff Johnsone7245742012-09-05 17:12:55 -07006841 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 }
6843
6844 /*------------------------------------------------------------------------
6845 Fill in Event data and post to the Main FSM
6846 ------------------------------------------------------------------------*/
6847 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006848 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006849 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006850 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006851 wdiEventData.pUserData = pUserData;
6852
6853 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6854
6855}/*WDI_SetTxPerTrackingReq*/
6856
6857/**
6858 @brief WDI_SetTmLevelReq
6859 If HW Thermal condition changed, driver should react based on new
6860 HW thermal condition.
6861
6862 @param pwdiSetTmLevelReq: New thermal condition information
6863
6864 pwdiSetTmLevelRspCb: callback
6865
6866 usrData: user data will be passed back with the
6867 callback
6868
6869 @return Result of the function call
6870*/
6871WDI_Status
6872WDI_SetTmLevelReq
6873(
6874 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6875 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6876 void *usrData
6877)
6878{
6879 WDI_EventInfoType wdiEventData;
6880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6881
6882 /*------------------------------------------------------------------------
6883 Sanity Check
6884 ------------------------------------------------------------------------*/
6885 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6886 {
6887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6888 "WDI API call before module is initialized - Fail request");
6889
6890 return WDI_STATUS_E_NOT_ALLOWED;
6891 }
6892
6893 /*------------------------------------------------------------------------
6894 Fill in Event data and post to the Main FSM
6895 ------------------------------------------------------------------------*/
6896 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6897 wdiEventData.pEventData = pwdiSetTmLevelReq;
6898 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6899 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6900 wdiEventData.pUserData = usrData;
6901
6902 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6903}
6904
6905/**
6906 @brief WDI_HostSuspendInd
6907
6908 Suspend Indication from the upper layer will be sent
6909 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006910
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006912
6913 @see
6914
Jeff Johnson295189b2012-06-20 16:38:30 -07006915 @return Status of the request
6916*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006917WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006918WDI_HostSuspendInd
6919(
6920 WDI_SuspendParamsType* pwdiSuspendIndParams
6921)
6922{
6923
6924 WDI_EventInfoType wdiEventData;
6925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6926
6927 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006928 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006929 ------------------------------------------------------------------------*/
6930 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6931 {
6932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6933 "WDI API call before module is initialized - Fail request");
6934
Jeff Johnsone7245742012-09-05 17:12:55 -07006935 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006936 }
6937
6938 /*------------------------------------------------------------------------
6939 Fill in Event data and post to the Main FSM
6940 ------------------------------------------------------------------------*/
6941 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006942 wdiEventData.pEventData = pwdiSuspendIndParams;
6943 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6944 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006945 wdiEventData.pUserData = NULL;
6946
6947 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6948
6949}/*WDI_HostSuspendInd*/
6950
6951/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006952 @brief WDI_TrafficStatsInd
6953 Traffic Stats from the upper layer will be sent
6954 down to HAL
6955
6956 @param WDI_TrafficStatsIndType
6957
6958 @see
6959
6960 @return Status of the request
6961*/
6962WDI_Status
6963WDI_TrafficStatsInd
6964(
6965 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6966)
6967{
6968
6969 WDI_EventInfoType wdiEventData;
6970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6971
6972 /*------------------------------------------------------------------------
6973 Sanity Check
6974 ------------------------------------------------------------------------*/
6975 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6976 {
6977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6978 "WDI API call before module is initialized - Fail request");
6979
6980 return WDI_STATUS_E_NOT_ALLOWED;
6981 }
6982
6983 /*------------------------------------------------------------------------
6984 Fill in Event data and post to the Main FSM
6985 ------------------------------------------------------------------------*/
6986 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6987 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6988 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6989 wdiEventData.pCBfnc = NULL;
6990 wdiEventData.pUserData = NULL;
6991
6992 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6993
6994}/*WDI_TrafficStatsInd*/
6995
Chet Lanctot186b5732013-03-18 10:26:30 -07006996#ifdef WLAN_FEATURE_11W
6997/**
6998 @brief WDI_ExcludeUnencryptedInd
6999 Register with HAL to receive/drop unencrypted frames
7000
7001 @param WDI_ExcludeUnencryptIndType
7002
7003 @see
7004
7005 @return Status of the request
7006*/
7007WDI_Status
7008WDI_ExcludeUnencryptedInd
7009(
7010 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
7011)
7012{
7013
7014 WDI_EventInfoType wdiEventData;
7015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7016
7017 /*------------------------------------------------------------------------
7018 Sanity Check
7019 ------------------------------------------------------------------------*/
7020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7021 {
7022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7023 "WDI API call before module is initialized - Fail request");
7024
7025 return WDI_STATUS_E_NOT_ALLOWED;
7026 }
7027
7028 /*------------------------------------------------------------------------
7029 Fill in Event data and post to the Main FSM
7030 ------------------------------------------------------------------------*/
7031 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
7032 wdiEventData.pEventData = pWdiExcUnencParams;
7033 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
7034 wdiEventData.pCBfnc = NULL;
7035 wdiEventData.pUserData = NULL;
7036
7037 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7038
7039}/*WDI_TrafficStatsInd*/
7040#endif
7041
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007042/**
Yue Mab9c86f42013-08-14 15:59:08 -07007043 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
7044
7045 @param addPeriodicTxPtrnParams: Add Pattern parameters
7046
7047 @see
7048
7049 @return Status of the request
7050*/
7051WDI_Status
7052WDI_AddPeriodicTxPtrnInd
7053(
7054 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
7055)
7056{
7057 WDI_EventInfoType wdiEventData;
7058
7059 /*-------------------------------------------------------------------------
7060 Sanity Check
7061 ------------------------------------------------------------------------*/
7062 if (eWLAN_PAL_FALSE == gWDIInitialized)
7063 {
7064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7065 "WDI API call before module is initialized - Fail request!");
7066
7067 return WDI_STATUS_E_NOT_ALLOWED;
7068 }
7069
7070 /*-------------------------------------------------------------------------
7071 Fill in Event data and post to the Main FSM
7072 ------------------------------------------------------------------------*/
7073 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
7074 wdiEventData.pEventData = addPeriodicTxPtrnParams;
7075 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
7076 wdiEventData.pCBfnc = NULL;
7077 wdiEventData.pUserData = NULL;
7078
7079 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7080}
7081
7082/**
7083 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
7084
7085 @param delPeriodicTxPtrnParams: Delete Pattern parameters
7086
7087 @see
7088
7089 @return Status of the request
7090*/
7091WDI_Status
7092WDI_DelPeriodicTxPtrnInd
7093(
7094 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
7095)
7096{
7097 WDI_EventInfoType wdiEventData;
7098
7099 /*-------------------------------------------------------------------------
7100 Sanity Check
7101 ------------------------------------------------------------------------*/
7102 if (eWLAN_PAL_FALSE == gWDIInitialized)
7103 {
7104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7105 "WDI API call before module is initialized - Fail request!");
7106
7107 return WDI_STATUS_E_NOT_ALLOWED;
7108 }
7109
7110 /*-------------------------------------------------------------------------
7111 Fill in Event data and post to the Main FSM
7112 ------------------------------------------------------------------------*/
7113 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
7114 wdiEventData.pEventData = delPeriodicTxPtrnParams;
7115 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
7116 wdiEventData.pCBfnc = NULL;
7117 wdiEventData.pUserData = NULL;
7118
7119 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7120}
7121
7122/**
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 @brief WDI_HALDumpCmdReq
7124 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007125
7126 @param halDumpCmdReqParams: Hal Dump Command Body
7127 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007128 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007129
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 @see
7131 @return Result of the function call
7132*/
7133WDI_Status WDI_HALDumpCmdReq
7134(
7135 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
7136 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
7137 void *pUserData
7138)
7139{
7140 WDI_EventInfoType wdiEventData;
7141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7142
7143 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007144 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 ------------------------------------------------------------------------*/
7146 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7147 {
7148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7149 "WDI API call before module is initialized - Fail request");
7150
Jeff Johnsone7245742012-09-05 17:12:55 -07007151 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 }
7153
7154 /*------------------------------------------------------------------------
7155 Fill in Event data and post to the Main FSM
7156 ------------------------------------------------------------------------*/
7157 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
7158 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
7159 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
7160 wdiEventData.pCBfnc = halDumpCmdRspCb;
7161 wdiEventData.pUserData = pUserData;
7162
7163 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7164}
7165
Jeff Johnsone7245742012-09-05 17:12:55 -07007166/*============================================================================
7167
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07007169
Jeff Johnson295189b2012-06-20 16:38:30 -07007170 ============================================================================*/
7171
7172/**
7173 @brief Main FSM Start function for all states except BUSY
7174
Jeff Johnsone7245742012-09-05 17:12:55 -07007175
7176 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 wdiEV: event posted to the main DAL FSM
7178 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07007179 structure
7180
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 @see
7182 @return Result of the function call
7183*/
7184WDI_Status
7185WDI_PostMainEvent
7186(
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 WDI_ControlBlockType* pWDICtx,
7188 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07007189 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07007190)
7191{
Jeff Johnsone7245742012-09-05 17:12:55 -07007192 WDI_Status wdiStatus;
7193 WDI_MainFuncType pfnWDIMainEvHdlr;
7194 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05307195 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7197
7198 /*-------------------------------------------------------------------------
7199 Sanity check
7200 -------------------------------------------------------------------------*/
7201 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
7202 ( wdiEV >= WDI_MAX_EVENT ))
7203 {
7204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7205 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
7206 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07007207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007208 }
7209
7210 /*Access to the global state must be locked */
7211 wpalMutexAcquire(&pWDICtx->wptMutex);
7212
7213 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007214 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07007215
7216 wdiOldState = pWDICtx->uGlobalState;
7217
7218 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007219 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
7220 response comes from CCPU for the request sent by host:
7221 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 -07007222 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 -07007223 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 CCPU:
7225 don't change the state */
7226 if ( WDI_RESPONSE_EVENT != wdiEV)
7227 {
7228 /*Transition to BUSY State - the request is now being processed by the FSM,
7229 if the request fails we shall transition back to the old state, if not
7230 the request will manage its own state transition*/
7231 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7232 }
7233 /* If the state function associated with the EV is NULL it means that this
7234 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007236 {
7237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007238 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007239 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007240 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007241 }
7242 else
7243 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307244 if (!(failCnt & 0xF))
7245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007246 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307248 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 }
7251
7252 /* If a request handles itself well it will end up in a success or in a
7253 pending
7254 Success - means that the request was processed and the proper state
7255 transition already occurred or will occur when the resp is received
7256 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007257
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 Pending - means the request could not be processed at this moment in time
7259 because the FSM was already busy so no state transition or dequeueing
7260 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007261
Jeff Johnson295189b2012-06-20 16:38:30 -07007262 Success for synchronous case means that the transition may occur and
7263 processing of pending requests may continue - so it should go through
7264 and restores the state and continue processing queued requests*/
7265 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7266 ( WDI_STATUS_PENDING != wdiStatus ))
7267 {
7268 if ( WDI_RESPONSE_EVENT != wdiEV)
7269 {
7270 /*The request has failed or could not be processed - transition back to
7271 the old state - check to see if anything was queued and try to execute
7272 The dequeue logic should post a message to a thread and return - no
7273 actual processing can occur */
7274 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7275 }
7276 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007277
Jeff Johnson295189b2012-06-20 16:38:30 -07007278 }
7279
7280 /* we have completed processing the event */
7281 wpalMutexRelease(&pWDICtx->wptMutex);
7282
Jeff Johnsone7245742012-09-05 17:12:55 -07007283 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007284
7285}/*WDI_PostMainEvent*/
7286
7287
7288/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007289 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007290--------------------------------------------------------------------------*/
7291/**
7292 @brief Main FSM Start function for all states except BUSY
7293
Jeff Johnsone7245742012-09-05 17:12:55 -07007294
7295 @param pWDICtx: pointer to the WLAN DAL context
7296 pEventData: pointer to the event information structure
7297
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 @see
7299 @return Result of the function call
7300*/
7301WDI_Status
7302WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007303(
Jeff Johnson295189b2012-06-20 16:38:30 -07007304 WDI_ControlBlockType* pWDICtx,
7305 WDI_EventInfoType* pEventData
7306)
7307{
7308
7309 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007310 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 ----------------------------------------------------------------------*/
7312 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7313 {
7314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007315 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007316 pWDICtx, pEventData);
7317 return WDI_STATUS_E_FAILURE;
7318 }
7319
7320 wpalMutexAcquire(&pWDICtx->wptMutex);
7321
7322 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 ----------------------------------------------------------------------*/
7325 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7326 {
7327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7328 "Control Transport not yet Open - queueing the request");
7329
7330 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007332
7333 wpalMutexRelease(&pWDICtx->wptMutex);
7334 return WDI_STATUS_PENDING;
7335 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007336
Jeff Johnson295189b2012-06-20 16:38:30 -07007337 wpalMutexRelease(&pWDICtx->wptMutex);
7338
7339 /*Return Success*/
7340 return WDI_ProcessRequest( pWDICtx, pEventData );
7341
7342}/*WDI_MainStart*/
7343
7344/**
7345 @brief Main FSM Response function for state INIT
7346
Jeff Johnsone7245742012-09-05 17:12:55 -07007347
7348 @param pWDICtx: pointer to the WLAN DAL context
7349 pEventData: pointer to the event information structure
7350
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 @see
7352 @return Result of the function call
7353*/
7354WDI_Status
7355WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007356(
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 WDI_ControlBlockType* pWDICtx,
7358 WDI_EventInfoType* pEventData
7359)
7360{
7361 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007364 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007365
7366 /*Return Success*/
7367 return WDI_STATUS_E_NOT_ALLOWED;
7368}/* WDI_MainRspInit */
7369
7370/**
7371 @brief Main FSM Close function for all states except BUSY
7372
Jeff Johnsone7245742012-09-05 17:12:55 -07007373
7374 @param pWDICtx: pointer to the WLAN DAL context
7375 pEventData: pointer to the event information structure
7376
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 @see
7378 @return Result of the function call
7379*/
7380WDI_Status
7381WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007382(
Jeff Johnson295189b2012-06-20 16:38:30 -07007383 WDI_ControlBlockType* pWDICtx,
7384 WDI_EventInfoType* pEventData
7385)
7386{
7387
7388 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 ----------------------------------------------------------------------*/
7391 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7392 {
7393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007394 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007395 pWDICtx, pEventData);
7396 return WDI_STATUS_E_FAILURE;
7397 }
7398
7399 /*Return Success*/
7400 return WDI_ProcessRequest( pWDICtx, pEventData );
7401
7402}/*WDI_MainClose*/
7403/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007404 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007405--------------------------------------------------------------------------*/
7406/**
7407 @brief Main FSM Start function for state STARTED
7408
Jeff Johnsone7245742012-09-05 17:12:55 -07007409
7410 @param pWDICtx: pointer to the WLAN DAL context
7411 pEventData: pointer to the event information structure
7412
Jeff Johnson295189b2012-06-20 16:38:30 -07007413 @see
7414 @return Result of the function call
7415*/
7416WDI_Status
7417WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007418(
Jeff Johnson295189b2012-06-20 16:38:30 -07007419 WDI_ControlBlockType* pWDICtx,
7420 WDI_EventInfoType* pEventData
7421)
7422{
7423 WDI_StartRspCb wdiStartRspCb = NULL;
7424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7425
7426 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 ----------------------------------------------------------------------*/
7429 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7430 {
7431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007432 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 pWDICtx, pEventData);
7434 return WDI_STATUS_E_FAILURE;
7435 }
7436
7437 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 ----------------------------------------------------------------------*/
7440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007441 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007442
7443 wpalMutexAcquire(&pWDICtx->wptMutex);
7444
7445 /*Transition back to started because the post function transitioned us to
7446 busy*/
7447 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7448
7449 /*Check to see if any request is pending*/
7450 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007451
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 wpalMutexRelease(&pWDICtx->wptMutex);
7453
7454 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007455 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7456
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307458 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007459
7460 /*Return Success*/
7461 return WDI_STATUS_SUCCESS;
7462
7463}/*WDI_MainStartStarted*/
7464
7465/**
7466 @brief Main FSM Stop function for state STARTED
7467
Jeff Johnsone7245742012-09-05 17:12:55 -07007468
7469 @param pWDICtx: pointer to the WLAN DAL context
7470 pEventData: pointer to the event information structure
7471
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 @see
7473 @return Result of the function call
7474*/
7475WDI_Status
7476WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007477(
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 WDI_ControlBlockType* pWDICtx,
7479 WDI_EventInfoType* pEventData
7480)
7481{
7482 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007483 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 ----------------------------------------------------------------------*/
7485 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7486 {
7487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007488 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 pWDICtx, pEventData);
7490 return WDI_STATUS_E_FAILURE;
7491 }
7492
7493 /*State at this point is BUSY - because we enter this state before posting
7494 an event to the FSM in order to prevent potential race conditions*/
7495
7496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7497 "Processing stop request in FSM");
7498
7499 /*Return Success*/
7500 return WDI_ProcessRequest( pWDICtx, pEventData );
7501
7502}/*WDI_MainStopStarted*/
7503/**
7504 @brief Main FSM Request function for state started
7505
Jeff Johnsone7245742012-09-05 17:12:55 -07007506
7507 @param pWDICtx: pointer to the WLAN DAL context
7508 pEventData: pointer to the event information structure
7509
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 @see
7511 @return Result of the function call
7512*/
7513WDI_Status
7514WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007515(
Jeff Johnson295189b2012-06-20 16:38:30 -07007516 WDI_ControlBlockType* pWDICtx,
7517 WDI_EventInfoType* pEventData
7518)
7519{
7520
7521 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 ----------------------------------------------------------------------*/
7524 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7525 {
7526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007527 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007528 pWDICtx, pEventData);
7529 return WDI_STATUS_E_FAILURE;
7530 }
7531
7532 /*State at this point is BUSY - because we enter this state before posting
7533 an event to the FSM in order to prevent potential race conditions*/
7534
7535 /*Return Success*/
7536 return WDI_ProcessRequest( pWDICtx, pEventData );
7537
7538}/*WDI_MainReqStarted*/
7539
7540/**
7541 @brief Main FSM Response function for all states except INIT
7542
Jeff Johnsone7245742012-09-05 17:12:55 -07007543
7544 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007545 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007546
Jeff Johnson295189b2012-06-20 16:38:30 -07007547 @see
7548 @return Result of the function call
7549*/
7550WDI_Status
7551WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007552(
Jeff Johnson295189b2012-06-20 16:38:30 -07007553 WDI_ControlBlockType* pWDICtx,
7554 WDI_EventInfoType* pEventData
7555)
7556{
Jeff Johnsone7245742012-09-05 17:12:55 -07007557 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 wpt_boolean expectedResponse;
7559
7560 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007562 ----------------------------------------------------------------------*/
7563 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7564 {
7565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007566 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 pWDICtx, pEventData);
7568 return WDI_STATUS_E_FAILURE;
7569 }
7570
7571 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7572 {
7573 /* we received an expected response */
7574 expectedResponse = eWLAN_PAL_TRUE;
7575
7576 /*We expect that we will transition to started after this processing*/
7577 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7578
7579 /* we are no longer expecting a response */
7580 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7581 }
7582 else
7583 {
7584 /* we received an indication or unexpected response */
7585 expectedResponse = eWLAN_PAL_FALSE;
7586 /* for indications no need to update state from what it is right
7587 now, unless it explicitly does it in the indication handler (say
7588 for device failure ind) */
7589 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7590 }
7591
7592 /*Process the response and indication */
7593 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7594
7595 /*Lock the CB as we are about to do a state transition*/
7596 wpalMutexAcquire(&pWDICtx->wptMutex);
7597
7598 /*Transition to the expected state after the response processing
7599 - this should always be started state with the following exceptions:
7600 1. processing of a failed start response
7601 2. device failure detected while processing response
7602 3. stop response received*/
7603 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007604
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 /*Dequeue request that may have been queued while we were waiting for the
7606 response */
7607 if ( expectedResponse )
7608 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007609 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 }
7611
7612 wpalMutexRelease(&pWDICtx->wptMutex);
7613
7614 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007616
7617}/*WDI_MainRsp*/
7618
7619/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007620 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007621--------------------------------------------------------------------------*/
7622/**
7623 @brief Main FSM Stop function for state STOPPED
7624
Jeff Johnsone7245742012-09-05 17:12:55 -07007625
7626 @param pWDICtx: pointer to the WLAN DAL context
7627 pEventData: pointer to the event information structure
7628
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 @see
7630 @return Result of the function call
7631*/
7632WDI_Status
7633WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007634(
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 WDI_ControlBlockType* pWDICtx,
7636 WDI_EventInfoType* pEventData
7637)
7638{
7639 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007640 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007641 ----------------------------------------------------------------------*/
7642 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7643 {
7644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007645 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 pWDICtx, pEventData);
7647 return WDI_STATUS_E_FAILURE;
7648 }
7649
7650 /*We should normally not get a STOP request if we are already stopped
7651 since we should normally be stopped by the UMAC. However in some
7652 error situations we put ourselves in the stopped state without the
7653 UMAC knowing, so when we get a STOP request in this state we still
7654 process it since we need to clean up the underlying state */
7655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7656 "Processing stop request while stopped in FSM");
7657
7658 /*Return Success*/
7659 return WDI_ProcessRequest( pWDICtx, pEventData );
7660
7661}/*WDI_MainStopStopped*/
7662
7663/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007664 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007665--------------------------------------------------------------------------*/
7666/**
7667 @brief Main FSM Start function for state BUSY
7668
Jeff Johnsone7245742012-09-05 17:12:55 -07007669
7670 @param pWDICtx: pointer to the WLAN DAL context
7671 pEventData: pointer to the event information structure
7672
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 @see
7674 @return Result of the function call
7675*/
7676WDI_Status
7677WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007678(
Jeff Johnson295189b2012-06-20 16:38:30 -07007679 WDI_ControlBlockType* pWDICtx,
7680 WDI_EventInfoType* pEventData
7681)
7682{
7683 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007684 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 ----------------------------------------------------------------------*/
7686 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7687 {
7688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007689 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007690 pWDICtx, pEventData);
7691 return WDI_STATUS_E_FAILURE;
7692 }
7693
7694 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007695 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 ----------------------------------------------------------------------*/
7697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7698 "WDI Busy state - queue start request");
7699
7700 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007701 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007702
7703 /*Return Success*/
7704 return WDI_STATUS_PENDING;
7705}/*WDI_MainStartBusy*/
7706
7707/**
7708 @brief Main FSM Stop function for state BUSY
7709
Jeff Johnsone7245742012-09-05 17:12:55 -07007710
7711 @param pWDICtx: pointer to the WLAN DAL context
7712 pEventData: pointer to the event information structure
7713
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 @see
7715 @return Result of the function call
7716*/
7717WDI_Status
7718WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007719(
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 WDI_ControlBlockType* pWDICtx,
7721 WDI_EventInfoType* pEventData
7722)
7723{
7724 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 ----------------------------------------------------------------------*/
7727 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7728 {
7729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007730 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007731 pWDICtx, pEventData);
7732 return WDI_STATUS_E_FAILURE;
7733 }
7734
7735 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 ----------------------------------------------------------------------*/
7738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7739 "WDI Busy state - queue stop request");
7740
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007743
Jeff Johnson295189b2012-06-20 16:38:30 -07007744}/*WDI_MainStopBusy*/
7745
7746/**
7747 @brief Main FSM Request function for state BUSY
7748
Jeff Johnsone7245742012-09-05 17:12:55 -07007749
7750 @param pWDICtx: pointer to the WLAN DAL context
7751 pEventData: pointer to the event information structure
7752
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 @see
7754 @return Result of the function call
7755*/
7756WDI_Status
7757WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007758(
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 WDI_ControlBlockType* pWDICtx,
7760 WDI_EventInfoType* pEventData
7761)
7762{
7763 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 ----------------------------------------------------------------------*/
7766 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7767 {
7768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007769 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 pWDICtx, pEventData);
7771 return WDI_STATUS_E_FAILURE;
7772 }
7773
7774 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 ----------------------------------------------------------------------*/
7777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7778 "WDI Busy state - queue request %d because waiting for response %d",
7779 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7780
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007783
Jeff Johnson295189b2012-06-20 16:38:30 -07007784}/*WDI_MainReqBusy*/
7785/**
7786 @brief Main FSM Close function for state BUSY
7787
Jeff Johnsone7245742012-09-05 17:12:55 -07007788
7789 @param pWDICtx: pointer to the WLAN DAL context
7790 pEventData: pointer to the event information structure
7791
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 @see
7793 @return Result of the function call
7794*/
7795WDI_Status
7796WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007797(
Jeff Johnson295189b2012-06-20 16:38:30 -07007798 WDI_ControlBlockType* pWDICtx,
7799 WDI_EventInfoType* pEventData
7800)
7801{
7802 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007803 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007804 ----------------------------------------------------------------------*/
7805 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7806 {
7807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007808 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 pWDICtx, pEventData);
7810 return WDI_STATUS_E_FAILURE;
7811 }
7812
7813 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007814 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007815 ----------------------------------------------------------------------*/
7816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7817 "WDI Busy state - queue close request");
7818
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007821
Jeff Johnson295189b2012-06-20 16:38:30 -07007822}/*WDI_MainCloseBusy*/
7823
7824/**
7825 @brief Main FSM Shutdown function for INIT & STARTED states
7826
7827
7828 @param pWDICtx: pointer to the WLAN DAL context
7829 pEventData: pointer to the event information structure
7830
7831 @see
7832 @return Result of the function call
7833*/
7834WDI_Status
7835WDI_MainShutdown
7836(
7837 WDI_ControlBlockType* pWDICtx,
7838 WDI_EventInfoType* pEventData
7839)
7840{
7841 /*--------------------------------------------------------------------
7842 Sanity Check
7843 ----------------------------------------------------------------------*/
7844 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7845 {
7846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007847 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007848 pWDICtx, pEventData);
7849 return WDI_STATUS_E_FAILURE;
7850 }
7851
7852 /*State at this point is BUSY - because we enter this state before posting
7853 an event to the FSM in order to prevent potential race conditions*/
7854
7855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7856 "Processing shutdown request in FSM");
7857
7858 /*Return Success*/
7859 return WDI_ProcessRequest( pWDICtx, pEventData );
7860
7861}/*WDI_MainShutdown*/
7862
7863/**
7864 @brief Main FSM Shutdown function for BUSY state
7865
7866
7867 @param pWDICtx: pointer to the WLAN DAL context
7868 pEventData: pointer to the event information structure
7869
7870 @see
7871 @return Result of the function call
7872*/
7873WDI_Status
7874WDI_MainShutdownBusy
7875(
7876 WDI_ControlBlockType* pWDICtx,
7877 WDI_EventInfoType* pEventData
7878)
7879{
7880 /*--------------------------------------------------------------------
7881 Sanity Check
7882 ----------------------------------------------------------------------*/
7883 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7884 {
7885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007886 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 pWDICtx, pEventData);
7888 return WDI_STATUS_E_FAILURE;
7889 }
7890
7891 /* If you are waiting for a HAL response at this stage, you are not
7892 * going to get it. Riva is already shutdown/crashed.
7893 */
7894 wpalTimerStop(&gWDICb.wptResponseTimer);
7895
7896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7897 "Processing shutdown request in FSM: Busy state ");
7898
7899 return WDI_ProcessRequest( pWDICtx, pEventData );
7900
7901}/*WDI_MainShutdownBusy*/
7902
7903
Jeff Johnsone7245742012-09-05 17:12:55 -07007904/*=======================================================================
7905
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007907
Jeff Johnson295189b2012-06-20 16:38:30 -07007908*=======================================================================*/
7909
7910/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007911 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007912========================================================================*/
7913/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007914 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007915 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007916
7917 @param pWDICtx: pointer to the WLAN DAL context
7918 pEventData: pointer to the event information structure
7919
Jeff Johnson295189b2012-06-20 16:38:30 -07007920 @see
7921 @return Result of the function call
7922*/
7923WDI_Status
7924WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007925(
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 WDI_ControlBlockType* pWDICtx,
7927 WDI_EventInfoType* pEventData
7928)
7929{
7930 WDI_StartReqParamsType* pwdiStartParams = NULL;
7931 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007932 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007933 wpt_uint16 usDataOffset = 0;
7934 wpt_uint16 usSendSize = 0;
7935
Jeff Johnsone7245742012-09-05 17:12:55 -07007936 tHalMacStartReqMsg halStartReq;
7937 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7939
7940 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007941 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 -------------------------------------------------------------------------*/
7943 if (( NULL == pEventData ) ||
7944 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7945 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7946 {
7947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007948 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007949 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 }
7952
7953 /*-----------------------------------------------------------------------
7954 Get message buffer
7955 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 pwdiStartParams->usConfigBufferLen;
7958
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 usLen,
7961 &pSendBuffer, &usDataOffset, &usSendSize))||
7962 ( usSendSize < (usDataOffset + usLen )))
7963 {
7964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007965 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 pEventData, pwdiStartParams, wdiStartRspCb);
7967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007969 }
7970
7971 /*-----------------------------------------------------------------------
7972 Fill in the message
7973 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007974 halStartReq.startReqParams.driverType =
7975 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007976
Jeff Johnsone7245742012-09-05 17:12:55 -07007977 halStartReq.startReqParams.uConfigBufferLen =
7978 pwdiStartParams->usConfigBufferLen;
7979 wpalMemoryCopy( pSendBuffer+usDataOffset,
7980 &halStartReq.startReqParams,
7981 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007982
Jeff Johnsone7245742012-09-05 17:12:55 -07007983 usDataOffset += sizeof(halStartReq.startReqParams);
7984 wpalMemoryCopy( pSendBuffer+usDataOffset,
7985 pwdiStartParams->pConfigBuffer,
7986 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007987
7988 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007990
7991 /*Save Low Level Ind CB and associated user data - it will be used further
7992 on when an indication is coming from the lower MAC*/
7993 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007995
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
8002
Jeff Johnsone7245742012-09-05 17:12:55 -07008003
Jeff Johnson295189b2012-06-20 16:38:30 -07008004}/*WDI_ProcessStartReq*/
8005
8006/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008008 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008009
8010 @param pWDICtx: pointer to the WLAN DAL context
8011 pEventData: pointer to the event information structure
8012
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 @see
8014 @return Result of the function call
8015*/
8016WDI_Status
8017WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008018(
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 WDI_ControlBlockType* pWDICtx,
8020 WDI_EventInfoType* pEventData
8021)
8022{
8023 WDI_StopReqParamsType* pwdiStopParams = NULL;
8024 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 wpt_uint16 usDataOffset = 0;
8027 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07008028 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8031
8032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 -------------------------------------------------------------------------*/
8035 if (( NULL == pEventData ) ||
8036 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
8037 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
8038 {
8039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008042 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008043 }
8044
8045 /*-----------------------------------------------------------------------
8046 Get message buffer
8047 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 sizeof(halStopReq.stopReqParams),
8050 &pSendBuffer, &usDataOffset, &usSendSize))||
8051 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
8052 {
8053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008054 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 pEventData, pwdiStopParams, wdiStopRspCb);
8056 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008057 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 }
8059
8060 /*-----------------------------------------------------------------------
8061 Fill in the message
8062 -----------------------------------------------------------------------*/
8063 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
8064 pwdiStopParams->wdiStopReason);
8065
Jeff Johnsone7245742012-09-05 17:12:55 -07008066 wpalMemoryCopy( pSendBuffer+usDataOffset,
8067 &halStopReq.stopReqParams,
8068 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008069
8070 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008071 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008072
8073 /*! TO DO: stop the data services */
8074 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8075 {
8076 /*Stop the STA Table !UT- check this logic again
8077 It is safer to do it here than on the response - because a stop is imminent*/
8078 WDI_STATableStop(pWDICtx);
8079
8080 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07008081 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
8082 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 {
8084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8085 "WDI Init failed to reset power state event");
8086
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008088 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 }
8090 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08008091 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
8092 if( eWLAN_PAL_STATUS_SUCCESS != status )
8093 {
8094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008095 "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 -08008096 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008097 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08008098 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 */
Jeff Johnson43971f52012-07-17 12:26:56 -07008102 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
8103 WDI_SET_POWER_STATE_TIMEOUT);
8104 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 {
8106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8107 "WDI Init failed to wait on an event");
8108
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008110 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008111 }
8112 }
8113
8114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008115 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008118 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
8119
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008120fail:
8121 // Release the message buffer so we don't leak
8122 wpalMemoryFree(pSendBuffer);
8123
8124failRequest:
8125 //WDA should have failure check to avoid the memory leak
8126 return WDI_STATUS_E_FAILURE;
8127
Jeff Johnson295189b2012-06-20 16:38:30 -07008128}/*WDI_ProcessStopReq*/
8129
8130/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008132 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008133
8134 @param pWDICtx: pointer to the WLAN DAL context
8135 pEventData: pointer to the event information structure
8136
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 @see
8138 @return Result of the function call
8139*/
8140WDI_Status
8141WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008142(
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 WDI_ControlBlockType* pWDICtx,
8144 WDI_EventInfoType* pEventData
8145)
8146{
Jeff Johnsone7245742012-09-05 17:12:55 -07008147 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8149
8150 /*Lock control block for cleanup*/
8151 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008152
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 /*Clear all pending request*/
8154 WDI_ClearPendingRequests(pWDICtx);
8155
8156 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008157 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07008158
8159 /* Close Data transport*/
8160 /* FTM mode does not open Data Path */
8161 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8162 {
8163 WDTS_Close(pWDICtx);
8164 }
8165
8166 /*Close the STA Table !UT- check this logic again*/
8167 WDI_STATableClose(pWDICtx);
8168
8169 /*close the PAL */
8170 wptStatus = wpalClose(pWDICtx->pPALContext);
8171 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8172 {
8173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8174 "Failed to wpal Close %d", wptStatus);
8175 WDI_ASSERT(0);
8176 }
8177
8178 /*Transition back to init state*/
8179 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
8180
8181 wpalMutexRelease(&pWDICtx->wptMutex);
8182
8183 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008185
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008187}/*WDI_ProcessCloseReq*/
8188
8189
8190/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008192===========================================================================*/
8193
8194/**
8195 @brief Process Init Scan Request function (called when Main FSM
8196 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008197
8198 @param pWDICtx: pointer to the WLAN DAL context
8199 pEventData: pointer to the event information structure
8200
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 @see
8202 @return Result of the function call
8203*/
8204WDI_Status
8205WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008206(
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 WDI_ControlBlockType* pWDICtx,
8208 WDI_EventInfoType* pEventData
8209)
8210{
8211 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
8212 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 wpt_uint16 usDataOffset = 0;
8215 wpt_uint16 usSendSize = 0;
8216 wpt_uint8 i = 0;
8217
8218 tHalInitScanReqMsg halInitScanReqMsg;
8219
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008221 * It shold be removed once host and riva changes are in sync*/
8222 tHalInitScanConReqMsg halInitScanConReqMsg;
8223
8224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8225
8226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008228 -------------------------------------------------------------------------*/
8229 if (( NULL == pEventData ) ||
8230 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8231 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8232 {
8233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 }
8238
8239#if 0
8240 wpalMutexAcquire(&pWDICtx->wptMutex);
8241 /*-----------------------------------------------------------------------
8242 Check to see if SCAN is already in progress - if so reject the req
8243 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 -----------------------------------------------------------------------*/
8246 if ( pWDICtx->bScanInProgress )
8247 {
8248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8249 "Scan is already in progress - subsequent scan is not allowed"
8250 " until the first scan completes");
8251
8252 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 }
8255
Jeff Johnsone7245742012-09-05 17:12:55 -07008256 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8257 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008258
8259 wpalMutexRelease(&pWDICtx->wptMutex);
8260#endif
Viral Modid86bde22012-12-10 13:09:21 -08008261 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008264 * It shold be removed once host and riva changes are in sync*/
8265 /*-----------------------------------------------------------------------
8266 Get message buffer
8267 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008268 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008269 sizeof(halInitScanConReqMsg.initScanParams),
8270 &pSendBuffer, &usDataOffset, &usSendSize))||
8271 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8272 {
8273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008274 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 }
8279
8280
8281 /*-----------------------------------------------------------------------
8282 Fill in the message
8283 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8286
8287 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8288 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8289
Jeff Johnsone7245742012-09-05 17:12:55 -07008290 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008291 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8296
8297 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8298 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8299
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8301 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008302
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8305
8306 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8307 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8310 }
8311
Jeff Johnsone7245742012-09-05 17:12:55 -07008312 wpalMemoryCopy( pSendBuffer+usDataOffset,
8313 &halInitScanConReqMsg.initScanParams,
8314 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 }
8316 else
8317 {
8318 /*-----------------------------------------------------------------------
8319 Get message buffer
8320 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 sizeof(halInitScanReqMsg.initScanParams),
8323 &pSendBuffer, &usDataOffset, &usSendSize))||
8324 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8325 {
8326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008327 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008328 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008331 }
8332
8333
8334 /*-----------------------------------------------------------------------
8335 Fill in the message
8336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8339
8340 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8341 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8342
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008345 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8349
8350 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8351 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8352
Jeff Johnsone7245742012-09-05 17:12:55 -07008353 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8355
8356 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8357 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8360 }
8361
Jeff Johnsone7245742012-09-05 17:12:55 -07008362 wpalMemoryCopy( pSendBuffer+usDataOffset,
8363 &halInitScanReqMsg.initScanParams,
8364 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 }
8366
8367 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008369
8370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008371 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8375
8376}/*WDI_ProcessInitScanReq*/
8377
8378/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008381
8382 @param pWDICtx: pointer to the WLAN DAL context
8383 pEventData: pointer to the event information structure
8384
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 @see
8386 @return Result of the function call
8387*/
8388WDI_Status
8389WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008390(
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 WDI_ControlBlockType* pWDICtx,
8392 WDI_EventInfoType* pEventData
8393)
8394{
8395 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8396 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008398 wpt_uint16 usDataOffset = 0;
8399 wpt_uint16 usSendSize = 0;
8400
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8403
8404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 -------------------------------------------------------------------------*/
8407 if (( NULL == pEventData ) ||
8408 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8409 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8410 {
8411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 }
8416
8417#if 0
8418 wpalMutexAcquire(&pWDICtx->wptMutex);
8419 /*-----------------------------------------------------------------------
8420 Check to see if SCAN is already in progress - start scan is only
8421 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8426 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8427 {
8428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8429 "Scan start not allowed in this state %d %d",
8430 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008431
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008434 }
8435
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008437
8438 wpalMutexRelease(&pWDICtx->wptMutex);
8439#endif
8440
8441 /*-----------------------------------------------------------------------
8442 Get message buffer
8443 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 sizeof(halStartScanReqMsg.startScanParams),
8446 &pSendBuffer, &usDataOffset, &usSendSize))||
8447 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8448 {
8449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008450 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 }
8455
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 wpalMemoryCopy( pSendBuffer+usDataOffset,
8459 &halStartScanReqMsg.startScanParams,
8460 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008461
8462 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008463 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008464
8465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008466 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8470}/*WDI_ProcessStartScanReq*/
8471
8472
8473/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008476
8477 @param pWDICtx: pointer to the WLAN DAL context
8478 pEventData: pointer to the event information structure
8479
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 @see
8481 @return Result of the function call
8482*/
8483WDI_Status
8484WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008485(
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 WDI_ControlBlockType* pWDICtx,
8487 WDI_EventInfoType* pEventData
8488)
8489{
8490 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8491 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 wpt_uint16 usDataOffset = 0;
8494 wpt_uint16 usSendSize = 0;
8495
Jeff Johnsone7245742012-09-05 17:12:55 -07008496 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8498
8499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 -------------------------------------------------------------------------*/
8502 if (( NULL == pEventData ) ||
8503 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8504 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8505 {
8506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 }
8511
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8513 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 * forwarded to HAL and result in hang*/
8515#if 0
8516 wpalMutexAcquire(&pWDICtx->wptMutex);
8517 /*-----------------------------------------------------------------------
8518 Check to see if SCAN is already in progress - end scan is only
8519 allowed when a scan is ongoing and the state of the scan procedure
8520 is started
8521 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008523 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8524 {
8525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8526 "End start not allowed in this state %d %d",
8527 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008528
Jeff Johnson295189b2012-06-20 16:38:30 -07008529 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008530 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 }
8532
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008534
8535 wpalMutexRelease(&pWDICtx->wptMutex);
8536#endif
8537
8538 /*-----------------------------------------------------------------------
8539 Get message buffer
8540 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 sizeof(halEndScanReqMsg.endScanParams),
8543 &pSendBuffer, &usDataOffset, &usSendSize))||
8544 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8545 {
8546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008547 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 }
8552
8553 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8554
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 wpalMemoryCopy( pSendBuffer+usDataOffset,
8556 &halEndScanReqMsg.endScanParams,
8557 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008558
8559 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008561
8562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8567}/*WDI_ProcessEndScanReq*/
8568
8569
8570/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008571 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008573
8574 @param pWDICtx: pointer to the WLAN DAL context
8575 pEventData: pointer to the event information structure
8576
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 @see
8578 @return Result of the function call
8579*/
8580WDI_Status
8581WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008582(
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 WDI_ControlBlockType* pWDICtx,
8584 WDI_EventInfoType* pEventData
8585)
8586{
8587 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8588 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 wpt_uint16 usDataOffset = 0;
8591 wpt_uint16 usSendSize = 0;
8592 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008593 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8596
8597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 -------------------------------------------------------------------------*/
8600 if (( NULL == pEventData ) ||
8601 ( NULL == pEventData->pEventData) ||
8602 ( NULL == pEventData->pCBfnc))
8603 {
8604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008605 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008608 }
8609
8610 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8611 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008612 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8613 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008614 * forwarded to HAL and result in hang*/
8615#if 0
8616 wpalMutexAcquire(&pWDICtx->wptMutex);
8617 /*-----------------------------------------------------------------------
8618 Check to see if SCAN is already in progress
8619 Finish scan gets invoked any scan states. ie. abort scan
8620 It should be allowed in any states.
8621 -----------------------------------------------------------------------*/
8622 if ( !pWDICtx->bScanInProgress )
8623 {
8624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8625 "Finish start not allowed in this state %d",
8626 pWDICtx->bScanInProgress );
8627
8628 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 }
8631
8632 /*-----------------------------------------------------------------------
8633 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008634 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8637 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 wpalMutexRelease(&pWDICtx->wptMutex);
8639#endif
8640
8641 if ( pWDICtx->bInBmps )
8642 {
8643 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008644 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8645 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8646 {
8647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008648 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008649 WDI_ASSERT(0);
8650 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 }
8652
8653 /*-----------------------------------------------------------------------
8654 Get message buffer
8655 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 sizeof(halFinishScanReqMsg.finishScanParams),
8658 &pSendBuffer, &usDataOffset, &usSendSize))||
8659 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8660 {
8661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008662 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 }
8667
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8670
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008672 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8673
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008675 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8676
8677 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8678 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8679
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8686
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8689
8690 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8691 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8694 }
8695
8696 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8697 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8698
Jeff Johnsone7245742012-09-05 17:12:55 -07008699 wpalMemoryCopy( pSendBuffer+usDataOffset,
8700 &halFinishScanReqMsg.finishScanParams,
8701 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008702
8703 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705
8706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8711}/*WDI_ProcessFinishScanReq*/
8712
8713
8714/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008715 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008716==========================================================================*/
8717/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008718 @brief Process BSS Join for a given Session
8719
8720 @param pWDICtx: pointer to the WLAN DAL context
8721 pEventData: pointer to the event information structure
8722
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 @see
8724 @return Result of the function call
8725*/
8726WDI_Status
8727WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008728(
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 WDI_ControlBlockType* pWDICtx,
8730 WDI_JoinReqParamsType* pwdiJoinParams,
8731 WDI_JoinRspCb wdiJoinRspCb,
8732 void* pUserData
8733)
8734{
8735 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 wpt_uint16 usDataOffset = 0;
8738 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008739 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008740
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8743
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008744 wpalMutexAcquire(&pWDICtx->wptMutex);
8745
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 /*------------------------------------------------------------------------
8747 Check to see if we have any session with this BSSID already stored, we
8748 should not
8749 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8751 pwdiJoinParams->wdiReqInfo.macBSSID,
8752 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008753
8754 if ( NULL != pBSSSes )
8755 {
8756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008757 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8758 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008759
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008760 /*reset the bAssociationInProgress otherwise the next
8761 *join request will be queued*/
8762 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8763 wpalMutexRelease(&pWDICtx->wptMutex);
8764 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 }
8766
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 if ( NULL == pBSSSes )
8772 {
8773
8774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8775 "DAL has no free sessions - cannot run another join");
8776
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008777 /*reset the bAssociationInProgress otherwise the next
8778 *join request will be queued*/
8779 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 }
8783
8784 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8786 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 WDI_MAC_ADDR_LEN);
8788
8789 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008792
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 wpalMutexRelease(&pWDICtx->wptMutex);
8794
8795 /*-----------------------------------------------------------------------
8796 Get message buffer
8797 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 sizeof(halJoinReqMsg.joinReqParams),
8800 &pSendBuffer, &usDataOffset, &usSendSize))||
8801 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8802 {
8803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008804 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 pUserData, pwdiJoinParams, wdiJoinRspCb);
8806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 }
8809
8810 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008812
8813 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 pwdiJoinParams->wdiReqInfo.macSTASelf,
8815 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008816
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8819
8820 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8821
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008822#ifdef WLAN_FEATURE_VOWIFI
8823 halJoinReqMsg.joinReqParams.maxTxPower =
8824 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8825#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8828#endif
8829
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8832 wdiSecondaryChannelOffset);
8833
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 wpalMemoryCopy( pSendBuffer+usDataOffset,
8835 &halJoinReqMsg.joinReqParams,
8836 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008837
8838 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008839 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008840
8841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8845 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008846
8847}/*WDI_ProcessBSSSessionJoinReq*/
8848
8849/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008852
8853 @param pWDICtx: pointer to the WLAN DAL context
8854 pEventData: pointer to the event information structure
8855
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 @see
8857 @return Result of the function call
8858*/
8859WDI_Status
8860WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008861(
Jeff Johnson295189b2012-06-20 16:38:30 -07008862 WDI_ControlBlockType* pWDICtx,
8863 WDI_EventInfoType* pEventData
8864)
8865{
8866 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8867 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8868 WDI_JoinRspCb wdiJoinRspCb = NULL;
8869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8870
8871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 -------------------------------------------------------------------------*/
8874 if (( NULL == pEventData ) ||
8875 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8876 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8877 {
8878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008883
Jeff Johnson295189b2012-06-20 16:38:30 -07008884 /*-------------------------------------------------------------------------
8885 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008886 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 -------------------------------------------------------------------------*/
8888 wpalMutexAcquire(&pWDICtx->wptMutex);
8889
8890 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8891 {
8892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8893 "Association is currently in progress, queueing new join req");
8894
8895 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008896 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 pwdiJoinParams->wdiReqInfo.macBSSID);
8898
8899 wpalMutexRelease(&pWDICtx->wptMutex);
8900
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 }
8903
8904 /*Starting a new association */
8905 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8906 wpalMutexRelease(&pWDICtx->wptMutex);
8907
8908 /*Process the Join Request*/
8909 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8910 wdiJoinRspCb,pEventData->pUserData);
8911
8912}/*WDI_ProcessJoinReq*/
8913
8914
8915/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008918
8919 @param pWDICtx: pointer to the WLAN DAL context
8920 pEventData: pointer to the event information structure
8921
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 @see
8923 @return Result of the function call
8924*/
8925WDI_Status
8926WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008927(
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 WDI_ControlBlockType* pWDICtx,
8929 WDI_EventInfoType* pEventData
8930)
8931{
8932 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8933 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 wpt_uint16 uMsgSize = 0;
8937 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 wpt_uint16 usDataOffset = 0;
8939 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008941
Jeff Johnsone7245742012-09-05 17:12:55 -07008942 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8944
8945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 -------------------------------------------------------------------------*/
8948 if (( NULL == pEventData ) ||
8949 ( NULL == pEventData->pEventData ) ||
8950 ( NULL == pEventData->pCBfnc ))
8951 {
8952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 }
8957
Abhishek Singh6927fa02014-06-27 17:19:55 +05308958 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008959 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8960 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8961 /*-------------------------------------------------------------------------
8962 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 -------------------------------------------------------------------------*/
8965 wpalMutexAcquire(&pWDICtx->wptMutex);
8966
8967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008969 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8971 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8972 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008973
Jeff Johnsone7245742012-09-05 17:12:55 -07008974 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008975 {
8976#ifdef WLAN_FEATURE_VOWIFI_11R
8977 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008978 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 if ( NULL == pBSSSes )
8982 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008983
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8985 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008986
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008990
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8993 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008995
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8999#else
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07009001 * Request in case of IBSS*/
9002 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
9003 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
9004 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
9005 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
9006 {
9007 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 if ( NULL == pBSSSes )
9012 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009013
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9015 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009016
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009018 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009020
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9023 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009025
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9029 }
9030 else
9031 {
9032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
9034 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9035 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
9036
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 /* for IBSS testing */
9038 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 }
9041#endif
9042 }
9043
9044 /*------------------------------------------------------------------------
9045 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009046 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009047 ------------------------------------------------------------------------*/
9048 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9049 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9051 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
9052 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9053 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009054
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009056
9057 wpalMutexRelease(&pWDICtx->wptMutex);
9058
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 }
9061
9062 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009063 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
9064 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 sizeof(pWDICtx->wdiCachedConfigBssReq));
9066
9067 wpalMutexRelease(&pWDICtx->wptMutex);
9068
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
9070#ifdef WLAN_FEATURE_11AC
9071 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009072 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 else
9074#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009075 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07009076
9077 /*-----------------------------------------------------------------------
9078 Get message buffer
9079 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
9082 ( usSendSize < (usDataOffset + uMsgSize )))
9083 {
9084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009085 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
9087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 }
9090
9091 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07009092#ifdef WLAN_FEATURE_11AC
9093 if (WDI_getFwWlanFeatCaps(DOT11AC))
9094 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
9095 &pwdiConfigBSSParams->wdiReqInfo);
9096 else
9097#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 &pwdiConfigBSSParams->wdiReqInfo);
9100
9101 /* Need to fill in the STA Index to invalid, since at this point we have not
9102 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07009104
9105 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
9107
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009108#ifdef WLAN_FEATURE_11AC
9109 if (WDI_getFwWlanFeatCaps(DOT11AC)){
9110 wpalMemoryCopy( pSendBuffer+usDataOffset,
9111 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
9112 uMsgSize);
9113 }else
9114#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009115 {
9116 if ( uMsgSize <= sizeof(tConfigBssParams) )
9117 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07009118 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009119 &halConfigBssReqMsg.uBssParams.configBssParams,
9120 uMsgSize);
9121 }
9122 else
9123 {
9124 return WDI_STATUS_E_FAILURE;
9125 }
9126 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009127
9128 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309130 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9135 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 WDI_CONFIG_BSS_RESP);
9137
9138}/*WDI_ProcessConfigBSSReq*/
9139
9140
9141/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009144
9145 @param pWDICtx: pointer to the WLAN DAL context
9146 pEventData: pointer to the event information structure
9147
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 @see
9149 @return Result of the function call
9150*/
9151WDI_Status
9152WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009153(
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 WDI_ControlBlockType* pWDICtx,
9155 WDI_EventInfoType* pEventData
9156)
9157{
9158 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
9159 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 wpt_uint16 usDataOffset = 0;
9164 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009166
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9169
9170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 -------------------------------------------------------------------------*/
9173 if (( NULL == pEventData ) ||
9174 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
9175 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
9176 {
9177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 }
9182
9183 /*-------------------------------------------------------------------------
9184 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 -------------------------------------------------------------------------*/
9187 wpalMutexAcquire(&pWDICtx->wptMutex);
9188
9189 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9193 pwdiDelBSSParams->ucBssIdx,
9194 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009195
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 {
9198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 "%s: BSS does not yet exist. ucBssIdx %d",
9200 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009201
9202 wpalMutexRelease(&pWDICtx->wptMutex);
9203
9204 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009206
9207 /*------------------------------------------------------------------------
9208 Check if this BSS is being currently processed or queued,
9209 if queued - queue the new request as well
9210 ------------------------------------------------------------------------*/
9211 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07009212 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9214 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9215 __func__, pwdiDelBSSParams->ucBssIdx);
9216
9217 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9218
9219 wpalMutexRelease(&pWDICtx->wptMutex);
9220
9221 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009222 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009223
Jeff Johnson295189b2012-06-20 16:38:30 -07009224 /*-----------------------------------------------------------------------
9225 If we receive a Del BSS request for an association that is already in
9226 progress, it indicates that the assoc has failed => we no longer have
9227 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 -----------------------------------------------------------------------*/
9230 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9231 {
9232 /*We can switch to false here because even if a subsequent Join comes in
9233 it will only be processed when DAL transitions out of BUSY state which
9234 happens when the Del BSS request comes */
9235 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9236
9237 /*Former association is complete - prepare next pending assoc for
9238 processing */
9239 WDI_DequeueAssocRequest(pWDICtx);
9240 }
9241
9242 wpalMutexRelease(&pWDICtx->wptMutex);
9243 /*-----------------------------------------------------------------------
9244 Get message buffer
9245 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 sizeof(halBssReqMsg.deleteBssParams),
9248 &pSendBuffer, &usDataOffset, &usSendSize))||
9249 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9250 {
9251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009252 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9254 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 }
9257
9258 /*Fill in the message request structure*/
9259
9260 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009261 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009262
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 wpalMemoryCopy( pSendBuffer+usDataOffset,
9264 &halBssReqMsg.deleteBssParams,
9265 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009266
9267 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009269
Jeff Johnsone7245742012-09-05 17:12:55 -07009270
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9276
Jeff Johnsone7245742012-09-05 17:12:55 -07009277
Jeff Johnson295189b2012-06-20 16:38:30 -07009278}/*WDI_ProcessDelBSSReq*/
9279
9280/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009282 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009283
9284 @param pWDICtx: pointer to the WLAN DAL context
9285 pEventData: pointer to the event information structure
9286
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 @see
9288 @return Result of the function call
9289*/
9290WDI_Status
9291WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009292(
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 WDI_ControlBlockType* pWDICtx,
9294 WDI_EventInfoType* pEventData
9295)
9296{
9297 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9298 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 wpt_uint16 usDataOffset = 0;
9303 wpt_uint16 usSendSize = 0;
9304 wpt_uint16 uMsgSize = 0;
9305 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009307
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9310
9311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 -------------------------------------------------------------------------*/
9314 if (( NULL == pEventData ) ||
9315 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9316 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9317 {
9318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 }
9323
9324 /*-------------------------------------------------------------------------
9325 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009327 -------------------------------------------------------------------------*/
9328 wpalMutexAcquire(&pWDICtx->wptMutex);
9329
9330 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9334 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9335 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009336
9337 if ( NULL == pBSSSes )
9338 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9340 "%s: Association sequence for this BSS does not yet exist - "
9341 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9342 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009343
9344 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 }
9347
9348 /*------------------------------------------------------------------------
9349 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 ------------------------------------------------------------------------*/
9352 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9353 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9355 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9356 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009357
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009359
9360 wpalMutexRelease(&pWDICtx->wptMutex);
9361
Jeff Johnsone7245742012-09-05 17:12:55 -07009362 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 }
9364
9365 /*-----------------------------------------------------------------------
9366 If Post Assoc was not yet received - the current association must
9367 be in progress
9368 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9371 {
9372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9373 "Association sequence for this BSS association no longer in "
9374 "progress - not allowed");
9375
9376 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 }
9379
9380 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 -----------------------------------------------------------------------*/
9383 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9384 {
9385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9386 "Post Assoc not allowed before JOIN - failing request");
9387
9388 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 }
9391
9392 wpalMutexRelease(&pWDICtx->wptMutex);
9393
9394 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9395 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9396 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9401 ( usSendSize < (usDataOffset + uMsgSize )))
9402 {
9403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009404 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 }
9409
9410 /*Copy the STA parameters */
9411 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9412 &pwdiPostAssocParams->wdiSTAParams );
9413
9414 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 WDI_STATableFindStaidByAddr(pWDICtx,
9417 pwdiPostAssocParams->wdiSTAParams.macSTA,
9418 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9419 {
9420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009421 MAC_ADDRESS_STR
9422 ": This station does not exist in the WDI Station Table",
9423 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009425 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 }
9428
9429 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 pBSSSes->ucBSSIdx;
9432
9433 /*Copy the BSS parameters */
9434 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9435 &pwdiPostAssocParams->wdiBSSParams);
9436
9437 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 WDI_STATableFindStaidByAddr(pWDICtx,
9440 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 {
9443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009444 MAC_ADDRESS_STR
9445 ": This station does not exist in the WDI Station Table",
9446 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009448 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 }
9451
9452 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009453 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 pBSSSes->ucBSSIdx;
9455
Jeff Johnsone7245742012-09-05 17:12:55 -07009456
9457 wpalMemoryCopy( pSendBuffer+usDataOffset,
9458 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9459 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009460
9461 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9462
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9464 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9465 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009466
Jeff Johnsone7245742012-09-05 17:12:55 -07009467
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009470
Jeff Johnsone7245742012-09-05 17:12:55 -07009471
9472 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009474 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009475
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309476 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9482
Jeff Johnsone7245742012-09-05 17:12:55 -07009483
Jeff Johnson295189b2012-06-20 16:38:30 -07009484}/*WDI_ProcessPostAssocReq*/
9485
9486/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009489
9490 @param pWDICtx: pointer to the WLAN DAL context
9491 pEventData: pointer to the event information structure
9492
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 @see
9494 @return Result of the function call
9495*/
9496WDI_Status
9497WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009498(
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 WDI_ControlBlockType* pWDICtx,
9500 WDI_EventInfoType* pEventData
9501)
9502{
9503 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9504 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 wpt_uint16 usDataOffset = 0;
9509 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9512
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9515
9516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 -------------------------------------------------------------------------*/
9519 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9520 ( NULL == pEventData->pCBfnc ))
9521 {
9522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 }
9527
9528 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9529 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9530 /*-------------------------------------------------------------------------
9531 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009533 -------------------------------------------------------------------------*/
9534 wpalMutexAcquire(&pWDICtx->wptMutex);
9535
9536 /*------------------------------------------------------------------------
9537 Find the BSS for which the request is made and identify WDI session
9538 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9540 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 &macBSSID))
9542 {
9543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009544 "This station does not exist in the WDI Station Table %d",
9545 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 }
9549
Jeff Johnsone7245742012-09-05 17:12:55 -07009550 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9551 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9554 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9555 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009556
9557 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 }
9560
9561 /*------------------------------------------------------------------------
9562 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 ------------------------------------------------------------------------*/
9565 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9566 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9568 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9569 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009570
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 }
9575
9576 wpalMutexRelease(&pWDICtx->wptMutex);
9577 /*-----------------------------------------------------------------------
9578 Get message buffer
9579 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009580 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009581 sizeof(halDelStaReqMsg.delStaParams),
9582 &pSendBuffer, &usDataOffset, &usSendSize))||
9583 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9584 {
9585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009586 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009590 }
9591
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9593 wpalMemoryCopy( pSendBuffer+usDataOffset,
9594 &halDelStaReqMsg.delStaParams,
9595 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009596
9597 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009599
9600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009602 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9605
9606}/*WDI_ProcessDelSTAReq*/
9607
9608
9609/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009611==========================================================================*/
9612/**
9613 @brief Process Set BSS Key Request function (called when Main FSM
9614 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009615
9616 @param pWDICtx: pointer to the WLAN DAL context
9617 pEventData: pointer to the event information structure
9618
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 @see
9620 @return Result of the function call
9621*/
9622WDI_Status
9623WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009624(
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 WDI_ControlBlockType* pWDICtx,
9626 WDI_EventInfoType* pEventData
9627)
9628{
9629 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9630 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 wpt_uint16 usDataOffset = 0;
9635 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9638 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309639 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009640
9641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9642
9643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009645 -------------------------------------------------------------------------*/
9646 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9647 ( NULL == pEventData->pCBfnc ))
9648 {
9649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 }
9654
9655 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9656 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9657 /*-------------------------------------------------------------------------
9658 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 -------------------------------------------------------------------------*/
9661 wpalMutexAcquire(&pWDICtx->wptMutex);
9662
9663 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9667 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9668 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009669
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 {
9672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9674 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009675
9676 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 }
9679
9680 /*------------------------------------------------------------------------
9681 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 ------------------------------------------------------------------------*/
9684 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9685 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9687 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9688 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009689
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 }
9694
9695
9696 wpalMutexRelease(&pWDICtx->wptMutex);
9697 /*-----------------------------------------------------------------------
9698 Get message buffer
9699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9702 &pSendBuffer, &usDataOffset, &usSendSize))||
9703 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9704 {
9705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009706 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 }
9711
9712 /*-----------------------------------------------------------------------
9713 Copy the Key parameters into the HAL message
9714 -----------------------------------------------------------------------*/
9715
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009717
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9720
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9723
9724 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9725 keyIndex++)
9726 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009727 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009728 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9729 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9730 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9731 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9732 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309733
9734 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9735 {
9736 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9737 {
9738 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9739 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9740 }
9741
9742 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9743 {
9744 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9745 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9746 }
9747
9748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9749 "%s: Negated Keys", __func__);
9750 }
9751 else
9752 {
9753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9754 "%s: No change in Keys", __func__);
9755 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309758 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9759 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9760 WDI_MAX_KEY_LENGTH);
9761 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309766 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009767
9768 wpalMemoryCopy( pSendBuffer+usDataOffset,
9769 &halSetBssKeyReqMsg.setBssKeyParams,
9770 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009771
9772 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009774
9775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009776 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9779 wdiSetBSSKeyRspCb, pEventData->pUserData,
9780 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009781
9782}/*WDI_ProcessSetBssKeyReq*/
9783
9784/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009785 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009786 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009787
9788 @param pWDICtx: pointer to the WLAN DAL context
9789 pEventData: pointer to the event information structure
9790
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 @see
9792 @return Result of the function call
9793*/
9794WDI_Status
9795WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009796(
Jeff Johnson295189b2012-06-20 16:38:30 -07009797 WDI_ControlBlockType* pWDICtx,
9798 WDI_EventInfoType* pEventData
9799)
9800{
9801 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9802 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 wpt_uint16 usDataOffset = 0;
9807 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9811
9812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 -------------------------------------------------------------------------*/
9815 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9816 ( NULL == pEventData->pCBfnc ))
9817 {
9818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009819 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 }
9823
9824 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9825 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9826 /*-------------------------------------------------------------------------
9827 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009829 -------------------------------------------------------------------------*/
9830 wpalMutexAcquire(&pWDICtx->wptMutex);
9831
9832 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9836 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9837 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009838
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 {
9841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9843 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009844
9845 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 }
9848
9849 /*------------------------------------------------------------------------
9850 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 ------------------------------------------------------------------------*/
9853 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9854 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9856 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9857 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009858
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 }
9863
9864
9865 wpalMutexRelease(&pWDICtx->wptMutex);
9866
9867 /*-----------------------------------------------------------------------
9868 Get message buffer
9869 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9872 &pSendBuffer, &usDataOffset, &usSendSize))||
9873 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9874 {
9875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009876 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 }
9881 /*-----------------------------------------------------------------------
9882 Copy the Key parameters into the HAL message
9883 -----------------------------------------------------------------------*/
9884 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9885
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9888
9889 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9890
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009892 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9893
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 wpalMemoryCopy( pSendBuffer+usDataOffset,
9895 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9896 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009897
9898 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009900
9901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009904 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009905 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009907}/*WDI_ProcessRemoveBssKeyReq*/
9908
9909/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009911 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009912
9913 @param pWDICtx: pointer to the WLAN DAL context
9914 pEventData: pointer to the event information structure
9915
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 @see
9917 @return Result of the function call
9918*/
9919WDI_Status
9920WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009921(
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 WDI_ControlBlockType* pWDICtx,
9923 WDI_EventInfoType* pEventData
9924)
9925{
9926 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9927 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9928 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 wpt_uint16 usDataOffset = 0;
9931 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009932 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9936 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309937 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009938
9939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9940
9941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 -------------------------------------------------------------------------*/
9944 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9945 ( NULL == pEventData->pCBfnc ))
9946 {
9947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009948 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 }
9952
9953 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9954 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9955 /*-------------------------------------------------------------------------
9956 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 -------------------------------------------------------------------------*/
9959 wpalMutexAcquire(&pWDICtx->wptMutex);
9960
9961 /*------------------------------------------------------------------------
9962 Find the BSS for which the request is made and identify WDI session
9963 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9965 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 &macBSSID))
9967 {
9968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009969 "This station does not exist in the WDI Station Table %d",
9970 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 }
9974
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9976 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9979 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9980 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009981
9982 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009985
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 /*------------------------------------------------------------------------
9987 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009989 ------------------------------------------------------------------------*/
9990 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9991 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9993 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9994 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009995
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 }
10000
10001
10002 wpalMutexRelease(&pWDICtx->wptMutex);
10003 /*-----------------------------------------------------------------------
10004 Get message buffer
10005 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010006 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010007 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10008 &pSendBuffer, &usDataOffset, &usSendSize))||
10009 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10010 {
10011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010012 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010016 }
10017 /*-----------------------------------------------------------------------
10018 Copy the STA Key parameters into the HAL message
10019 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10022
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10025
10026 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10027
10028 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10029
10030 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10031
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10033 keyIndex++)
10034 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10037 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10038 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10039 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10040 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010041
10042 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10043 {
10044 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10045 {
10046 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10047 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10048 }
10049
10050 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10051 {
10052 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10053 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10054 }
10055
10056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10057 "%s: Negated Keys", __func__);
10058 }
10059 else
10060 {
10061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10062 "%s: No change in Keys", __func__);
10063 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010064 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010066 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10067 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10068 WDI_MAX_KEY_LENGTH);
10069 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010070 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010072 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010073 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010074 }
Jeff Johnson295189b2012-06-20 16:38:30 -070010075
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 wpalMemoryCopy( pSendBuffer+usDataOffset,
10077 &halSetStaKeyReqMsg.setStaKeyParams,
10078 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010079
10080 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010081 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010082 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010084 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010085 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10087 wdiSetSTAKeyRspCb, pEventData->pUserData,
10088 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010089
10090}/*WDI_ProcessSetSTAKeyReq*/
10091
10092/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010093 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010094 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010095
10096 @param pWDICtx: pointer to the WLAN DAL context
10097 pEventData: pointer to the event information structure
10098
Jeff Johnson295189b2012-06-20 16:38:30 -070010099 @see
10100 @return Result of the function call
10101*/
10102WDI_Status
10103WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010104(
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 WDI_ControlBlockType* pWDICtx,
10106 WDI_EventInfoType* pEventData
10107)
10108{
10109 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
10110 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10111 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 wpt_uint16 usDataOffset = 0;
10114 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 wpt_macAddr macBSSID;
10117 wpt_uint8 ucCurrentBSSSesIdx;
10118 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
10119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10120
10121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 -------------------------------------------------------------------------*/
10124 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10125 ( NULL == pEventData->pCBfnc ))
10126 {
10127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010128 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010130 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010131 }
10132
10133 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10134 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10135 /*-------------------------------------------------------------------------
10136 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 -------------------------------------------------------------------------*/
10139 wpalMutexAcquire(&pWDICtx->wptMutex);
10140
10141 /*------------------------------------------------------------------------
10142 Find the BSS for which the request is made and identify WDI session
10143 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10145 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 &macBSSID))
10147 {
10148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010149 "This station does not exist in the WDI Station Table %d",
10150 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010151 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 }
10154
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10156 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10159 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10160 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010161
10162 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010165
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 /*------------------------------------------------------------------------
10167 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 ------------------------------------------------------------------------*/
10170 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10171 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10173 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10174 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010175
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 }
10180
10181
10182
10183 wpalMutexRelease(&pWDICtx->wptMutex);
10184 /*-----------------------------------------------------------------------
10185 Get message buffer
10186 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010187 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010188 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
10189 &pSendBuffer, &usDataOffset, &usSendSize))||
10190 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
10191 {
10192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010193 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010194 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
10195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 }
10198
10199 /*-----------------------------------------------------------------------
10200 Copy the Key parameters into the HAL message
10201 -----------------------------------------------------------------------*/
10202
Jeff Johnsone7245742012-09-05 17:12:55 -070010203 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10205
Jeff Johnsone7245742012-09-05 17:12:55 -070010206 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010207 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
10208
Jeff Johnsone7245742012-09-05 17:12:55 -070010209 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010210 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
10211
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
10214
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 wpalMemoryCopy( pSendBuffer+usDataOffset,
10216 &halRemoveStaKeyReqMsg.removeStaKeyParams,
10217 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010218
10219 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010221
10222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010223 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010226 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010228
10229}/*WDI_ProcessRemoveSTAKeyReq*/
10230
10231/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010234
10235 @param pWDICtx: pointer to the WLAN DAL context
10236 pEventData: pointer to the event information structure
10237
Jeff Johnson295189b2012-06-20 16:38:30 -070010238 @see
10239 @return Result of the function call
10240*/
10241WDI_Status
10242WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010243(
Jeff Johnson295189b2012-06-20 16:38:30 -070010244 WDI_ControlBlockType* pWDICtx,
10245 WDI_EventInfoType* pEventData
10246)
10247{
10248 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10249 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10250 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 wpt_uint16 usDataOffset = 0;
10253 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010256 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010257 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10258 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010259 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010260
10261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10262
10263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010264 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010265 -------------------------------------------------------------------------*/
10266 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10267 ( NULL == pEventData->pCBfnc ))
10268 {
10269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 }
10274
10275 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10276 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10277 /*-------------------------------------------------------------------------
10278 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010280 -------------------------------------------------------------------------*/
10281 wpalMutexAcquire(&pWDICtx->wptMutex);
10282
10283 /*------------------------------------------------------------------------
10284 Find the BSS for which the request is made and identify WDI session
10285 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10287 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 &macBSSID))
10289 {
10290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010291 "This station does not exist in the WDI Station Table %d",
10292 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010293 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 }
10296
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10298 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 {
10300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010301 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010303
10304 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010307
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 /*------------------------------------------------------------------------
10309 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 ------------------------------------------------------------------------*/
10312 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10313 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10315 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10316 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010317
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 }
10322
10323
10324 wpalMutexRelease(&pWDICtx->wptMutex);
10325 /*-----------------------------------------------------------------------
10326 Get message buffer
10327 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10330 &pSendBuffer, &usDataOffset, &usSendSize))||
10331 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10332 {
10333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010334 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 }
10339 /*-----------------------------------------------------------------------
10340 Copy the STA Key parameters into the HAL message
10341 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10344
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10347
10348 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10349
10350 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10351
10352 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10353
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10355 keyIndex++)
10356 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10359 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10360 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10361 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10362 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010363
10364 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10365 {
10366 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10367 {
10368 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10369 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10370 }
10371
10372 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10373 {
10374 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10375 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10376 }
10377
10378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10379 "%s: Negated Keys", __func__);
10380 }
10381 else
10382 {
10383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10384 "%s: No change in Keys", __func__);
10385 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010386 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010387 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010388 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10389 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10390 WDI_MAX_KEY_LENGTH);
10391 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010396 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 wpalMemoryCopy( pSendBuffer+usDataOffset,
10398 &halSetStaKeyReqMsg.setStaKeyParams,
10399 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010400
10401 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010403
10404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10408 wdiSetSTAKeyRspCb, pEventData->pUserData,
10409 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010410
10411}/*WDI_ProcessSetSTABcastKeyReq*/
10412
10413/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010415 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010416
10417 @param pWDICtx: pointer to the WLAN DAL context
10418 pEventData: pointer to the event information structure
10419
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 @see
10421 @return Result of the function call
10422*/
10423WDI_Status
10424WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010425(
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 WDI_ControlBlockType* pWDICtx,
10427 WDI_EventInfoType* pEventData
10428)
10429{
10430 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10431 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10432 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 wpt_uint16 usDataOffset = 0;
10435 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010437 wpt_macAddr macBSSID;
10438 wpt_uint8 ucCurrentBSSSesIdx;
10439 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10441
10442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 -------------------------------------------------------------------------*/
10445 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10446 ( NULL == pEventData->pCBfnc ))
10447 {
10448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010452 }
10453
10454 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10455 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10456 /*-------------------------------------------------------------------------
10457 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 -------------------------------------------------------------------------*/
10460 wpalMutexAcquire(&pWDICtx->wptMutex);
10461
10462 /*------------------------------------------------------------------------
10463 Find the BSS for which the request is made and identify WDI session
10464 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10466 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 &macBSSID))
10468 {
10469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010470 "This station does not exist in the WDI Station Table %d",
10471 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010472 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 }
10475
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10477 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10480 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10481 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010482
10483 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010486
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 /*------------------------------------------------------------------------
10488 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 ------------------------------------------------------------------------*/
10491 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10492 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10494 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10495 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010496
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 }
10501
10502
10503
10504 wpalMutexRelease(&pWDICtx->wptMutex);
10505 /*-----------------------------------------------------------------------
10506 Get message buffer
10507 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010508 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010509 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10510 &pSendBuffer, &usDataOffset, &usSendSize))||
10511 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10512 {
10513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010514 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 }
10519
10520 /*-----------------------------------------------------------------------
10521 Copy the Key parameters into the HAL message
10522 -----------------------------------------------------------------------*/
10523
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10526
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010528 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10529
Jeff Johnsone7245742012-09-05 17:12:55 -070010530 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10532
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010534 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10535
Jeff Johnsone7245742012-09-05 17:12:55 -070010536 wpalMemoryCopy( pSendBuffer+usDataOffset,
10537 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10538 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010539
10540 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010541 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010542
10543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010544 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010547 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010549
10550}/*WDI_ProcessRemoveSTABcastKeyReq*/
10551
10552/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010554==========================================================================*/
10555/**
10556 @brief Process Add TSpec Request function (called when Main FSM
10557 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010558
10559 @param pWDICtx: pointer to the WLAN DAL context
10560 pEventData: pointer to the event information structure
10561
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 @see
10563 @return Result of the function call
10564*/
10565WDI_Status
10566WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010567(
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 WDI_ControlBlockType* pWDICtx,
10569 WDI_EventInfoType* pEventData
10570)
10571{
10572 WDI_AddTSReqParamsType* pwdiAddTSParams;
10573 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 wpt_uint16 usDataOffset = 0;
10578 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010580 wpt_macAddr macBSSID;
10581 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010582
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10584
10585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 -------------------------------------------------------------------------*/
10588 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10589 ( NULL == pEventData->pCBfnc ))
10590 {
10591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 }
10596
10597 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10598 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10599 /*-------------------------------------------------------------------------
10600 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 -------------------------------------------------------------------------*/
10603 wpalMutexAcquire(&pWDICtx->wptMutex);
10604
10605 /*------------------------------------------------------------------------
10606 Find the BSS for which the request is made and identify WDI session
10607 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010608 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10609 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 &macBSSID))
10611 {
10612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010613 "This station does not exist in the WDI Station Table %d",
10614 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010617 }
10618
Jeff Johnsone7245742012-09-05 17:12:55 -070010619 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10620 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010621 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10623 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10624 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010625
10626 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010629
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 /*------------------------------------------------------------------------
10631 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 ------------------------------------------------------------------------*/
10634 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10635 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10637 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10638 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010639
Jeff Johnsone7245742012-09-05 17:12:55 -070010640 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010641 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010642 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 }
10644
10645 wpalMutexRelease(&pWDICtx->wptMutex);
10646 /*-----------------------------------------------------------------------
10647 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010648 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010649 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010650 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10651 sizeof(halAddTsParams),
10652 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010653 &usSendSize))||
10654 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10655 {
10656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010657 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010661 }
10662
10663 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10664 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10665
10666 //TSPEC IE
10667 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10668 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010671 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010672 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010679 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010680 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010681 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010682 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010688 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010690 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010697 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010698 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10699
10700 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010704 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010705 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010706 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010707 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010709 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010710 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10715
10716 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10721
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 wpalMemoryCopy( pSendBuffer+usDataOffset,
10723 &halAddTsParams,
10724 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010725
10726 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010728
10729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010730 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010731 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010735}/*WDI_ProcessAddTSpecReq*/
10736
10737
10738/**
10739 @brief Process Del TSpec Request function (called when Main FSM
10740 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010741
10742 @param pWDICtx: pointer to the WLAN DAL context
10743 pEventData: pointer to the event information structure
10744
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 @see
10746 @return Result of the function call
10747*/
10748WDI_Status
10749WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010750(
Jeff Johnson295189b2012-06-20 16:38:30 -070010751 WDI_ControlBlockType* pWDICtx,
10752 WDI_EventInfoType* pEventData
10753)
10754{
10755 WDI_DelTSReqParamsType* pwdiDelTSParams;
10756 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010759 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010760 wpt_uint16 usDataOffset = 0;
10761 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010762 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10764
10765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010766 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 -------------------------------------------------------------------------*/
10768 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10769 ( NULL == pEventData->pCBfnc ))
10770 {
10771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010772 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010775 }
10776
10777 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10778 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10779
10780 /*-------------------------------------------------------------------------
10781 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 -------------------------------------------------------------------------*/
10784 wpalMutexAcquire(&pWDICtx->wptMutex);
10785
10786 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010787 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010788 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10790 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10791 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010792
Jeff Johnsone7245742012-09-05 17:12:55 -070010793 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010794 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10796 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10797 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10798
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 }
10802
10803 /*------------------------------------------------------------------------
10804 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010806 ------------------------------------------------------------------------*/
10807 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10808 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10810 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10811 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010812
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010814 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 }
10817
10818
10819 wpalMutexRelease(&pWDICtx->wptMutex);
10820 /*-----------------------------------------------------------------------
10821 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010822 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010824 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010825 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10826 &pSendBuffer, &usDataOffset, &usSendSize))||
10827 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10828 {
10829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010830 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010831 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010834 }
10835
Jeff Johnsone7245742012-09-05 17:12:55 -070010836 wpalMemoryCopy( pSendBuffer+usDataOffset,
10837 &pwdiDelTSParams->wdiDelTSInfo,
10838 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010839
10840 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010842
10843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010846 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10847 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010848}/*WDI_ProcessDelTSpecReq*/
10849
10850/**
10851 @brief Process Update EDCA Params Request function (called when
10852 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010853
10854 @param pWDICtx: pointer to the WLAN DAL context
10855 pEventData: pointer to the event information structure
10856
Jeff Johnson295189b2012-06-20 16:38:30 -070010857 @see
10858 @return Result of the function call
10859*/
10860WDI_Status
10861WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010862(
Jeff Johnson295189b2012-06-20 16:38:30 -070010863 WDI_ControlBlockType* pWDICtx,
10864 WDI_EventInfoType* pEventData
10865)
10866{
10867 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10868 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010869 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010870 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 wpt_uint16 usDataOffset = 0;
10873 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010874 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10876
10877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 -------------------------------------------------------------------------*/
10880 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10881 ( NULL == pEventData->pCBfnc ))
10882 {
10883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010884 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 }
10888
10889 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10890 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10891 /*-------------------------------------------------------------------------
10892 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 -------------------------------------------------------------------------*/
10895 wpalMutexAcquire(&pWDICtx->wptMutex);
10896
10897 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010900 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10901 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10902 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010903
Jeff Johnsone7245742012-09-05 17:12:55 -070010904 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 {
10906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10908 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010909
10910 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 }
10913
10914 /*------------------------------------------------------------------------
10915 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010916 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010917 ------------------------------------------------------------------------*/
10918 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10919 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10921 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10922 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010923
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010925 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010927 }
10928
10929
10930 wpalMutexRelease(&pWDICtx->wptMutex);
10931 /*-----------------------------------------------------------------------
10932 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010933 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10937 &pSendBuffer, &usDataOffset, &usSendSize))||
10938 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10939 {
10940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010941 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010945 }
10946
Jeff Johnsone7245742012-09-05 17:12:55 -070010947 wpalMemoryCopy( pSendBuffer+usDataOffset,
10948 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10949 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010950
10951 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010952 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010953
10954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10958 wdiUpdateEDCARspCb, pEventData->pUserData,
10959 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960}/*WDI_ProcessUpdateEDCAParamsReq*/
10961
10962/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010963 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010964 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010965
10966 @param pWDICtx: pointer to the WLAN DAL context
10967 pEventData: pointer to the event information structure
10968
Jeff Johnson295189b2012-06-20 16:38:30 -070010969 @see
10970 @return Result of the function call
10971*/
10972WDI_Status
10973WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010974(
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 WDI_ControlBlockType* pWDICtx,
10976 WDI_EventInfoType* pEventData
10977)
10978{
10979 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10980 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010983 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010984 wpt_uint16 usDataOffset = 0;
10985 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 wpt_macAddr macBSSID;
10988
10989 tAddBASessionReqMsg halAddBASessionReq;
10990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10991
10992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010994 -------------------------------------------------------------------------*/
10995 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10996 ( NULL == pEventData->pCBfnc ))
10997 {
10998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010999 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011002 }
11003
Jeff Johnsone7245742012-09-05 17:12:55 -070011004 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011005 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011006 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011007 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
11008 /*-------------------------------------------------------------------------
11009 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011010 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011011 -------------------------------------------------------------------------*/
11012 wpalMutexAcquire(&pWDICtx->wptMutex);
11013
11014 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011015 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011016 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011017 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11018 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 &macBSSID))
11020 {
11021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011022 "This station does not exist in the WDI Station Table %d",
11023 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011026 }
11027
11028
Jeff Johnsone7245742012-09-05 17:12:55 -070011029 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011030
Jeff Johnsone7245742012-09-05 17:12:55 -070011031 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11034 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11035 __func__, MAC_ADDR_ARRAY(macBSSID));
11036
Jeff Johnson295189b2012-06-20 16:38:30 -070011037 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 }
11040
11041 /*------------------------------------------------------------------------
11042 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011043 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011044 ------------------------------------------------------------------------*/
11045 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11046 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11048 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11049 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011050
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011052 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011053 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011054 }
11055
11056
11057 wpalMutexRelease(&pWDICtx->wptMutex);
11058 /*-----------------------------------------------------------------------
11059 Get message buffer
11060 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011061 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11062 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 sizeof(halAddBASessionReq.addBASessionParams),
11064 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011065 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011066 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
11067 {
11068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011069 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011070 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
11071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011073 }
11074
11075 halAddBASessionReq.addBASessionParams.staIdx =
11076 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
11077 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
11078 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
11079 WDI_MAC_ADDR_LEN);
11080 halAddBASessionReq.addBASessionParams.baTID =
11081 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
11082 halAddBASessionReq.addBASessionParams.baPolicy =
11083 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
11084 halAddBASessionReq.addBASessionParams.baBufferSize =
11085 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
11086 halAddBASessionReq.addBASessionParams.baTimeout =
11087 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
11088 halAddBASessionReq.addBASessionParams.baSSN =
11089 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
11090 halAddBASessionReq.addBASessionParams.baDirection =
11091 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
11092
Jeff Johnsone7245742012-09-05 17:12:55 -070011093 wpalMemoryCopy( pSendBuffer+usDataOffset,
11094 &halAddBASessionReq.addBASessionParams,
11095 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011096
11097 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011099
11100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011101 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011102 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011103 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11104 wdiAddBASessionRspCb, pEventData->pUserData,
11105 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011106}/*WDI_ProcessAddBASessionReq*/
11107
11108/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011109 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011110 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011111
11112 @param pWDICtx: pointer to the WLAN DAL context
11113 pEventData: pointer to the event information structure
11114
Jeff Johnson295189b2012-06-20 16:38:30 -070011115 @see
11116 @return Result of the function call
11117*/
11118WDI_Status
11119WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011120(
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 WDI_ControlBlockType* pWDICtx,
11122 WDI_EventInfoType* pEventData
11123)
11124{
11125 WDI_DelBAReqParamsType* pwdiDelBAParams;
11126 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011129 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011130 wpt_uint16 usDataOffset = 0;
11131 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 wpt_macAddr macBSSID;
11134 tDelBAParams halDelBAparam;
11135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11136
11137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011138 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011139 -------------------------------------------------------------------------*/
11140 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11141 ( NULL == pEventData->pCBfnc ))
11142 {
11143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011144 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 }
11148
11149 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
11150 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
11151 /*-------------------------------------------------------------------------
11152 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 -------------------------------------------------------------------------*/
11155 wpalMutexAcquire(&pWDICtx->wptMutex);
11156
11157 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11161 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 &macBSSID))
11163 {
11164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011165 "This station does not exist in the WDI Station Table %d",
11166 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 }
11170
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011172
Jeff Johnsone7245742012-09-05 17:12:55 -070011173 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011174 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11176 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11177 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011178
11179 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011180 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011181 }
11182
11183 /*------------------------------------------------------------------------
11184 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011185 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011186 ------------------------------------------------------------------------*/
11187 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11188 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11190 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11191 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011192
Jeff Johnsone7245742012-09-05 17:12:55 -070011193 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011194 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011195 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011196 }
11197
11198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 sizeof(halDelBAparam),
11201 &pSendBuffer, &usDataOffset, &usSendSize))||
11202 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
11203 {
11204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011205 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 pEventData, pwdiDelBAParams, wdiDelBARspCb);
11207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011209 }
11210
11211 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
11212 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
11213 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
11214
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 wpalMemoryCopy( pSendBuffer+usDataOffset,
11216 &halDelBAparam,
11217 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011218
11219 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011220 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011221
11222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11226 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011227}/*WDI_ProcessDelBAReq*/
11228
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011229#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070011230
11231WDI_Status
11232WDI_ProcessTSMStatsReq
11233(
11234 WDI_ControlBlockType* pWDICtx,
11235 WDI_EventInfoType* pEventData
11236)
11237{
11238 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11239 WDI_TsmRspCb wdiTSMRspCb;
11240 wpt_uint8 ucCurrentBSSSesIdx = 0;
11241 WDI_BSSSessionType* pBSSSes = NULL;
11242 wpt_uint8* pSendBuffer = NULL;
11243 wpt_uint16 usDataOffset = 0;
11244 wpt_uint16 usSendSize = 0;
11245 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11246 tTsmStatsParams halTsmStatsReqParams = {0};
11247
11248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11249
11250 /*-------------------------------------------------------------------------
11251 Sanity check
11252 -------------------------------------------------------------------------*/
11253 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11254 ( NULL == pEventData->pCBfnc ))
11255 {
11256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011258 WDI_ASSERT(0);
11259 return WDI_STATUS_E_FAILURE;
11260 }
11261
11262 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11263 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11264 /*-------------------------------------------------------------------------
11265 Check to see if we are in the middle of an association, if so queue, if
11266 not it means it is free to process request
11267 -------------------------------------------------------------------------*/
11268 wpalMutexAcquire(&pWDICtx->wptMutex);
11269
11270 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11271 if ( NULL == pBSSSes )
11272 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11274 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11275 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011276
11277 wpalMutexRelease(&pWDICtx->wptMutex);
11278 return WDI_STATUS_E_NOT_ALLOWED;
11279 }
11280
11281 /*------------------------------------------------------------------------
11282 Check if this BSS is being currently processed or queued,
11283 if queued - queue the new request as well
11284 ------------------------------------------------------------------------*/
11285 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11286 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011288 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011289 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011290
11291 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11292 wpalMutexRelease(&pWDICtx->wptMutex);
11293 return wdiStatus;
11294 }
11295
11296 wpalMutexRelease(&pWDICtx->wptMutex);
11297 /*-----------------------------------------------------------------------
11298 Get message buffer
11299 ! TO DO : proper conversion into the HAL Message Request Format
11300 -----------------------------------------------------------------------*/
11301 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11302 sizeof(halTsmStatsReqParams),
11303 &pSendBuffer, &usDataOffset, &usSendSize))||
11304 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11305 {
11306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011307 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011308 pEventData, pwdiTSMParams, wdiTSMRspCb);
11309 WDI_ASSERT(0);
11310 return WDI_STATUS_E_FAILURE;
11311 }
11312
11313 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11314 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11315 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11316 WDI_MAC_ADDR_LEN);
11317 wpalMemoryCopy( pSendBuffer+usDataOffset,
11318 &halTsmStatsReqParams,
11319 sizeof(halTsmStatsReqParams));
11320
11321 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11322 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11323
11324 /*-------------------------------------------------------------------------
11325 Send TSM Stats Request to HAL
11326 -------------------------------------------------------------------------*/
11327 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11328 wdiTSMRspCb, pEventData->pUserData,
11329 WDI_TSM_STATS_RESP);
11330}/*WDI_ProcessTSMStatsReq*/
11331
11332#endif
11333
11334
11335/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011338
11339 @param pWDICtx: pointer to the WLAN DAL context
11340 pEventData: pointer to the event information structure
11341
Jeff Johnson295189b2012-06-20 16:38:30 -070011342 @see
11343 @return Result of the function call
11344*/
11345WDI_Status
11346WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011347(
Jeff Johnson295189b2012-06-20 16:38:30 -070011348 WDI_ControlBlockType* pWDICtx,
11349 WDI_EventInfoType* pEventData
11350)
11351{
11352 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11353 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011354 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011355 wpt_uint16 usDataOffset = 0;
11356 wpt_uint16 usSendSize = 0;
11357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11358
11359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 -------------------------------------------------------------------------*/
11362 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11363 ( NULL == pEventData->pCBfnc ))
11364 {
11365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 }
11370
11371 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11372 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11373 /*-----------------------------------------------------------------------
11374 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11379 &pSendBuffer, &usDataOffset, &usSendSize))||
11380 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11381 {
11382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011383 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011384 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 }
11388
Jeff Johnsone7245742012-09-05 17:12:55 -070011389 wpalMemoryCopy( pSendBuffer+usDataOffset,
11390 &pwdiFlushAcParams->wdiFlushAcInfo,
11391 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011392
11393 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011395
11396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11400 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011401}/*WDI_ProcessFlushAcReq*/
11402
11403/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011406
11407 @param pWDICtx: pointer to the WLAN DAL context
11408 pEventData: pointer to the event information structure
11409
Jeff Johnson295189b2012-06-20 16:38:30 -070011410 @see
11411 @return Result of the function call
11412*/
11413WDI_Status
11414WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011415(
Jeff Johnson295189b2012-06-20 16:38:30 -070011416 WDI_ControlBlockType* pWDICtx,
11417 WDI_EventInfoType* pEventData
11418)
11419{
11420 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11421 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011422 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011423 wpt_uint16 usDataOffset = 0;
11424 wpt_uint16 usSendSize = 0;
11425
11426 tBtAmpEventMsg haltBtAmpEventMsg;
11427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11428
11429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 -------------------------------------------------------------------------*/
11432 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11433 ( NULL == pEventData->pCBfnc ))
11434 {
11435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011439 }
11440
11441 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11442 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11443 /*-----------------------------------------------------------------------
11444 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011445 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011448 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11449 &pSendBuffer, &usDataOffset, &usSendSize))||
11450 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11451 {
11452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011453 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011454 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011457 }
11458
Jeff Johnsone7245742012-09-05 17:12:55 -070011459 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 wpalMemoryCopy( pSendBuffer+usDataOffset,
11462 &haltBtAmpEventMsg.btAmpEventParams,
11463 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011464
11465 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011467
11468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011469 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011470 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011471 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11472 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011473}/*WDI_ProcessBtAmpEventReq*/
11474
11475/**
11476 @brief Process Add STA self Request function (called when Main FSM
11477 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011478
11479 @param pWDICtx: pointer to the WLAN DAL context
11480 pEventData: pointer to the event information structure
11481
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 @see
11483 @return Result of the function call
11484*/
11485WDI_Status
11486WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011487(
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 WDI_ControlBlockType* pWDICtx,
11489 WDI_EventInfoType* pEventData
11490)
11491{
11492 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11493 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011495 wpt_uint16 usDataOffset = 0;
11496 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011497 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11499
11500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 -------------------------------------------------------------------------*/
11503 if (( NULL == pEventData ) ||
11504 ( NULL == pEventData->pEventData) ||
11505 ( NULL == pEventData->pCBfnc))
11506 {
11507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 }
11512
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011514 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11517 /*-----------------------------------------------------------------------
11518 Get message buffer
11519 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11521 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011522 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011523 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011524 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011525 {
11526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011527 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 }
11532
11533 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011534 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011535 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11536
Jeff Johnsone7245742012-09-05 17:12:55 -070011537 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011538 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11539 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11540 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11541 {
11542 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11543 }
11544 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11545 VOS_P2P_CLIENT_MODE) ||
11546 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11547 VOS_P2P_DEVICE))
11548 {
11549 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11550 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011552 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011553
11554 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011556
11557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011559 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011560 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11561 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11562 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011563}/*WDI_ProcessAddSTASelfReq*/
11564
11565
11566
11567/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011568 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011569 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011570
11571 @param pWDICtx: pointer to the WLAN DAL context
11572 pEventData: pointer to the event information structure
11573
Jeff Johnson295189b2012-06-20 16:38:30 -070011574 @see
11575 @return Result of the function call
11576*/
11577WDI_Status
11578WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011579(
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 WDI_ControlBlockType* pWDICtx,
11581 WDI_EventInfoType* pEventData
11582)
11583{
11584 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11585 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011586 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011587 wpt_uint16 usDataOffset = 0;
11588 wpt_uint16 usSendSize = 0;
11589 tDelStaSelfParams halSetDelSelfSTAParams;
11590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11591
11592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 -------------------------------------------------------------------------*/
11595 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11596 ( NULL == pEventData->pCBfnc ))
11597 {
11598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011602 }
11603
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11606 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11607
11608 /*-----------------------------------------------------------------------
11609 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011610 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11614 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11617 {
11618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011619 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011620 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011623 }
11624
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11627
Jeff Johnsone7245742012-09-05 17:12:55 -070011628 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11629 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011630
11631 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011633
11634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011635 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11638 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011639 WDI_DEL_STA_SELF_RESP);
11640
11641}
11642
Jeff Johnsone7245742012-09-05 17:12:55 -070011643#ifdef FEATURE_OEM_DATA_SUPPORT
11644/**
11645 @brief Process Start Oem Data Request function (called when Main
11646 FSM allows it)
11647
11648 @param pWDICtx: pointer to the WLAN DAL context
11649 pEventData: pointer to the event information structure
11650
11651 @see
11652 @return Result of the function call
11653*/
11654WDI_Status
11655WDI_ProcessStartOemDataReq
11656(
11657 WDI_ControlBlockType* pWDICtx,
11658 WDI_EventInfoType* pEventData
11659)
11660{
11661 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11662 WDI_oemDataRspCb wdiOemDataRspCb;
11663 wpt_uint8* pSendBuffer = NULL;
11664 wpt_uint16 usDataOffset = 0;
11665 wpt_uint16 usSendSize = 0;
11666 wpt_uint16 reqLen;
11667 tStartOemDataReqParams* halStartOemDataReqParams;
11668
11669 /*-------------------------------------------------------------------------
11670 Sanity check
11671 -------------------------------------------------------------------------*/
11672 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11673 ( NULL == pEventData->pCBfnc ))
11674 {
11675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011676 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 WDI_ASSERT(0);
11678 return WDI_STATUS_E_FAILURE;
11679 }
11680
11681 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11682 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11683
11684 /*-----------------------------------------------------------------------
11685 Get message buffer
11686 -----------------------------------------------------------------------*/
11687
11688 reqLen = sizeof(tStartOemDataReqParams);
11689
11690 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11691 WDI_START_OEM_DATA_REQ, reqLen,
11692 &pSendBuffer, &usDataOffset, &usSendSize))||
11693 (usSendSize < (usDataOffset + reqLen)))
11694 {
11695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011696 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11698 WDI_ASSERT(0);
11699 return WDI_STATUS_E_FAILURE;
11700 }
11701
11702 //copying WDI OEM DATA REQ PARAMS to shared memory
11703 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11704
11705 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11706 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11707
11708 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11709 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11710
11711 /*-------------------------------------------------------------------------
11712 Send Start Request to HAL
11713 -------------------------------------------------------------------------*/
11714 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11715 wdiOemDataRspCb, pEventData->pUserData,
11716 WDI_START_OEM_DATA_RESP);
11717}/*WDI_ProcessStartOemDataReq*/
11718#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011719
11720/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011721 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011722 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011723
11724 @param pWDICtx: pointer to the WLAN DAL context
11725 pEventData: pointer to the event information structure
11726
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 @see
11728 @return Result of the function call
11729*/
11730WDI_Status
11731WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011732(
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 WDI_ControlBlockType* pWDICtx,
11734 WDI_EventInfoType* pEventData
11735)
11736{
11737 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11738 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 wpt_uint16 usDataOffset = 0;
11741 wpt_uint16 usSendSize = 0;
11742 tHalWlanHostResumeReqParam halResumeReqParams;
11743
11744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11745
11746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011748 -------------------------------------------------------------------------*/
11749 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11750 ( NULL == pEventData->pCBfnc ))
11751 {
11752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011753 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011756 }
11757
11758 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11759 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11760
11761 /*-----------------------------------------------------------------------
11762 Get message buffer
11763 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011765 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11766 &pSendBuffer, &usDataOffset, &usSendSize))||
11767 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11768 {
11769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011770 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011771 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 }
11775
Jeff Johnsone7245742012-09-05 17:12:55 -070011776 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011777 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011778
11779 wpalMemoryCopy( pSendBuffer+usDataOffset,
11780 &halResumeReqParams,
11781 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011782
11783 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011784 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011785
11786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011787 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011788 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011789 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11790 wdiHostResumeRspCb, pEventData->pUserData,
11791 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011792}/*WDI_ProcessHostResumeReq*/
11793
11794/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011795 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011796 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011797
11798 @param pWDICtx: pointer to the WLAN DAL context
11799 pEventData: pointer to the event information structure
11800
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 @see
11802 @return Result of the function call
11803*/
11804WDI_Status
11805WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011806(
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 WDI_ControlBlockType* pWDICtx,
11808 WDI_EventInfoType* pEventData
11809)
11810{
11811 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11812 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 wpt_uint16 usDataOffset = 0;
11815 wpt_uint16 usSendSize = 0;
11816 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11818
11819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011821 -------------------------------------------------------------------------*/
11822 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11823 ( NULL == pEventData->pCBfnc ))
11824 {
11825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011826 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011829 }
11830
11831 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11832 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011833
Jeff Johnson295189b2012-06-20 16:38:30 -070011834 /*-----------------------------------------------------------------------
11835 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011836 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011837 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011838 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011839 sizeof(halTxPerTrackingReqParam),
11840 &pSendBuffer, &usDataOffset, &usSendSize))||
11841 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11842 {
11843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011844 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011845 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011849
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11851 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11852 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11853 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011854
11855 wpalMemoryCopy( pSendBuffer+usDataOffset,
11856 &halTxPerTrackingReqParam,
11857 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011858
11859 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011860 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011861
11862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011863 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011864 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011865 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11866 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011867}/*WDI_ProcessSetTxPerTrackingReq*/
11868
11869/*=========================================================================
11870 Indications
11871=========================================================================*/
11872
11873/**
11874 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011875
11876 @param pWDICtx: pointer to the WLAN DAL context
11877 pEventData: pointer to the event information structure
11878
Jeff Johnson295189b2012-06-20 16:38:30 -070011879 @see
11880 @return Result of the function call
11881*/
11882WDI_Status
11883WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011884(
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 WDI_ControlBlockType* pWDICtx,
11886 WDI_EventInfoType* pEventData
11887)
11888{
11889 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011890 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011891 wpt_uint16 usDataOffset = 0;
11892 wpt_uint16 usSendSize = 0;
11893 WDI_Status wdiStatus;
11894 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11896
11897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011899 -------------------------------------------------------------------------*/
11900 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11901 {
11902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011903 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011906 }
11907
11908 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11909
11910 /*-----------------------------------------------------------------------
11911 Get message buffer
11912 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11914 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 sizeof(halWlanSuspendIndparams),
11916 &pSendBuffer, &usDataOffset, &usSendSize))||
11917 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11918 {
11919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11920 "Unable to get send buffer in Suspend Ind ");
11921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011923 }
11924
11925 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11926 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11927
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011929 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011930
Jeff Johnsone7245742012-09-05 17:12:55 -070011931 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11932 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011933
11934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011935 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 -------------------------------------------------------------------------*/
11937 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011938 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011939
Jeff Johnsone7245742012-09-05 17:12:55 -070011940 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11942}/*WDI_ProcessHostSuspendInd*/
11943
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011944
11945
11946/**
11947 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11948
11949 @param pWDICtx: pointer to the WLAN DAL context
11950 pEventData: pointer to the event information structure
11951
11952 @see
11953 @return Result of the function call
11954*/
11955WDI_Status
11956WDI_ProcessTrafficStatsInd
11957(
11958 WDI_ControlBlockType* pWDICtx,
11959 WDI_EventInfoType* pEventData
11960)
11961{
11962 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11963 wpt_uint8* pSendBuffer = NULL;
11964 wpt_uint16 usDataOffset = 0;
11965 wpt_uint16 usSendSize = 0;
11966 WDI_Status wdiStatus;
11967 tStatsClassBIndParams* pStatsClassBIndParams;
11968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11969
11970 /*-------------------------------------------------------------------------
11971 Sanity check
11972 -------------------------------------------------------------------------*/
11973 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11974 {
11975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11976 "%s: Invalid parameters in Traffic Stats ind",__func__);
11977 WDI_ASSERT(0);
11978 return WDI_STATUS_E_FAILURE;
11979 }
11980
11981 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11982
11983 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11984 {
11985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11986 "%s: Invalid parameters in Traffic Stats ind",__func__);
11987 WDI_ASSERT(0);
11988 return WDI_STATUS_E_FAILURE;
11989 }
11990
11991 /*-----------------------------------------------------------------------
11992 Get message buffer
11993 -----------------------------------------------------------------------*/
11994 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11995 WDI_TRAFFIC_STATS_IND,
11996 sizeof(tStatsClassBIndParams),
11997 &pSendBuffer, &usDataOffset, &usSendSize))||
11998 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11999 {
12000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12001 "Unable to get send buffer in Traffic Stats Ind ");
12002 WDI_ASSERT(0);
12003 return WDI_STATUS_E_FAILURE;
12004 }
12005
12006 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
12007
12008 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
12009
12010 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
12011 pTrafficStatsIndParams->pTrafficStats,
12012 pTrafficStatsIndParams->length);
12013
12014 /*-------------------------------------------------------------------------
12015 Send Suspend Request to HAL
12016 -------------------------------------------------------------------------*/
12017 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
12018 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
12019
12020 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12021 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12022}/*WDI_ProcessTrafficStatsInd*/
12023
Chet Lanctot186b5732013-03-18 10:26:30 -070012024#ifdef WLAN_FEATURE_11W
12025/**
12026 @brief Process Exclude Unencrypted Indications function (called
12027 when Main FSM allows it)
12028
12029 @param pWDICtx: pointer to the WLAN DAL context
12030 pEventData: pointer to the event information structure
12031
12032 @see
12033 @return Result of the function call
12034*/
12035WDI_Status
12036WDI_ProcessExcludeUnencryptInd
12037(
12038 WDI_ControlBlockType* pWDICtx,
12039 WDI_EventInfoType* pEventData
12040)
12041{
12042 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
12043 wpt_uint8* pSendBuffer = NULL;
12044 wpt_uint16 usDataOffset = 0;
12045 wpt_uint16 usSendSize = 0;
12046 WDI_Status wdiStatus;
12047 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
12048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12049
12050 /*-------------------------------------------------------------------------
12051 Sanity check
12052 -------------------------------------------------------------------------*/
12053 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12054 {
12055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12056 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
12057 WDI_ASSERT(0);
12058 return WDI_STATUS_E_FAILURE;
12059 }
12060
12061 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
12062
12063 /*-----------------------------------------------------------------------
12064 Get message buffer
12065 -----------------------------------------------------------------------*/
12066 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12067 WDI_EXCLUDE_UNENCRYPTED_IND,
12068 sizeof(tHalWlanExcludeUnEncryptedIndParam),
12069 &pSendBuffer, &usDataOffset, &usSendSize))||
12070 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
12071 {
12072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12073 "Unable to get send buffer in Exclude Unencrypted Ind ");
12074 WDI_ASSERT(0);
12075 return WDI_STATUS_E_FAILURE;
12076 }
12077
12078 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
12079
12080 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
12081
12082 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
12083 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
12084
12085 /*-------------------------------------------------------------------------
12086 Send Suspend Request to HAL
12087 -------------------------------------------------------------------------*/
12088 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
12089 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
12090
12091 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12092 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12093}/*WDI_ProcessExcludeUnencryptInd*/
12094#endif
12095
Yue Mab9c86f42013-08-14 15:59:08 -070012096/**
12097 @brief Process Add Periodic Tx Pattern Indication function (called when
12098 Main FSM allows it)
12099
12100 @param pWDICtx: pointer to the WLAN DAL context
12101 pEventData: pointer to the event information structure
12102
12103 @see
12104 @return Result of the function call
12105*/
12106WDI_Status
12107WDI_ProcessAddPeriodicTxPtrnInd
12108(
12109 WDI_ControlBlockType* pWDICtx,
12110 WDI_EventInfoType* pEventData
12111)
12112{
12113 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
12114 wpt_uint8* pSendBuffer = NULL;
12115 wpt_uint16 usDataOffset = 0;
12116 wpt_uint16 usSendSize = 0;
12117 WDI_Status wdiStatus;
12118 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
12119 wpt_uint8 selfStaIdx = 0;
12120
12121 /*-------------------------------------------------------------------------
12122 Sanity check
12123 -------------------------------------------------------------------------*/
12124 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12125 {
12126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12127 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12128 WDI_ASSERT(0);
12129 return WDI_STATUS_E_FAILURE;
12130 }
12131
12132 pAddPeriodicTxPtrnParams =
12133 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12134
12135 /*------------------------------------------------------------------------
12136 Get message buffer
12137 ------------------------------------------------------------------------*/
12138 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12139 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12140 &pSendBuffer, &usDataOffset, &usSendSize))||
12141 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12142 {
12143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12144 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12145 __func__);
12146 WDI_ASSERT(0);
12147 return WDI_STATUS_E_FAILURE;
12148 }
12149
12150 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12151
12152 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12153 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12154 &selfStaIdx))
12155 {
12156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12157 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012158 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012159
12160 return WDI_STATUS_E_FAILURE;
12161 }
12162
12163 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12164 halAddPeriodicTxPtrn->ucPtrnId =
12165 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12166 halAddPeriodicTxPtrn->usPtrnSize =
12167 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12168 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12169 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12170
12171 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12172 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12173 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12174
12175 /*-------------------------------------------------------------------------
12176 Send Indication to HAL
12177 -------------------------------------------------------------------------*/
12178 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12179 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12180
12181 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12182
12183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12184 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12185
12186 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12187} /* WDI_ProcessAddPeriodicTxPtrnInd */
12188
12189/**
12190 @brief Process Delete Periodic Tx Pattern Indication function (called when
12191 Main FSM allows it)
12192
12193 @param pWDICtx: pointer to the WLAN DAL context
12194 pEventData: pointer to the event information structure
12195
12196 @see
12197 @return Result of the function call
12198*/
12199WDI_Status
12200WDI_ProcessDelPeriodicTxPtrnInd
12201(
12202 WDI_ControlBlockType* pWDICtx,
12203 WDI_EventInfoType* pEventData
12204)
12205{
12206 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12207 wpt_uint8* pSendBuffer = NULL;
12208 wpt_uint16 usDataOffset = 0;
12209 wpt_uint16 usSendSize = 0;
12210 WDI_Status wdiStatus;
12211 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12212 wpt_uint8 selfStaIdx = 0;
12213
12214 /*-------------------------------------------------------------------------
12215 Sanity check
12216 -------------------------------------------------------------------------*/
12217 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12218 {
12219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12220 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12221 WDI_ASSERT(0);
12222 return WDI_STATUS_E_FAILURE;
12223 }
12224
12225 pDelPeriodicTxPtrnParams =
12226 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12227
12228 /*------------------------------------------------------------------------
12229 Get message buffer
12230 ------------------------------------------------------------------------*/
12231 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12232 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12233 &pSendBuffer, &usDataOffset, &usSendSize))||
12234 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12235 {
12236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12237 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12238 __func__);
12239 WDI_ASSERT(0);
12240 return WDI_STATUS_E_FAILURE;
12241 }
12242
12243 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12244
12245 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12246 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12247 &selfStaIdx))
12248 {
12249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12250 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012251 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012252
12253 return WDI_STATUS_E_FAILURE;
12254 }
12255
12256 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12257 halDelPeriodicTxPtrn->uPatternIdBitmap =
12258 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12259
12260 /*-------------------------------------------------------------------------
12261 Send Indication to HAL
12262 -------------------------------------------------------------------------*/
12263 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12264 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12265
12266 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12267
12268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12269 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12270
12271 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12272} /* WDI_ProcessDelPeriodicTxPtrnInd */
12273
Jeff Johnson295189b2012-06-20 16:38:30 -070012274/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012276==========================================================================*/
12277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012280
12281 @param pWDICtx: pointer to the WLAN DAL context
12282 pEventData: pointer to the event information structure
12283
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 @see
12285 @return Result of the function call
12286*/
12287WDI_Status
12288WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012289(
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 WDI_ControlBlockType* pWDICtx,
12291 WDI_EventInfoType* pEventData
12292)
12293{
12294 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12295 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012296 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 wpt_uint16 usDataOffset = 0;
12298 wpt_uint16 usSendSize = 0;
12299 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12301
12302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 -------------------------------------------------------------------------*/
12305 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12306 ( NULL == pEventData->pCBfnc ))
12307 {
12308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 }
12313
12314 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12315 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12316 /*-----------------------------------------------------------------------
12317 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012318 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012319 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 sizeof(halSwitchChannelReq.switchChannelParams),
12322 &pSendBuffer, &usDataOffset, &usSendSize))||
12323 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12324 {
12325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012326 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 }
12331
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012334#ifndef WLAN_FEATURE_VOWIFI
12335 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12337#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12340
12341#ifdef WLAN_FEATURE_VOWIFI
12342 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12345 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12346 WDI_MAC_ADDR_LEN);
12347 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12348 pwdiSwitchChParams->wdiChInfo.macBSSId,
12349 WDI_MAC_ADDR_LEN);
12350#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012351 wpalMemoryCopy( pSendBuffer+usDataOffset,
12352 &halSwitchChannelReq.switchChannelParams,
12353 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012354
12355 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012356 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012357
12358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012359 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012361 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12362 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012363}/*WDI_ProcessChannelSwitchReq*/
12364
12365/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012366 @brief Process Channel Switch Request function (called when
12367 Main FSM allows it)
12368
12369 @param pWDICtx: pointer to the WLAN DAL context
12370 pEventData: pointer to the event information structure
12371
12372 @see
12373 @return Result of the function call
12374*/
12375WDI_Status WDI_ProcessChannelSwitchReq_V1
12376(
12377 WDI_ControlBlockType* pWDICtx,
12378 WDI_EventInfoType* pEventData
12379)
12380{
12381 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12382 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12383 wpt_uint8* pSendBuffer = NULL;
12384 wpt_uint16 usDataOffset = 0;
12385 wpt_uint16 usSendSize = 0;
12386 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12388
12389 /*-------------------------------------------------------------------------
12390 Sanity check
12391 -------------------------------------------------------------------------*/
12392 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12393 ( NULL == pEventData->pCBfnc ))
12394 {
12395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12396 "%s: Invalid parameters", __func__);
12397 WDI_ASSERT(0);
12398 return WDI_STATUS_E_FAILURE;
12399 }
12400
12401 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12402 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12403 /*-----------------------------------------------------------------------
12404 Get message buffer
12405 ! TO DO : proper conversion into the HAL Message Request Format
12406 -----------------------------------------------------------------------*/
12407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12408 WDI_CH_SWITCH_REQ_V1,
12409 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12410 &pSendBuffer, &usDataOffset, &usSendSize))||
12411 ( usSendSize < (usDataOffset +
12412 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12413 {
12414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12415 "Unable to get send buffer in channel switch req %p %p %p",
12416 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12417 WDI_ASSERT(0);
12418 return WDI_STATUS_E_FAILURE;
12419 }
12420
12421 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12422 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12423
12424 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12425 pwdiSwitchChParams->wdiChInfo.ucChannel;
12426#ifndef WLAN_FEATURE_VOWIFI
12427 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12428 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12429#endif
12430 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12431 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12432
12433#ifdef WLAN_FEATURE_VOWIFI
12434 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12435 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12436 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12437 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12438 WDI_MAC_ADDR_LEN);
12439 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12440 pwdiSwitchChParams->wdiChInfo.macBSSId,
12441 WDI_MAC_ADDR_LEN);
12442#endif
12443 wpalMemoryCopy( pSendBuffer+usDataOffset,
12444 &halSwitchChannelReq.switchChannelParams_V1,
12445 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12446
12447 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12448 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12449
12450 /*-------------------------------------------------------------------------
12451 Send Switch Channel Request to HAL
12452 -------------------------------------------------------------------------*/
12453 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12454 wdiSwitchChRspCb, pEventData->pUserData,
12455 WDI_CH_SWITCH_RESP_V1);
12456}/*WDI_ProcessChannelSwitchReq_V1*/
12457
12458/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012459 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012461
12462 @param pWDICtx: pointer to the WLAN DAL context
12463 pEventData: pointer to the event information structure
12464
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 @see
12466 @return Result of the function call
12467*/
12468WDI_Status
12469WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012470(
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 WDI_ControlBlockType* pWDICtx,
12472 WDI_EventInfoType* pEventData
12473)
12474{
12475 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12476 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012478 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 wpt_uint16 usDataOffset = 0;
12481 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012483
Jeff Johnsone7245742012-09-05 17:12:55 -070012484 tConfigStaReqMsg halConfigStaReqMsg;
12485 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12487
12488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012489 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 -------------------------------------------------------------------------*/
12491 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12492 ( NULL == pEventData->pCBfnc ))
12493 {
12494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012495 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 }
12499
Abhishek Singh6927fa02014-06-27 17:19:55 +053012500 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012501 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12502 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12503 /*-------------------------------------------------------------------------
12504 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 -------------------------------------------------------------------------*/
12507 wpalMutexAcquire(&pWDICtx->wptMutex);
12508
12509 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012512 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12513 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12514 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012515
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12519 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12520 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012521
12522 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 }
12525
12526 /*------------------------------------------------------------------------
12527 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012528 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012529 ------------------------------------------------------------------------*/
12530 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12531 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12533 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12534 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012535
Jeff Johnsone7245742012-09-05 17:12:55 -070012536 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012537 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 }
12540
12541 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012542
12543 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12544#ifdef WLAN_FEATURE_11AC
12545 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012546 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 else
12548#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012549 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012550
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 /*-----------------------------------------------------------------------
12552 Get message buffer
12553 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12555 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012556 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012557 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012558 {
12559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012560 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012564 }
12565
12566 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 &pwdiConfigSTAParams->wdiReqInfo);
12569
12570 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12571 {
12572 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012573 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 WDI_STATableFindStaidByAddr(pWDICtx,
12575 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 {
12578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012579 MAC_ADDRESS_STR
12580 ": This station does not exist in the WDI Station Table",
12581 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012582 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012583 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 }
12586 }
12587 else
12588 {
12589 /* Need to fill in the STA Index to invalid, since at this point we have not
12590 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012591 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012592 }
12593
12594 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012596
Jeff Johnsone7245742012-09-05 17:12:55 -070012597 wpalMemoryCopy( pSendBuffer+usDataOffset,
12598 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012599 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012600
12601 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012603
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12605 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 sizeof(pWDICtx->wdiCachedConfigStaReq));
12607
12608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12612 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012613}/*WDI_ProcessConfigStaReq*/
12614
12615
12616/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012619
12620 @param pWDICtx: pointer to the WLAN DAL context
12621 pEventData: pointer to the event information structure
12622
Jeff Johnson295189b2012-06-20 16:38:30 -070012623 @see
12624 @return Result of the function call
12625*/
12626WDI_Status
12627WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012628(
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 WDI_ControlBlockType* pWDICtx,
12630 WDI_EventInfoType* pEventData
12631)
12632{
12633 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12634 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012635 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 wpt_uint16 usDataOffset = 0;
12639 wpt_uint16 usSendSize = 0;
12640 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012641 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12643
12644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012646 -------------------------------------------------------------------------*/
12647 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12648 ( NULL == pEventData->pCBfnc ))
12649 {
12650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 }
12655
12656 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12657 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12658 /*-------------------------------------------------------------------------
12659 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012660 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012661 -------------------------------------------------------------------------*/
12662 wpalMutexAcquire(&pWDICtx->wptMutex);
12663
12664 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012665 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012666 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12668 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12669 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012670
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012674 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12675 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 }
12677 else
12678 {
12679 /*------------------------------------------------------------------------
12680 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012681 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012682 ------------------------------------------------------------------------*/
12683 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12684 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12686 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12687 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12688
12689 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012690 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012691 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012692 }
12693 }
12694 /* If the link is set to enter IDLE - the Session allocated for this BSS
12695 will be deleted on the Set Link State response coming from HAL
12696 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012697 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012698 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12699
12700 wpalMutexRelease(&pWDICtx->wptMutex);
12701 /*-----------------------------------------------------------------------
12702 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012705
12706 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 sizeof(halLinkStateReqMsg),
12708 &pSendBuffer, &usDataOffset, &usSendSize))||
12709 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12710 {
12711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012712 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012713 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012716 }
12717
12718 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12719 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12720
12721 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12722 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12723
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12726
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 wpalMemoryCopy( pSendBuffer+usDataOffset,
12728 &halLinkStateReqMsg,
12729 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012730
12731 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012732 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012733
12734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012737 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12738 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012739}/*WDI_ProcessSetLinkStateReq*/
12740
12741
12742/**
12743 @brief Process Get Stats Request function (called when Main FSM
12744 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012745
12746 @param pWDICtx: pointer to the WLAN DAL context
12747 pEventData: pointer to the event information structure
12748
Jeff Johnson295189b2012-06-20 16:38:30 -070012749 @see
12750 @return Result of the function call
12751*/
12752WDI_Status
12753WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012754(
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 WDI_ControlBlockType* pWDICtx,
12756 WDI_EventInfoType* pEventData
12757)
12758{
12759 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12760 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012761 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012762 wpt_uint16 usDataOffset = 0;
12763 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012764 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012765 WDI_BSSSessionType* pBSSSes = NULL;
12766 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 tHalStatsReqMsg halStatsReqMsg;
12769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12770
12771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 -------------------------------------------------------------------------*/
12774 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12775 ( NULL == pEventData->pCBfnc ) )
12776 {
12777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012781 }
12782
12783 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12784 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12785
12786 /*-------------------------------------------------------------------------
12787 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012789 -------------------------------------------------------------------------*/
12790 wpalMutexAcquire(&pWDICtx->wptMutex);
12791
12792 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012793 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12796 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012797 &macBSSID))
12798 {
12799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012800 "This station does not exist in the WDI Station Table %d",
12801 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012802 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 }
12805
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12807 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012808 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12810 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12811 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012812
12813 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012815 }
12816
12817 /*------------------------------------------------------------------------
12818 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012819 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012820 ------------------------------------------------------------------------*/
12821 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12822 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12824 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12825 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012826
Jeff Johnsone7245742012-09-05 17:12:55 -070012827 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012828 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012830 }
12831
12832
12833 wpalMutexRelease(&pWDICtx->wptMutex);
12834
12835 /*-----------------------------------------------------------------------
12836 Get message buffer
12837 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012838 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 sizeof(halStatsReqMsg.statsReqParams),
12840 &pSendBuffer, &usDataOffset, &usSendSize))||
12841 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12842 {
12843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012844 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012845 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 }
12849
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012852 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 wpalMemoryCopy( pSendBuffer+usDataOffset,
12855 &halStatsReqMsg.statsReqParams,
12856 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012857
12858 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012859 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012860
12861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12865 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012866}/*WDI_ProcessGetStatsReq*/
12867
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012868#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012869/**
12870 @brief Process Get Roam Rssi Request function (called when Main FSM
12871 allows it)
12872
12873 @param pWDICtx: pointer to the WLAN DAL context
12874 pEventData: pointer to the event information structure
12875
12876 @see
12877 @return Result of the function call
12878*/
12879WDI_Status
12880WDI_ProcessGetRoamRssiReq
12881(
12882 WDI_ControlBlockType* pWDICtx,
12883 WDI_EventInfoType* pEventData
12884)
12885{
12886 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12887 WDI_GetStatsRspCb wdiGetStatsRspCb;
12888 wpt_uint8* pSendBuffer = NULL;
12889 wpt_uint16 usDataOffset = 0;
12890 wpt_uint16 usSendSize = 0;
12891 wpt_uint8 ucCurrentBSSSesIdx = 0;
12892 WDI_BSSSessionType* pBSSSes = NULL;
12893 wpt_macAddr macBSSID;
12894 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12895 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12897 /*-------------------------------------------------------------------------
12898 Sanity check
12899 -------------------------------------------------------------------------*/
12900 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12901 ( NULL == pEventData->pCBfnc ) )
12902 {
12903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12904 "%s: Invalid parameters", __func__);
12905 WDI_ASSERT(0);
12906 return WDI_STATUS_E_FAILURE;
12907 }
12908
12909 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12910 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12911
12912 /*-------------------------------------------------------------------------
12913 Check to see if we are in the middle of an association, if so queue, if
12914 not it means it is free to process request
12915 -------------------------------------------------------------------------*/
12916 wpalMutexAcquire(&pWDICtx->wptMutex);
12917
12918 /*------------------------------------------------------------------------
12919 Find the BSS for which the request is made
12920 ------------------------------------------------------------------------*/
12921 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12922 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12923 &macBSSID))
12924 {
12925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012926 "This station does not exist in the WDI Station Table %d",
12927 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012928 wpalMutexRelease(&pWDICtx->wptMutex);
12929 return WDI_STATUS_E_FAILURE;
12930 }
12931
12932 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12933 if ( NULL == pBSSSes )
12934 {
12935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12936 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12937 __func__, MAC_ADDR_ARRAY(macBSSID));
12938
12939 wpalMutexRelease(&pWDICtx->wptMutex);
12940 return WDI_STATUS_E_NOT_ALLOWED;
12941 }
12942
12943 /*------------------------------------------------------------------------
12944 Check if this BSS is being currently processed or queued,
12945 if queued - queue the new request as well
12946 ------------------------------------------------------------------------*/
12947 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12948 {
12949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12950 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12951 __func__, MAC_ADDR_ARRAY(macBSSID));
12952
12953 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12954 wpalMutexRelease(&pWDICtx->wptMutex);
12955 return wdiStatus;
12956 }
12957
12958 wpalMutexRelease(&pWDICtx->wptMutex);
12959
12960 /*-----------------------------------------------------------------------
12961 Get message buffer
12962 -----------------------------------------------------------------------*/
12963 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12964 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12965 &pSendBuffer, &usDataOffset, &usSendSize))||
12966 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12967 {
12968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012969 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012970 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12971 WDI_ASSERT(0);
12972 return WDI_STATUS_E_FAILURE;
12973 }
12974
12975 halRssiRoamReqMsg.roamRssiReqParams.staId =
12976 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12977 wpalMemoryCopy( pSendBuffer+usDataOffset,
12978 &halRssiRoamReqMsg.roamRssiReqParams,
12979 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12980
12981 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12982 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12983
12984 /*-------------------------------------------------------------------------
12985 Send Get STA Request to HAL
12986 -------------------------------------------------------------------------*/
12987 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12988 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12989}/*WDI_ProcessGetRoamRssiReq*/
12990#endif
12991
Jeff Johnson295189b2012-06-20 16:38:30 -070012992/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012995
12996 @param pWDICtx: pointer to the WLAN DAL context
12997 pEventData: pointer to the event information structure
12998
Jeff Johnson295189b2012-06-20 16:38:30 -070012999 @see
13000 @return Result of the function call
13001*/
13002WDI_Status
13003WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013004(
Jeff Johnson295189b2012-06-20 16:38:30 -070013005 WDI_ControlBlockType* pWDICtx,
13006 WDI_EventInfoType* pEventData
13007)
13008{
13009 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13010 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13011
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 wpt_uint16 usDataOffset = 0;
13014 wpt_uint16 usSendSize = 0;
13015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13016
13017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 -------------------------------------------------------------------------*/
13020 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13021 ( NULL == pEventData->pCBfnc))
13022 {
13023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 }
13028
13029 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13030 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13031
13032 /*-----------------------------------------------------------------------
13033 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013034 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 -----------------------------------------------------------------------*/
13036
Jeff Johnsone7245742012-09-05 17:12:55 -070013037 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13039 &pSendBuffer, &usDataOffset, &usSendSize))||
13040 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13041 {
13042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013043 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 }
13048
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 wpalMemoryCopy( pSendBuffer+usDataOffset,
13050 &pwdiUpdateCfgParams->uConfigBufferLen,
13051 sizeof(wpt_uint32));
13052 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13053 pwdiUpdateCfgParams->pConfigBuffer,
13054 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013055
13056 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013058
13059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 -------------------------------------------------------------------------*/
13062
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13064 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013065
13066}/*WDI_ProcessUpdateCfgReq*/
13067
13068
13069/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013072
13073 @param pWDICtx: pointer to the WLAN DAL context
13074 pEventData: pointer to the event information structure
13075
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 @see
13077 @return Result of the function call
13078*/
13079WDI_Status
13080WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013081(
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 WDI_ControlBlockType* pWDICtx,
13083 WDI_EventInfoType* pEventData
13084)
13085{
13086 WDI_AddBAReqParamsType* pwdiAddBAParams;
13087 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013088 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013089 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 wpt_uint16 usDataOffset = 0;
13092 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013094 wpt_macAddr macBSSID;
13095
13096 tAddBAReqMsg halAddBAReq;
13097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13098
13099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013101 -------------------------------------------------------------------------*/
13102 if (( NULL == pEventData ) ||
13103 ( NULL == pEventData->pEventData) ||
13104 ( NULL == pEventData->pCBfnc ))
13105 {
13106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 }
13111
13112 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13113 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13114
13115 /*-------------------------------------------------------------------------
13116 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013117 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013118 -------------------------------------------------------------------------*/
13119 wpalMutexAcquire(&pWDICtx->wptMutex);
13120
13121 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013122 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013123 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013124 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13125 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013126 &macBSSID))
13127 {
13128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013129 "This station does not exist in the WDI Station Table %d",
13130 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 }
13134
Jeff Johnsone7245742012-09-05 17:12:55 -070013135 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13136 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013137 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13139 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13140 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013141
13142 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 }
13145
13146 /*------------------------------------------------------------------------
13147 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 ------------------------------------------------------------------------*/
13150 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13151 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13153 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13154 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013155
Jeff Johnsone7245742012-09-05 17:12:55 -070013156 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 }
13160
13161
13162 wpalMutexRelease(&pWDICtx->wptMutex);
13163 /*-----------------------------------------------------------------------
13164 Get message buffer
13165 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013166 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 sizeof(halAddBAReq.addBAParams),
13168 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013169 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013170 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13171 {
13172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013173 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013177 }
13178
Jeff Johnsone7245742012-09-05 17:12:55 -070013179 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13181 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13182#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13185#endif
13186
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 wpalMemoryCopy( pSendBuffer+usDataOffset,
13188 &halAddBAReq.addBAParams,
13189 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013190
13191 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013193
13194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13198 wdiAddBARspCb, pEventData->pUserData,
13199 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013200}/*WDI_ProcessAddBAReq*/
13201
13202
13203
13204/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013207
13208 @param pWDICtx: pointer to the WLAN DAL context
13209 pEventData: pointer to the event information structure
13210
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 @see
13212 @return Result of the function call
13213*/
13214WDI_Status
13215WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013216(
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 WDI_ControlBlockType* pWDICtx,
13218 WDI_EventInfoType* pEventData
13219)
13220{
13221 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13222 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013223 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013224 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013225 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013226 wpt_uint16 usDataOffset = 0;
13227 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 wpt_uint16 index;
13230 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013231
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 tTriggerBAReqMsg halTriggerBAReq;
13233 tTriggerBaReqCandidate* halTriggerBACandidate;
13234 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13236
13237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 -------------------------------------------------------------------------*/
13240 if (( NULL == pEventData ) ||
13241 ( NULL == pEventData->pEventData ) ||
13242 ( NULL == pEventData->pCBfnc ))
13243 {
13244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 }
13249
13250 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13251 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13252 /*-------------------------------------------------------------------------
13253 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013254 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013255 -------------------------------------------------------------------------*/
13256 wpalMutexAcquire(&pWDICtx->wptMutex);
13257
13258 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013259 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013261 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13262 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 &macBSSID))
13264 {
13265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013266 "This station does not exist in the WDI Station Table %d",
13267 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 }
13271
Jeff Johnsone7245742012-09-05 17:12:55 -070013272 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13273 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13276 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13277 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013278
13279 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 }
13282
13283 /*------------------------------------------------------------------------
13284 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 ------------------------------------------------------------------------*/
13287 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13288 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13290 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13291 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013292
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 }
13297
13298
13299 wpalMutexRelease(&pWDICtx->wptMutex);
13300 /*-----------------------------------------------------------------------
13301 Get message buffer
13302 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013303 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13304 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013306 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13308 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013312 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13313 {
13314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013315 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013319 }
13320
Jeff Johnsone7245742012-09-05 17:12:55 -070013321 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013322 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13325
Jeff Johnsone7245742012-09-05 17:12:55 -070013326 wpalMemoryCopy( pSendBuffer+usDataOffset,
13327 &halTriggerBAReq.triggerBAParams,
13328 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013329
Jeff Johnsone7245742012-09-05 17:12:55 -070013330 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013331 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13332 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13333 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013334
13335 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013336 index++)
13337 {
13338 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13339 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13340 halTriggerBACandidate++;
13341 wdiTriggerBACandidate++;
13342 }
13343
13344 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013346
13347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13351 wdiTriggerBARspCb, pEventData->pUserData,
13352 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013353}/*WDI_ProcessTriggerBAReq*/
13354
13355
13356
13357/**
13358 @brief Process Update Beacon Params Request function (called when Main FSM
13359 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013360
13361 @param pWDICtx: pointer to the WLAN DAL context
13362 pEventData: pointer to the event information structure
13363
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 @see
13365 @return Result of the function call
13366*/
13367WDI_Status
13368WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013369(
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 WDI_ControlBlockType* pWDICtx,
13371 WDI_EventInfoType* pEventData
13372)
13373{
13374 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13375 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 wpt_uint16 usDataOffset = 0;
13378 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013379 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13381
13382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 -------------------------------------------------------------------------*/
13385 if (( NULL == pEventData ) ||
13386 ( NULL == pEventData->pEventData) ||
13387 ( NULL == pEventData->pCBfnc))
13388 {
13389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 }
13394
13395 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13396 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13397 /*-----------------------------------------------------------------------
13398 Get message buffer
13399 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013400 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013401 sizeof(halUpdateBeaconParams),
13402 &pSendBuffer, &usDataOffset, &usSendSize))||
13403 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13404 {
13405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013406 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 }
13411
13412 /*BSS Index of the BSS*/
13413 halUpdateBeaconParams.bssIdx =
13414 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13415 /*shortPreamble mode. HAL should update all the STA rates when it
13416 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013417 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013418 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13419 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013420 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13422 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013424 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13425
13426 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013427 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13439 halUpdateBeaconParams.fRIFSMode =
13440 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13443
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13445 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013446
13447 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013449
13450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13454 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013455}/*WDI_ProcessUpdateBeaconParamsReq*/
13456
13457
13458
13459/**
13460 @brief Process Send Beacon template Request function (called when Main FSM
13461 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013462
13463 @param pWDICtx: pointer to the WLAN DAL context
13464 pEventData: pointer to the event information structure
13465
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 @see
13467 @return Result of the function call
13468*/
13469WDI_Status
13470WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013471(
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 WDI_ControlBlockType* pWDICtx,
13473 WDI_EventInfoType* pEventData
13474)
13475{
13476 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13477 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 wpt_uint16 usDataOffset = 0;
13480 wpt_uint16 usSendSize = 0;
13481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13482
13483 tSendBeaconReqMsg halSendBeaconReq;
13484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 -------------------------------------------------------------------------*/
13487 if (( NULL == pEventData ) ||
13488 ( NULL == pEventData->pEventData ) ||
13489 ( NULL == pEventData->pCBfnc ))
13490 {
13491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 }
13496
13497 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13498 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13499 /*-----------------------------------------------------------------------
13500 Get message buffer
13501 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013502 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 sizeof(halSendBeaconReq.sendBeaconParam),
13504 &pSendBuffer, &usDataOffset, &usSendSize))||
13505 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13506 {
13507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013508 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13510 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 }
13513
13514 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13515 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13516 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13519 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13520 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13521 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013524 /* usP2PIeOffset should be atleast greater than timIeOffset */
13525 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13526 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13527 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13528 {
13529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13530 "Invalid usP2PIeOffset %hu",
13531 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13532 WDI_ASSERT(0);
13533 return WDI_STATUS_E_FAILURE;
13534 }
13535
Jeff Johnsone7245742012-09-05 17:12:55 -070013536 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013538
Jeff Johnsone7245742012-09-05 17:12:55 -070013539 wpalMemoryCopy( pSendBuffer+usDataOffset,
13540 &halSendBeaconReq.sendBeaconParam,
13541 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013542
13543 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013544 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013545
13546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013547 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013548 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13550 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013551}/*WDI_ProcessSendBeaconParamsReq*/
13552
13553/**
13554 @brief Process Update Beacon Params Request function (called when Main FSM
13555 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013556
13557 @param pWDICtx: pointer to the WLAN DAL context
13558 pEventData: pointer to the event information structure
13559
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 @see
13561 @return Result of the function call
13562*/
13563WDI_Status
13564WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013565(
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 WDI_ControlBlockType* pWDICtx,
13567 WDI_EventInfoType* pEventData
13568)
13569{
13570 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13571 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 wpt_uint16 usDataOffset = 0;
13574 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13577
13578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 -------------------------------------------------------------------------*/
13581 if (( NULL == pEventData ) ||
13582 ( NULL == pEventData->pEventData) ||
13583 ( NULL == pEventData->pCBfnc))
13584 {
13585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013589 }
13590
Jeff Johnsone7245742012-09-05 17:12:55 -070013591 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013593 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013594 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13595 /*-----------------------------------------------------------------------
13596 Get message buffer
13597 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 sizeof(halUpdateProbeRspTmplParams),
13600 &pSendBuffer, &usDataOffset, &usSendSize))||
13601 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13602 {
13603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013604 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 }
13609
13610 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013611 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 WDI_MAC_ADDR_LEN);
13613
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13616
13617 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13618 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013620
13621
13622 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13623 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13624 WDI_PROBE_REQ_BITMAP_IE_LEN);
13625
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 wpalMemoryCopy( pSendBuffer+usDataOffset,
13627 &halUpdateProbeRspTmplParams,
13628 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013629
13630 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013631 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013632
13633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013634 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013636 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13637 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13638 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013639}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13640
13641/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013644
13645 @param pWDICtx: pointer to the WLAN DAL context
13646 pEventData: pointer to the event information structure
13647
Jeff Johnson295189b2012-06-20 16:38:30 -070013648 @see
13649 @return Result of the function call
13650*/
13651WDI_Status
13652WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013653(
Jeff Johnson295189b2012-06-20 16:38:30 -070013654 WDI_ControlBlockType* pWDICtx,
13655 WDI_EventInfoType* pEventData
13656)
13657{
13658
13659 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13660 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13661
13662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013663 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013664 -------------------------------------------------------------------------*/
13665 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013666 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013669 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13670 {
13671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013675 }
13676
13677 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013678 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013679 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13680
13681 /*cache the wdi nv request message here if the the first fragment
13682 * To issue the request to HAL for the next fragment */
13683 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13684 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13686 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13688
13689 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13690 pWDICtx->pRspCBUserData = pEventData->pUserData;
13691 }
13692
13693 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13694}
13695
13696/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013697 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013698 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013699
13700 @param pWDICtx: pointer to the WLAN DAL context
13701 pEventData: pointer to the event information structure
13702
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 @see
13704 @return Result of the function call
13705*/
13706WDI_Status WDI_ProcessSetMaxTxPowerReq
13707(
13708 WDI_ControlBlockType* pWDICtx,
13709 WDI_EventInfoType* pEventData
13710)
13711{
13712 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13713 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 wpt_uint16 usDataOffset = 0;
13716 wpt_uint16 usSendSize = 0;
13717 tSetMaxTxPwrReq halSetMaxTxPower;
13718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13719
13720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 -------------------------------------------------------------------------*/
13723 if (( NULL == pEventData ) ||
13724 ( NULL == pEventData->pEventData ) ||
13725 ( NULL == pEventData->pCBfnc ))
13726 {
13727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013732 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013734 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13736
13737 /*-----------------------------------------------------------------------
13738 Get message buffer
13739 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013740if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13742 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013743 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013744)))
13745 {
13746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013747 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 }
13752
13753 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13754 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13755 WDI_MAC_ADDR_LEN);
13756
13757 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13758 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13759 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013762
13763 wpalMemoryCopy( pSendBuffer+usDataOffset,
13764 &halSetMaxTxPower.setMaxTxPwrParams,
13765 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013766
13767 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013769
13770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013773 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13774 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13775 WDI_SET_MAX_TX_POWER_RESP);
13776
Jeff Johnson295189b2012-06-20 16:38:30 -070013777}
13778
Arif Hussaina5ebce02013-08-09 15:09:58 -070013779/*
13780 @brief Process Set Max Tx Power Per Band Request function (called when Main
13781 FSM allows it)
13782
13783 @param pWDICtx: pointer to the WLAN DAL context
13784 pEventData: pointer to the event information structure
13785
13786 @see
13787 @return Result of the function call
13788*/
13789WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13790(
13791 WDI_ControlBlockType* pWDICtx,
13792 WDI_EventInfoType* pEventData
13793)
13794{
13795 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13796 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13797 wpt_uint8* pSendBuffer = NULL;
13798 wpt_uint16 usDataOffset = 0;
13799 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013800 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013801 WDI_Status rValue = WDI_STATUS_SUCCESS;
13802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13803
13804 /*-------------------------------------------------------------------------
13805 Sanity check
13806 -------------------------------------------------------------------------*/
13807 if (( NULL == pEventData ) ||
13808 ( NULL == pEventData->pEventData ) ||
13809 ( NULL == pEventData->pCBfnc ))
13810 {
13811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13812 "%s: Invalid parameters", __func__);
13813 WDI_ASSERT(0);
13814 return WDI_STATUS_E_FAILURE;
13815 }
13816 pwdiSetMaxTxPowerPerBandParams = \
13817 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13818
13819 wdiSetMaxTxPowerPerBandRspCb = \
13820 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13821
13822 /*-----------------------------------------------------------------------
13823 Get message buffer
13824 -----------------------------------------------------------------------*/
13825
13826 rValue = WDI_GetMessageBuffer(pWDICtx,
13827 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13828 sizeof(tSetMaxTxPwrPerBandParams),
13829 &pSendBuffer, &usDataOffset, &usSendSize);
13830
13831 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13832 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13833 {
13834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13835 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13836 pEventData, pwdiSetMaxTxPowerPerBandParams,
13837 wdiSetMaxTxPowerPerBandRspCb);
13838 WDI_ASSERT(0);
13839 return WDI_STATUS_E_FAILURE;
13840 }
13841
13842
Arif Hussainf8f080c2014-04-03 09:48:36 -070013843 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13844 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013845 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13846
Arif Hussainf8f080c2014-04-03 09:48:36 -070013847 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013848 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13849
13850 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13851 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13852
13853 /*-------------------------------------------------------------------------
13854 Send Set Max Tx Power Per Band Request to HAL
13855 -------------------------------------------------------------------------*/
13856 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13857 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13858 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13859}
13860
schang86c22c42013-03-13 18:41:24 -070013861/**
13862 @brief Process Set Tx Power Request function (called when Main
13863 FSM allows it)
13864
13865 @param pWDICtx: pointer to the WLAN DAL context
13866 pEventData: pointer to the event information structure
13867
13868 @see
13869 @return Result of the function call
13870*/
13871WDI_Status WDI_ProcessSetTxPowerReq
13872(
13873 WDI_ControlBlockType* pWDICtx,
13874 WDI_EventInfoType* pEventData
13875)
13876{
13877 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13878 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13879 wpt_uint8* pSendBuffer = NULL;
13880 wpt_uint16 usDataOffset = 0;
13881 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013882 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13884
13885 /*-------------------------------------------------------------------------
13886 Sanity check
13887 -------------------------------------------------------------------------*/
13888 if (( NULL == pEventData ) ||
13889 ( NULL == pEventData->pEventData ) ||
13890 ( NULL == pEventData->pCBfnc ))
13891 {
13892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13893 "%s: Invalid parameters", __func__);
13894 WDI_ASSERT(0);
13895 return WDI_STATUS_E_FAILURE;
13896 }
13897
13898 pwdiSetTxPowerParams =
13899 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13900 wdiSetTxPowerRspCb =
13901 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13902
13903 /*-----------------------------------------------------------------------
13904 Get message buffer
13905 -----------------------------------------------------------------------*/
13906 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13907 sizeof(tSetTxPwrReqParams),
13908 &pSendBuffer, &usDataOffset, &usSendSize))||
13909 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13910 )))
13911 {
13912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013913 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013914 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13915 WDI_ASSERT(0);
13916 return WDI_STATUS_E_FAILURE;
13917 }
13918
Leo Chang9a43db92013-03-25 17:39:58 -070013919 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13920 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13921 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013922
13923 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13924 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13925
13926 /*-------------------------------------------------------------------------
13927 Send Set Tx Power Request to HAL
13928 -------------------------------------------------------------------------*/
13929 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13930 wdiSetTxPowerRspCb, pEventData->pUserData,
13931 WDI_SET_TX_POWER_RESP);
13932}
Jeff Johnson295189b2012-06-20 16:38:30 -070013933
13934/**
13935 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13936 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013937
13938 @param pWDICtx: pointer to the WLAN DAL context
13939 pEventData: pointer to the event information structure
13940
Jeff Johnson295189b2012-06-20 16:38:30 -070013941 @see
13942 @return Result of the function call
13943*/
13944WDI_Status
13945WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013946(
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 WDI_ControlBlockType* pWDICtx,
13948 WDI_EventInfoType* pEventData
13949)
13950{
13951 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13952 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 wpt_uint16 usDataOffset = 0;
13955 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013956 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13958
13959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 -------------------------------------------------------------------------*/
13962 if (( NULL == pEventData ) ||
13963 ( NULL == pEventData->pEventData) ||
13964 ( NULL == pEventData->pCBfnc))
13965 {
13966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013967 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 }
13971
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13976 /*-----------------------------------------------------------------------
13977 Get message buffer
13978 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13980 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 sizeof(halSetP2PGONOAParams),
13982 &pSendBuffer, &usDataOffset, &usSendSize))||
13983 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13984 {
13985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013986 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 }
13991
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13996 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013997 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
14005
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 wpalMemoryCopy( pSendBuffer+usDataOffset,
14007 &halSetP2PGONOAParams,
14008 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014009
14010 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014012
14013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014016 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14017 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14018 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014019}/*WDI_ProcessP2PGONOAReq*/
14020
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014021#ifdef FEATURE_WLAN_TDLS
14022
14023/**
14024 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14025 allows it)
14026
14027 @param pWDICtx: pointer to the WLAN DAL context
14028 pEventData: pointer to the event information structure
14029
14030 @see
14031 @return Result of the function call
14032*/
14033WDI_Status
14034WDI_ProcessTdlsLinkEstablishReq
14035(
14036 WDI_ControlBlockType* pWDICtx,
14037 WDI_EventInfoType* pEventData
14038)
14039{
14040 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14041 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14042 wpt_uint8* pSendBuffer = NULL;
14043 wpt_uint16 usDataOffset = 0;
14044 wpt_uint16 usSendSize = 0;
14045
14046 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14048
14049 /*-------------------------------------------------------------------------
14050 Sanity check
14051 -------------------------------------------------------------------------*/
14052 if (( NULL == pEventData ) ||
14053 ( NULL == pEventData->pEventData) ||
14054 ( NULL == pEventData->pCBfnc))
14055 {
14056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14057 "%s: Invalid parameters", __func__);
14058 WDI_ASSERT(0);
14059 return WDI_STATUS_E_FAILURE;
14060 }
14061 pwdiTDLSLinkEstablishReqParams =
14062 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14063 wdiTDLSLinkEstablishReqRspCb =
14064 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14065
14066
14067 /*-----------------------------------------------------------------------
14068 Get message buffer
14069 -----------------------------------------------------------------------*/
14070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14071 WDI_TDLS_LINK_ESTABLISH_REQ,
14072 sizeof(halSetTDLSLinkEstablishParams),
14073 &pSendBuffer, &usDataOffset, &usSendSize))||
14074 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14075 {
14076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014077 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014078 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14079 WDI_ASSERT(0);
14080 return WDI_STATUS_E_FAILURE;
14081 }
14082
14083 halSetTDLSLinkEstablishParams.staIdx =
14084 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14085 halSetTDLSLinkEstablishParams.bIsResponder =
14086 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14087 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14088 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14089 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14090 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14091 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14092 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14093 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14094 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14095 halSetTDLSLinkEstablishParams.aAck = 0;
14096 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14097 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14098 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014099 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14100 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14101
14102 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14103 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14104 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14105 halSetTDLSLinkEstablishParams.validChannelsLen =
14106 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14107
14108 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14109 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14110 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14111 halSetTDLSLinkEstablishParams.validOperClassesLen =
14112 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014113
14114 wpalMemoryCopy( pSendBuffer+usDataOffset,
14115 &halSetTDLSLinkEstablishParams,
14116 sizeof(halSetTDLSLinkEstablishParams));
14117
14118 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14119 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14120
14121 /*-------------------------------------------------------------------------
14122 Send Update Probe Resp Template Request to HAL
14123 -------------------------------------------------------------------------*/
14124 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14125 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14126 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14127 return 0;
14128}/*WDI_ProcessTdlsLinkEstablishReq*/
14129
14130
Atul Mittalc0f739f2014-07-31 13:47:47 +053014131/**
14132 @brief sends the channel switch command to f/w (called when Main FSM
14133 allows it)
14134
14135 @param pWDICtx: pointer to the WLAN DAL context
14136 pEventData: pointer to the event information structure
14137
14138 @see
14139 @return Result of the function call
14140*/
14141WDI_Status
14142WDI_ProcessTdlsChanSwitchReq
14143(
14144 WDI_ControlBlockType* pWDICtx,
14145 WDI_EventInfoType* pEventData
14146)
14147{
14148 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14149 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14150 wpt_uint8* pSendBuffer = NULL;
14151 wpt_uint16 usDataOffset = 0;
14152 wpt_uint16 usSendSize = 0;
14153 //WDI_Status wdiStatus;
14154 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14156
14157 /*-------------------------------------------------------------------------
14158 Sanity check
14159 -------------------------------------------------------------------------*/
14160 if (( NULL == pEventData ) ||
14161 ( NULL == pEventData->pEventData))
14162 {
14163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14164 "%s: Invalid parameters", __func__);
14165 WDI_ASSERT(0);
14166 return WDI_STATUS_E_FAILURE;
14167 }
14168 pwdiTDLSChanSwitchReqParams =
14169 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14170 wdiTDLSChanSwitchReqRspCb =
14171 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14172
14173 /*-----------------------------------------------------------------------
14174 Get message buffer
14175 -----------------------------------------------------------------------*/
14176 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14177 WDI_TDLS_CHAN_SWITCH_REQ,
14178 sizeof(halSetTDLSChanSwitchParams),
14179 &pSendBuffer, &usDataOffset, &usSendSize))||
14180 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14181 {
14182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14183 "Unable to get send buffer in Channel Switch REQ %p %p %p",
14184 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14185 WDI_ASSERT(0);
14186 return WDI_STATUS_E_FAILURE;
14187 }
14188
14189 halSetTDLSChanSwitchParams.staIdx =
14190 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14191 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14192 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14193 halSetTDLSChanSwitchParams.targetOperClass =
14194 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14195 halSetTDLSChanSwitchParams.targetChannel =
14196 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14197 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14198 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14199 wpalMemoryCopy( pSendBuffer+usDataOffset,
14200 &halSetTDLSChanSwitchParams,
14201 sizeof(halSetTDLSChanSwitchParams));
14202
14203 pWDICtx->wdiReqStatusCB = NULL;
14204 pWDICtx->pReqStatusUserData = NULL;
14205
14206 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14207 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14208 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14209}/*WDI_ProcessTdlsChanSwitchReq*/
14210
14211#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014212
Jeff Johnson295189b2012-06-20 16:38:30 -070014213
14214
14215/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014218 @param None
14219
14220 @see
14221 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014222*/
14223void
14224WDI_SetPowerStateCb
14225(
14226 wpt_status status,
14227 unsigned int dxePhyAddr,
14228 void *pContext
14229)
14230{
14231 wpt_status wptStatus;
14232 WDI_ControlBlockType *pCB = NULL;
14233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 /*
14235 * Trigger the event to bring the Enter BMPS req function to come
14236 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014237*/
14238 if( NULL != pContext )
14239 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014240 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 }
14242 else
14243 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 pCB = &gWDICb;
14246 }
Mihir Shetea4306052014-03-25 00:02:54 +053014247
14248 if(eWLAN_PAL_STATUS_SUCCESS == status )
14249 {
14250 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14251 }
14252 else
14253 {
14254 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14255 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 pCB->dxePhyAddr = dxePhyAddr;
14257 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14258 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14259 {
14260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14261 "Failed to set an event");
14262
Jeff Johnsone7245742012-09-05 17:12:55 -070014263 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 }
14265 return;
14266}
14267
14268
14269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014270 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014271 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014272
14273 @param pWDICtx: pointer to the WLAN DAL context
14274 pEventData: pointer to the event information structure
14275
Jeff Johnson295189b2012-06-20 16:38:30 -070014276 @see
14277 @return Result of the function call
14278*/
14279WDI_Status
14280WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014281(
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 WDI_ControlBlockType* pWDICtx,
14283 WDI_EventInfoType* pEventData
14284)
14285{
Jeff Johnson43971f52012-07-17 12:26:56 -070014286 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014287 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014288 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 wpt_uint16 usDataOffset = 0;
14290 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014291 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14293
14294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014296 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014297 if ((NULL == pEventData ) ||
14298 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14299 (NULL == (pwdiEnterImpsReqParams =
14300 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014301 {
14302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014305 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 }
14307
14308 /*-----------------------------------------------------------------------
14309 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014310 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 0,
14314 &pSendBuffer, &usDataOffset, &usSendSize))||
14315 ( usSendSize < (usDataOffset )))
14316 {
14317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014318 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 pEventData, wdiEnterImpsRspCb);
14320 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014321 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 }
14323
14324 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014325 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14326 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014327 {
14328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14329 "WDI Init failed to reset an event");
14330
Jeff Johnsone7245742012-09-05 17:12:55 -070014331 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014332 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 }
14334
14335 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014336 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14337 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014339 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014340 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014341 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014342 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014343
14344 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014347 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14348 WDI_SET_POWER_STATE_TIMEOUT);
14349 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 {
14351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14352 "WDI Init failed to wait on an event");
14353
Karthick S1fa70262015-08-20 13:28:14 +053014354 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014355 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014356 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 }
14358
Mihir Shetea4306052014-03-25 00:02:54 +053014359 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14360 {
14361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14362 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14363
14364 goto fail;
14365 }
14366
14367 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14368 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014370 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014371 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014372 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14373 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014374
14375fail:
14376 // Release the message buffer so we don't leak
14377 wpalMemoryFree(pSendBuffer);
14378
14379failRequest:
14380 //WDA should have failure check to avoid the memory leak
14381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014382}/*WDI_ProcessEnterImpsReq*/
14383
14384/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014387
14388 @param pWDICtx: pointer to the WLAN DAL context
14389 pEventData: pointer to the event information structure
14390
Jeff Johnson295189b2012-06-20 16:38:30 -070014391 @see
14392 @return Result of the function call
14393*/
14394WDI_Status
14395WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014396(
Jeff Johnson295189b2012-06-20 16:38:30 -070014397 WDI_ControlBlockType* pWDICtx,
14398 WDI_EventInfoType* pEventData
14399)
14400{
14401 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014402 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 wpt_uint16 usDataOffset = 0;
14404 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014405 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14407
14408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 -------------------------------------------------------------------------*/
14411 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014412 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14413 (NULL == (pwdiExitImpsReqParams =
14414 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014415 {
14416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 }
14421
14422 /*-----------------------------------------------------------------------
14423 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014426 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 0,
14428 &pSendBuffer, &usDataOffset, &usSendSize))||
14429 ( usSendSize < (usDataOffset )))
14430 {
14431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014432 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 pEventData, wdiExitImpsRspCb);
14434 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014437 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14438 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014440 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014442 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14443 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014444}/*WDI_ProcessExitImpsReq*/
14445
14446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014449
14450 @param pWDICtx: pointer to the WLAN DAL context
14451 pEventData: pointer to the event information structure
14452
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 @see
14454 @return Result of the function call
14455*/
14456WDI_Status
14457WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014458(
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 WDI_ControlBlockType* pWDICtx,
14460 WDI_EventInfoType* pEventData
14461)
14462{
14463 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14464 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 wpt_uint16 usDataOffset = 0;
14467 wpt_uint16 usSendSize = 0;
14468 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014469 wpt_status wptStatus;
14470
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14472
14473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 -------------------------------------------------------------------------*/
14476 if (( NULL == pEventData ) ||
14477 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14478 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14479 {
14480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014483 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 }
14485
14486 /*-----------------------------------------------------------------------
14487 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 sizeof(enterBmpsReq),
14492 &pSendBuffer, &usDataOffset, &usSendSize))||
14493 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14494 {
14495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014496 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14498 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014499 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014500 }
14501
14502 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014503 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14504 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 {
14506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14507 "WDI Init failed to reset an event");
14508
Jeff Johnsone7245742012-09-05 17:12:55 -070014509 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014510 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 }
14512
14513 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014514 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14515 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14516 {
14517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014518 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014519 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014520 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014521 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014522
14523/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014524 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014526 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14527 WDI_SET_POWER_STATE_TIMEOUT);
14528 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 {
14530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14531 "WDI Init failed to wait on an event");
14532
Karthick S1fa70262015-08-20 13:28:14 +053014533 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014535 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 }
14537
14538 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14539
14540 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14541 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14542 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14543 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14544
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014545 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014546 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14547 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14548 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14549
14550 wpalMemoryCopy( pSendBuffer+usDataOffset,
14551 &enterBmpsReq,
14552 sizeof(enterBmpsReq));
14553
14554 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014556
14557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014558 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014559 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014560 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14561 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014562
14563fail:
14564 // Release the message buffer so we don't leak
14565 wpalMemoryFree(pSendBuffer);
14566
14567failRequest:
14568 //WDA should have failure check to avoid the memory leak
14569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014570}/*WDI_ProcessEnterBmpsReq*/
14571
14572/**
14573 @brief Process Exit BMPS Request function (called when Main FSM
14574 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014575
14576 @param pWDICtx: pointer to the WLAN DAL context
14577 pEventData: pointer to the event information structure
14578
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 @see
14580 @return Result of the function call
14581*/
14582WDI_Status
14583WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014584(
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 WDI_ControlBlockType* pWDICtx,
14586 WDI_EventInfoType* pEventData
14587)
14588{
14589 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14590 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 wpt_uint16 usDataOffset = 0;
14593 wpt_uint16 usSendSize = 0;
14594 tHalExitBmpsReqParams exitBmpsReq;
14595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14596
14597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 -------------------------------------------------------------------------*/
14600 if (( NULL == pEventData ) ||
14601 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14602 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14603 {
14604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014605 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 }
14609
14610 /*-----------------------------------------------------------------------
14611 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014612 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014613 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014614 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 sizeof(exitBmpsReq),
14616 &pSendBuffer, &usDataOffset, &usSendSize))||
14617 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14618 {
14619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014620 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 }
14625 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14626
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14628
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 wpalMemoryCopy( pSendBuffer+usDataOffset,
14630 &exitBmpsReq,
14631 sizeof(exitBmpsReq));
14632
14633 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014635
14636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014639 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14640 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014641}/*WDI_ProcessExitBmpsReq*/
14642
14643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014644 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014646
14647 @param pWDICtx: pointer to the WLAN DAL context
14648 pEventData: pointer to the event information structure
14649
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 @see
14651 @return Result of the function call
14652*/
14653WDI_Status
14654WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014655(
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 WDI_ControlBlockType* pWDICtx,
14657 WDI_EventInfoType* pEventData
14658)
14659{
14660 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14661 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014662 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 wpt_uint16 usDataOffset = 0;
14664 wpt_uint16 usSendSize = 0;
14665 tUapsdReqParams enterUapsdReq;
14666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14667
14668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 -------------------------------------------------------------------------*/
14671 if (( NULL == pEventData ) ||
14672 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14673 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14674 {
14675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 }
14680
14681 /*-----------------------------------------------------------------------
14682 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 sizeof(enterUapsdReq),
14687 &pSendBuffer, &usDataOffset, &usSendSize))||
14688 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14689 {
14690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014691 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 }
14696
14697 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14698 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14699 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14700 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14701 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14702 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14703 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14704 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014705 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014706
Jeff Johnsone7245742012-09-05 17:12:55 -070014707 wpalMemoryCopy( pSendBuffer+usDataOffset,
14708 &enterUapsdReq,
14709 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014710
14711 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014712 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014713
14714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14718 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014719}/*WDI_ProcessEnterUapsdReq*/
14720
14721/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014724
14725 @param pWDICtx: pointer to the WLAN DAL context
14726 pEventData: pointer to the event information structure
14727
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 @see
14729 @return Result of the function call
14730*/
14731WDI_Status
14732WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014733(
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 WDI_ControlBlockType* pWDICtx,
14735 WDI_EventInfoType* pEventData
14736)
14737{
14738 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 wpt_uint16 usDataOffset = 0;
14741 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014742 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14743 wpt_uint8 bssIdx = 0;
14744
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14746
14747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 -------------------------------------------------------------------------*/
14750 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014751 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14753 {
14754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 }
14759
14760 /*-----------------------------------------------------------------------
14761 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014765 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014767 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 {
14769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014770 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 pEventData, wdiExitUapsdRspCb);
14772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 }
14775
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014776 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14777
14778 wpalMemoryCopy( pSendBuffer+usDataOffset,
14779 &bssIdx,
14780 sizeof(wpt_uint8));
14781
14782 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14783 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14784
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14789 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014790}/*WDI_ProcessExitUapsdReq*/
14791
14792/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014795
14796 @param pWDICtx: pointer to the WLAN DAL context
14797 pEventData: pointer to the event information structure
14798
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 @see
14800 @return Result of the function call
14801*/
14802WDI_Status
14803WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014804(
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 WDI_ControlBlockType* pWDICtx,
14806 WDI_EventInfoType* pEventData
14807)
14808{
14809 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14810 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014811 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 wpt_uint16 usDataOffset = 0;
14813 wpt_uint16 usSendSize = 0;
14814 tUapsdInfo uapsdAcParamsReq;
14815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14816
14817 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 -------------------------------------------------------------------------*/
14820 if (( NULL == pEventData ) ||
14821 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14822 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14823 {
14824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014825 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 }
14829
14830 /*-----------------------------------------------------------------------
14831 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 sizeof(uapsdAcParamsReq),
14836 &pSendBuffer, &usDataOffset, &usSendSize))||
14837 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14838 {
14839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014840 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014841 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014844 }
14845
14846 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14847 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14848 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14849 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14850 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14851 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14852
Jeff Johnsone7245742012-09-05 17:12:55 -070014853 wpalMemoryCopy( pSendBuffer+usDataOffset,
14854 &uapsdAcParamsReq,
14855 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014856
14857 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014859
14860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014861 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014862 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14864 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014865}/*WDI_ProcessSetUapsdAcParamsReq*/
14866
14867/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014868 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014870
14871 @param pWDICtx: pointer to the WLAN DAL context
14872 pEventData: pointer to the event information structure
14873
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 @see
14875 @return Result of the function call
14876*/
14877WDI_Status
14878WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014879(
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 WDI_ControlBlockType* pWDICtx,
14881 WDI_EventInfoType* pEventData
14882)
14883{
14884 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14885 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 wpt_uint16 usDataOffset = 0;
14888 wpt_uint16 usSendSize = 0;
14889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14890
14891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 -------------------------------------------------------------------------*/
14894 if (( NULL == pEventData ) ||
14895 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14896 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14897 {
14898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 }
14903
14904 /*-----------------------------------------------------------------------
14905 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014908 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014909 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14910 &pSendBuffer, &usDataOffset, &usSendSize))||
14911 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14912 {
14913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014914 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 }
14919
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 wpalMemoryCopy( pSendBuffer+usDataOffset,
14921 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14922 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014923
14924 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014926
14927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14931 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014932}/*WDI_ProcessUpdateUapsdParamsReq*/
14933
14934/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014937
14938 @param pWDICtx: pointer to the WLAN DAL context
14939 pEventData: pointer to the event information structure
14940
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 @see
14942 @return Result of the function call
14943*/
14944WDI_Status
14945WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014946(
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 WDI_ControlBlockType* pWDICtx,
14948 WDI_EventInfoType* pEventData
14949)
14950{
14951 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14952 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 wpt_uint16 usDataOffset = 0;
14955 wpt_uint16 usSendSize = 0;
14956 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14957
14958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14959
14960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 -------------------------------------------------------------------------*/
14963 if (( NULL == pEventData ) ||
14964 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14965 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14966 {
14967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 }
14972
14973 /*-----------------------------------------------------------------------
14974 Get message buffer
14975 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 sizeof(halRxpFilterParams),
14978 &pSendBuffer, &usDataOffset, &usSendSize))||
14979 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14980 {
14981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014982 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014986 }
14987
Jeff Johnsone7245742012-09-05 17:12:55 -070014988 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014989 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014990 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14992
Jeff Johnsone7245742012-09-05 17:12:55 -070014993 wpalMemoryCopy( pSendBuffer+usDataOffset,
14994 &halRxpFilterParams,
14995 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014996
14997 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014998 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014999
15000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015003 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15004 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015005}/*WDI_ProcessConfigureRxpFilterReq*/
15006
15007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015008 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015009 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015010
15011 @param pWDICtx: pointer to the WLAN DAL context
15012 pEventData: pointer to the event information structure
15013
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 @see
15015 @return Result of the function call
15016*/
15017WDI_Status
15018WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015019(
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 WDI_ControlBlockType* pWDICtx,
15021 WDI_EventInfoType* pEventData
15022)
15023{
15024 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15025 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 wpt_uint16 usDataOffset = 0;
15028 wpt_uint16 usSendSize = 0;
15029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15030
15031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015033 -------------------------------------------------------------------------*/
15034 if (( NULL == pEventData ) ||
15035 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15036 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15037 {
15038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 }
15043
15044 /*-----------------------------------------------------------------------
15045 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015047 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15050 &pSendBuffer, &usDataOffset, &usSendSize))||
15051 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15052 {
15053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015054 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 }
15059
Jeff Johnsone7245742012-09-05 17:12:55 -070015060 wpalMemoryCopy( pSendBuffer+usDataOffset,
15061 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15062 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15063 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15064 &pwdiBeaconFilterParams->aFilters[0],
15065 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015066
15067 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015069
15070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015071 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015073 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15074 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015075}/*WDI_ProcessSetBeaconFilterReq*/
15076
15077/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015080
15081 @param pWDICtx: pointer to the WLAN DAL context
15082 pEventData: pointer to the event information structure
15083
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 @see
15085 @return Result of the function call
15086*/
15087WDI_Status
15088WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015089(
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 WDI_ControlBlockType* pWDICtx,
15091 WDI_EventInfoType* pEventData
15092)
15093{
15094 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15095 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 wpt_uint16 usDataOffset = 0;
15098 wpt_uint16 usSendSize = 0;
15099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15100
15101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 -------------------------------------------------------------------------*/
15104 if (( NULL == pEventData ) ||
15105 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15106 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15107 {
15108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015112 }
15113
15114 /*-----------------------------------------------------------------------
15115 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015116 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015117 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015118 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015119 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15120 &pSendBuffer, &usDataOffset, &usSendSize))||
15121 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15122 {
15123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015124 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015125 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15126 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015127 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015128 }
15129
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 wpalMemoryCopy( pSendBuffer+usDataOffset,
15131 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15132 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015133
15134 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015136
15137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015138 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15141 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015142}
15143
15144/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015145 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015146 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015147
15148 @param pWDICtx: pointer to the WLAN DAL context
15149 pEventData: pointer to the event information structure
15150
Jeff Johnson295189b2012-06-20 16:38:30 -070015151 @see
15152 @return Result of the function call
15153*/
15154WDI_Status
15155WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015156(
Jeff Johnson295189b2012-06-20 16:38:30 -070015157 WDI_ControlBlockType* pWDICtx,
15158 WDI_EventInfoType* pEventData
15159)
15160{
15161 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15162 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 wpt_uint16 usDataOffset = 0;
15165 wpt_uint16 usSendSize = 0;
15166 tHalRSSIThresholds rssiThresholdsReq;
15167 WDI_Status ret_status = 0;
15168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15169
15170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015172 -------------------------------------------------------------------------*/
15173 if (( NULL == pEventData ) ||
15174 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15175 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15176 {
15177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015178 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 }
15182
15183 /*-----------------------------------------------------------------------
15184 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015185 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 sizeof(rssiThresholdsReq),
15189 &pSendBuffer, &usDataOffset, &usSendSize))||
15190 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15191 {
15192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015193 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015194 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015197 }
15198
Jeff Johnsone7245742012-09-05 17:12:55 -070015199 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015200 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015201 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015202 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015206 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015207 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015209 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015210 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015214 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015217 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15219
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 wpalMemoryCopy( pSendBuffer+usDataOffset,
15221 &rssiThresholdsReq,
15222 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015223
15224 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015225 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015226
15227 /*-------------------------------------------------------------------------
15228 Send Set threshold req to HAL
15229 -------------------------------------------------------------------------*/
15230 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15231 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15232 {
15233 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15234 // req. Then as a result of processing the threshold cross ind, we trigger
15235 // a Set threshold req, then we need to indicate to WDI that it needs to
15236 // go to busy state as a result of the indication as we sent a req in the
15237 // same WDI context.
15238 // Hence expected state transition is to busy.
15239 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15240 }
15241
15242 return ret_status;
15243}
15244
15245/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015248
15249 @param pWDICtx: pointer to the WLAN DAL context
15250 pEventData: pointer to the event information structure
15251
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 @see
15253 @return Result of the function call
15254*/
15255WDI_Status
15256WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015257(
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 WDI_ControlBlockType* pWDICtx,
15259 WDI_EventInfoType* pEventData
15260)
15261{
15262 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15263 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 wpt_uint16 usDataOffset = 0;
15266 wpt_uint16 usSendSize = 0;
15267 tHalHostOffloadReq hostOffloadParams;
15268 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015269 wpt_uint8 ucCurrentBSSSesIdx = 0;
15270 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015271
15272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15273
15274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015275 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 -------------------------------------------------------------------------*/
15277 if (( NULL == pEventData ) ||
15278 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15279 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15280 {
15281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015283 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015284 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015285 }
15286
15287 /*-----------------------------------------------------------------------
15288 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015289 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015290 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15293 &pSendBuffer, &usDataOffset, &usSendSize))||
15294 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15295 {
15296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015297 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15299 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015300 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 }
15302
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015303 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15304 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15305 &pBSSSes);
15306 if ( NULL == pBSSSes )
15307 {
c_hpothu86feba52014-10-28 15:51:18 +053015308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015309 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15310 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015311 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015312 }
15313
Jeff Johnson295189b2012-06-20 16:38:30 -070015314 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15315 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015316
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15318 {
15319 // ARP Offload
15320 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15321 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15322 4);
15323 }
15324 else
15325 {
15326 // NS Offload
15327 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15328 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15329 16);
15330
15331#ifdef WLAN_NS_OFFLOAD
15332 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15333 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15334 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15335 16);
15336 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15337 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15338 16);
15339 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15340 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15341 16);
15342 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15343 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15344 16);
15345 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15346 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15347 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015348 nsOffloadParams.srcIPv6AddrValid =
15349 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15350
15351 nsOffloadParams.targetIPv6Addr1Valid =
15352 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15353
15354 nsOffloadParams.targetIPv6Addr2Valid =
15355 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15356
15357 nsOffloadParams.slotIndex =
15358 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015359
Jeff Johnson295189b2012-06-20 16:38:30 -070015360#endif // WLAN_NS_OFFLOAD
15361 }
15362
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015363 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15364
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 // copy hostOffloadParams into pSendBuffer
15366 wpalMemoryCopy( pSendBuffer+usDataOffset,
15367 &hostOffloadParams,
15368 sizeof(hostOffloadParams));
15369
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015370 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015372 // copy nsOffloadParams into pSendBuffer
15373 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 &nsOffloadParams,
15375 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015376 }
15377 else
15378 {
15379#ifdef WLAN_NS_OFFLOAD
15380 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15381 {
15382 // copy nsOffloadParams into pSendBuffer
15383 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15384 &nsOffloadParams,
15385 sizeof(nsOffloadParams));
15386 }
15387#endif
15388 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015389
15390 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015392
15393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015394 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15397 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015398
15399fail:
15400 // Release the message buffer so we don't leak
15401 wpalMemoryFree(pSendBuffer);
15402
15403failRequest:
15404 //WDA should have failure check to avoid the memory leak
15405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015406}/*WDI_ProcessHostOffloadReq*/
15407
15408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015409 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015411
15412 @param pWDICtx: pointer to the WLAN DAL context
15413 pEventData: pointer to the event information structure
15414
Jeff Johnson295189b2012-06-20 16:38:30 -070015415 @see
15416 @return Result of the function call
15417*/
15418WDI_Status
15419WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015420(
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 WDI_ControlBlockType* pWDICtx,
15422 WDI_EventInfoType* pEventData
15423)
15424{
15425 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15426 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015427 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015428 wpt_uint16 usDataOffset = 0;
15429 wpt_uint16 usSendSize = 0;
15430 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015431 wpt_uint8 ucCurrentBSSSesIdx = 0;
15432 WDI_BSSSessionType* pBSSSes = NULL;
15433
Jeff Johnson295189b2012-06-20 16:38:30 -070015434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15435
15436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015438 -------------------------------------------------------------------------*/
15439 if (( NULL == pEventData ) ||
15440 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15441 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15442 {
15443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15444 "Invalid parameters in Keep Alive req");
15445 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015446 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 }
15448
15449 /*-----------------------------------------------------------------------
15450 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015451 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 sizeof(keepAliveReq),
15455 &pSendBuffer, &usDataOffset, &usSendSize))||
15456 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15457 {
15458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015459 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15461 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015462 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015463 }
15464
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015465 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15466 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15467 &pBSSSes);
15468 if ( NULL == pBSSSes )
15469 {
15470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015471 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015472 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015473 }
15474
Jeff Johnson295189b2012-06-20 16:38:30 -070015475 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15476 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15477
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015478 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015479
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15481 {
15482 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15483 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15484 HAL_IPV4_ADDR_LEN);
15485 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15486 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015487 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015488 wpalMemoryCopy(keepAliveReq.destMacAddr,
15489 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15490 HAL_MAC_ADDR_LEN);
15491 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015492
15493 wpalMemoryCopy( pSendBuffer+usDataOffset,
15494 &keepAliveReq,
15495 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015496
15497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015498 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015499
15500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015501 "Process keep alive req time period %d",
15502 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015503
15504 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015505 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015506
15507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15508 "Sending keep alive req to HAL");
15509
15510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015511 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015512 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015513 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15514 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015515
15516fail:
15517 // Release the message buffer so we don't leak
15518 wpalMemoryFree(pSendBuffer);
15519
15520failRequest:
15521 //WDA should have failure check to avoid the memory leak
15522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015523}/*WDI_ProcessKeepAliveReq*/
15524
15525
15526/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015529
15530 @param pWDICtx: pointer to the WLAN DAL context
15531 pEventData: pointer to the event information structure
15532
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 @see
15534 @return Result of the function call
15535*/
15536WDI_Status
15537WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015538(
Jeff Johnson295189b2012-06-20 16:38:30 -070015539 WDI_ControlBlockType* pWDICtx,
15540 WDI_EventInfoType* pEventData
15541)
15542{
15543 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15544 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 wpt_uint16 usDataOffset = 0;
15547 wpt_uint16 usSendSize = 0;
15548 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015549 wpt_uint8 ucCurrentBSSSesIdx = 0;
15550 WDI_BSSSessionType* pBSSSes = NULL;
15551
Jeff Johnson295189b2012-06-20 16:38:30 -070015552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15553
15554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 -------------------------------------------------------------------------*/
15557 if (( NULL == pEventData ) ||
15558 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15559 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15560 {
15561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015564 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 }
15566
15567 /*-----------------------------------------------------------------------
15568 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015569 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015571 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 sizeof(wowlAddBcPtrnReq),
15573 &pSendBuffer, &usDataOffset, &usSendSize))||
15574 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15575 {
15576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015577 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15579 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015580 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 }
15582
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015583 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15584 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15585 &pBSSSes);
15586 if ( NULL == pBSSSes )
15587 {
15588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015589 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015590 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015591 }
15592
Jeff Johnsone7245742012-09-05 17:12:55 -070015593 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015595 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015596 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015597 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015599 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15601
15602 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15603 {
15604 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15605 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15606 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15607 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15608 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15609 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15610 }
15611 else
15612 {
15613 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15614 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15615 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15616 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15617 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15618 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15619
15620 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15621 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15622 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15623 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15624 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15625 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15626 }
15627
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015628 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15629
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 wpalMemoryCopy( pSendBuffer+usDataOffset,
15631 &wowlAddBcPtrnReq,
15632 sizeof(wowlAddBcPtrnReq));
15633
15634 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015636
15637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015638 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015639 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15641 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015642fail:
15643 // Release the message buffer so we don't leak
15644 wpalMemoryFree(pSendBuffer);
15645
15646failRequest:
15647 //WDA should have failure check to avoid the memory leak
15648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015649}/*WDI_ProcessWowlAddBcPtrnReq*/
15650
15651/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015652 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015654
15655 @param pWDICtx: pointer to the WLAN DAL context
15656 pEventData: pointer to the event information structure
15657
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 @see
15659 @return Result of the function call
15660*/
15661WDI_Status
15662WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015663(
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 WDI_ControlBlockType* pWDICtx,
15665 WDI_EventInfoType* pEventData
15666)
15667{
15668 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15669 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015671 wpt_uint16 usDataOffset = 0;
15672 wpt_uint16 usSendSize = 0;
15673 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015674 wpt_uint8 ucCurrentBSSSesIdx = 0;
15675 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15677
15678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 -------------------------------------------------------------------------*/
15681 if (( NULL == pEventData ) ||
15682 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15683 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15684 {
15685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015686 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015688 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 }
15690
15691 /*-----------------------------------------------------------------------
15692 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 sizeof(wowlDelBcPtrnReq),
15697 &pSendBuffer, &usDataOffset, &usSendSize))||
15698 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15699 {
15700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015701 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15703 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015704 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 }
15706
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015707 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15708 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15709 &pBSSSes);
15710 if ( NULL == pBSSSes )
15711 {
15712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015713 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015714 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015715 }
15716
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015719
15720 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15721
Jeff Johnsone7245742012-09-05 17:12:55 -070015722 wpalMemoryCopy( pSendBuffer+usDataOffset,
15723 &wowlDelBcPtrnReq,
15724 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015725
15726 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015728
15729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015732 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15733 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015734
15735fail:
15736 // Release the message buffer so we don't leak
15737 wpalMemoryFree(pSendBuffer);
15738
15739failRequest:
15740 //WDA should have failure check to avoid the memory leak
15741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015742}/*WDI_ProcessWowlDelBcPtrnReq*/
15743
15744/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015747
15748 @param pWDICtx: pointer to the WLAN DAL context
15749 pEventData: pointer to the event information structure
15750
Jeff Johnson295189b2012-06-20 16:38:30 -070015751 @see
15752 @return Result of the function call
15753*/
15754WDI_Status
15755WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015756(
Jeff Johnson295189b2012-06-20 16:38:30 -070015757 WDI_ControlBlockType* pWDICtx,
15758 WDI_EventInfoType* pEventData
15759)
15760{
15761 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15762 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015763 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 wpt_uint16 usDataOffset = 0;
15765 wpt_uint16 usSendSize = 0;
15766 tHalWowlEnterParams wowlEnterReq;
15767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15768
15769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 -------------------------------------------------------------------------*/
15772 if (( NULL == pEventData ) ||
15773 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15774 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15775 {
15776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015777 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 }
15781
15782 /*-----------------------------------------------------------------------
15783 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015786 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015787 sizeof(wowlEnterReq),
15788 &pSendBuffer, &usDataOffset, &usSendSize))||
15789 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15790 {
15791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015792 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 }
15797
Kumar Anandaca924e2013-07-22 14:35:34 -070015798 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15799
Jeff Johnsone7245742012-09-05 17:12:55 -070015800 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015802 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015803 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015804 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015812 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015813 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015814 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15816
15817#ifdef WLAN_WAKEUP_EVENTS
15818 wowlEnterReq.ucWoWEAPIDRequestEnable =
15819 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15820
15821 wowlEnterReq.ucWoWEAPOL4WayEnable =
15822 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15823
15824 wowlEnterReq.ucWowNetScanOffloadMatch =
15825 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15826
15827 wowlEnterReq.ucWowGTKRekeyError =
15828 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15829
15830 wowlEnterReq.ucWoWBSSConnLoss =
15831 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15832#endif // WLAN_WAKEUP_EVENTS
15833
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015834 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15835
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15837 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15838 sizeof(tSirMacAddr));
15839
Jeff Johnsone7245742012-09-05 17:12:55 -070015840 wpalMemoryCopy( pSendBuffer+usDataOffset,
15841 &wowlEnterReq,
15842 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015843
15844 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015846
15847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15851 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015852}/*WDI_ProcessWowlEnterReq*/
15853
15854/**
15855 @brief Process Wowl exit Request function (called when Main FSM
15856 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015857
15858 @param pWDICtx: pointer to the WLAN DAL context
15859 pEventData: pointer to the event information structure
15860
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 @see
15862 @return Result of the function call
15863*/
15864WDI_Status
15865WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015866(
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 WDI_ControlBlockType* pWDICtx,
15868 WDI_EventInfoType* pEventData
15869)
15870{
15871 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015872 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 wpt_uint16 usDataOffset = 0;
15875 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015876 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15878
15879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 -------------------------------------------------------------------------*/
15882 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015883 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15885 {
15886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 }
15891
15892 /*-----------------------------------------------------------------------
15893 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015894 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015896 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015897 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015898 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015899 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015900 {
15901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015902 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 pEventData, wdiWowlExitCb);
15904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 }
15907
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015908 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15909
15910 wpalMemoryCopy( pSendBuffer+usDataOffset,
15911 &wowlExitparams,
15912 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015914 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015916 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15917 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015918}/*WDI_ProcessWowlExitReq*/
15919
15920/**
15921 @brief Process Configure Apps Cpu Wakeup State Request function
15922 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015923
15924 @param pWDICtx: pointer to the WLAN DAL context
15925 pEventData: pointer to the event information structure
15926
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 @see
15928 @return Result of the function call
15929*/
15930WDI_Status
15931WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015932(
Jeff Johnson295189b2012-06-20 16:38:30 -070015933 WDI_ControlBlockType* pWDICtx,
15934 WDI_EventInfoType* pEventData
15935)
15936{
15937 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15938 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 wpt_uint16 usDataOffset = 0;
15941 wpt_uint16 usSendSize = 0;
15942 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15944
15945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 -------------------------------------------------------------------------*/
15948 if (( NULL == pEventData ) ||
15949 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15950 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15951 {
15952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 }
15957
15958 /*-----------------------------------------------------------------------
15959 Get message buffer
15960 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 sizeof(halCfgAppsCpuWakeupStateReqParams),
15963 &pSendBuffer, &usDataOffset, &usSendSize))||
15964 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15965 {
15966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015967 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015968 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015971 }
15972
Jeff Johnsone7245742012-09-05 17:12:55 -070015973 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015974 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15975
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 wpalMemoryCopy( pSendBuffer+usDataOffset,
15977 &halCfgAppsCpuWakeupStateReqParams,
15978 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015979
15980 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015982
15983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015984 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15987 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15988 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015989}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15990
15991#ifdef WLAN_FEATURE_VOWIFI_11R
15992/**
15993 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15994 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015995
15996 @param pWDICtx: pointer to the WLAN DAL context
15997 pEventData: pointer to the event information structure
15998
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 @see
16000 @return Result of the function call
16001*/
16002WDI_Status
16003WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016004(
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 WDI_ControlBlockType* pWDICtx,
16006 WDI_EventInfoType* pEventData
16007)
16008{
16009 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16010 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016011 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016012 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 wpt_uint16 usDataOffset = 0;
16015 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016016 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 wpt_macAddr macBSSID;
16018 tAggrAddTsReq halAggrAddTsReq;
16019 int i;
16020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16021
16022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016024 -------------------------------------------------------------------------*/
16025 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16026 ( NULL == pEventData->pCBfnc ))
16027 {
16028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016032 }
16033 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16034 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16035 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16036 /*-------------------------------------------------------------------------
16037 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016038 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016039 -------------------------------------------------------------------------*/
16040 wpalMutexAcquire(&pWDICtx->wptMutex);
16041
16042 /*------------------------------------------------------------------------
16043 Find the BSS for which the request is made and identify WDI session
16044 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016045 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16046 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016047 &macBSSID))
16048 {
16049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016050 "This station does not exist in the WDI Station Table %d",
16051 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016052 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016054 }
16055
Jeff Johnsone7245742012-09-05 17:12:55 -070016056 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16057 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016058 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16060 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16061 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016062
16063 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016064 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016066
Jeff Johnson295189b2012-06-20 16:38:30 -070016067 /*------------------------------------------------------------------------
16068 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016069 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 ------------------------------------------------------------------------*/
16071 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16072 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16074 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16075 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016076
Jeff Johnsone7245742012-09-05 17:12:55 -070016077 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 }
16081
16082 wpalMutexRelease(&pWDICtx->wptMutex);
16083 /*-----------------------------------------------------------------------
16084 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016085 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016088 sizeof(tAggrAddTsParams),
16089 &pSendBuffer, &usDataOffset, &usSendSize))||
16090 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16091 {
16092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016093 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 }
16098
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16103
16104 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16105 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016106 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16112 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16115 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016117 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16118 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016119 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16121 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16124 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016125 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016126 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16127 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070016128 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016129 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16130 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016132 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16133 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016134 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016135 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016136 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016137 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016138
16139
16140 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016143 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016144 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016146 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016148 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016149 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016150 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016151 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016154 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016155 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016157 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016158 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016160 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016162 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016163 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016164 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016166 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016167 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016168 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016169 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16170 }
16171
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 wpalMemoryCopy( pSendBuffer+usDataOffset,
16173 &halAggrAddTsReq,
16174 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016175
16176 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016177 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016178
16179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016182 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016183 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016184 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016185}/*WDI_ProcessAggrAddTSpecReq*/
16186#endif /* WLAN_FEATURE_VOWIFI_11R */
16187
16188/**
16189 @brief Process Shutdown Request function (called when Main FSM
16190 allows it)
16191
16192 @param pWDICtx: pointer to the WLAN DAL context
16193 pEventData: pointer to the event information structure
16194
16195 @see
16196 @return Result of the function call
16197*/
16198WDI_Status
16199WDI_ProcessShutdownReq
16200(
16201 WDI_ControlBlockType* pWDICtx,
16202 WDI_EventInfoType* pEventData
16203 )
16204{
16205 wpt_status wptStatus;
16206
16207
16208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16209
16210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 -------------------------------------------------------------------------*/
16213 if ( NULL == pEventData )
16214 {
16215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016217 WDI_ASSERT(0);
16218 return WDI_STATUS_E_FAILURE;
16219 }
16220
16221 wpalMutexAcquire(&pWDICtx->wptMutex);
16222
16223
16224 gWDIInitialized = eWLAN_PAL_FALSE;
16225 /*! TO DO: stop the data services */
16226 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16227 {
16228 /*Stop the STA Table !UT- check this logic again
16229 It is safer to do it here than on the response - because a stop is imminent*/
16230 WDI_STATableStop(pWDICtx);
16231
16232 /* Stop Transport Driver, DXE */
16233 WDTS_Stop(pWDICtx);
16234 }
16235
16236 /*Clear all pending request*/
16237 WDI_ClearPendingRequests(pWDICtx);
16238 /* Close Data transport*/
16239 /* FTM mode does not open Data Path */
16240 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16241 {
16242 WDTS_Close(pWDICtx);
16243 }
16244 /*Close the STA Table !UT- check this logic again*/
16245 WDI_STATableClose(pWDICtx);
16246 /*close the PAL */
16247 wptStatus = wpalClose(pWDICtx->pPALContext);
16248 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16249 {
16250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16251 "Failed to wpal Close %d", wptStatus);
16252 WDI_ASSERT(0);
16253 }
16254
16255 /*Transition back to init state*/
16256 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16257
16258 wpalMutexRelease(&pWDICtx->wptMutex);
16259
16260 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016261 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016262
16263
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016265}/*WDI_ProcessShutdownReq*/
16266
16267/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016268 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016269========================================================================*/
16270
16271/**
16272 @brief Process Start Response function (called when a response
16273 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016274
16275 @param pWDICtx: pointer to the WLAN DAL context
16276 pEventData: pointer to the event information structure
16277
Jeff Johnson295189b2012-06-20 16:38:30 -070016278 @see
16279 @return Result of the function call
16280*/
16281WDI_Status
16282WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016283(
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 WDI_ControlBlockType* pWDICtx,
16285 WDI_EventInfoType* pEventData
16286)
16287{
16288 WDI_StartRspParamsType wdiRspParams;
16289 WDI_StartRspCb wdiStartRspCb = NULL;
16290
16291 tHalMacStartRspParams* startRspParams;
16292
16293#ifndef HAL_SELF_STA_PER_BSS
16294 WDI_AddStaParams wdiAddSTAParam = {0};
16295#endif
16296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16297
Jeff Johnsone7245742012-09-05 17:12:55 -070016298 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016301 -------------------------------------------------------------------------*/
16302 if (( NULL == pEventData ) ||
16303 ( NULL == pEventData->pEventData) ||
16304 ( NULL == wdiStartRspCb ))
16305 {
16306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016310 }
16311
16312 /*-------------------------------------------------------------------------
16313 Extract response and send it to UMAC
16314 -------------------------------------------------------------------------*/
16315 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16316 {
16317 // not enough data was received
16318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016319 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016320 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 }
16324
16325 /*-------------------------------------------------------------------------
16326 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016327 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016328 -------------------------------------------------------------------------*/
16329 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16330
16331 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16332 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16333 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16334 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16335 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16336 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16337 wdiRspParams.wlanReportedVersion.major =
16338 startRspParams->wcnssWlanVersion.major;
16339 wdiRspParams.wlanReportedVersion.minor =
16340 startRspParams->wcnssWlanVersion.minor;
16341 wdiRspParams.wlanReportedVersion.version =
16342 startRspParams->wcnssWlanVersion.version;
16343 wdiRspParams.wlanReportedVersion.revision =
16344 startRspParams->wcnssWlanVersion.revision;
16345 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16346 startRspParams->wcnssCrmVersionString,
16347 sizeof(wdiRspParams.wcnssSoftwareVersion));
16348 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16349 startRspParams->wcnssWlanVersionString,
16350 sizeof(wdiRspParams.wcnssHardwareVersion));
16351 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16352
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016353 /*Save the HAL Version*/
16354 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16355
Jeff Johnson295189b2012-06-20 16:38:30 -070016356 wpalMutexAcquire(&pWDICtx->wptMutex);
16357 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16358 {
16359 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16360
16361 /*Cache the start response for further use*/
16362 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016363 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016364 sizeof(pWDICtx->wdiCachedStartRspParams));
16365
16366 }
16367 else
16368 {
16369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16370 "Failed to start device with status %s(%d)",
16371 WDI_getHALStatusMsgString(startRspParams->status),
16372 startRspParams->status);
16373
16374 /*Set the expected state transition to stopped - because the start has
16375 failed*/
16376 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16377
16378 wpalMutexRelease(&pWDICtx->wptMutex);
16379
16380 /*Notify UMAC*/
16381 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016382
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016384 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016385
16386 /*Although the response is an error - it was processed by our function
16387 so as far as the caller is concerned this is a succesful reponse processing*/
16388 return WDI_STATUS_SUCCESS;
16389 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016390
Jeff Johnson295189b2012-06-20 16:38:30 -070016391 wpalMutexRelease(&pWDICtx->wptMutex);
16392
16393 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16394 {
16395 /* FTM mode does not need to execute below */
16396 /* Notify UMAC */
16397 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16398 return WDI_STATUS_SUCCESS;
16399 }
16400
16401 /* START the Data transport */
16402 WDTS_startTransport(pWDICtx);
16403
16404 /*Start the STA Table !- check this logic again*/
16405 WDI_STATableStart(pWDICtx);
16406
16407#ifndef HAL_SELF_STA_PER_BSS
16408 /* Store the Self STA Index */
16409 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16410
16411 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16412 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16413 WDI_MAC_ADDR_LEN);
16414
16415 /* At this point add the self-STA */
16416
16417 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16418 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16419 /*! TO DO: wdiAddSTAParam.dpuSig */
16420 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16421 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16422 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16423
16424 //all DPU indices are the same for self STA
16425 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16426 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016427 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16429 WDI_MAC_ADDR_LEN);
16430 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16431 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16432
16433 /* Note: Since we don't get an explicit config STA request for self STA, we
16434 add the self STA upon receiving the Start response message. But the
16435 self STA entry in the table is deleted when WDI gets an explicit delete STA
16436 request */
16437 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16438#endif
16439
16440 /*Notify UMAC*/
16441 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16442
Jeff Johnsone7245742012-09-05 17:12:55 -070016443 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016444}/*WDI_ProcessStartRsp*/
16445
16446
16447/**
16448 @brief Process Stop Response function (called when a response
16449 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016450
16451 @param pWDICtx: pointer to the WLAN DAL context
16452 pEventData: pointer to the event information structure
16453
Jeff Johnson295189b2012-06-20 16:38:30 -070016454 @see
16455 @return Result of the function call
16456*/
16457WDI_Status
16458WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016459(
Jeff Johnson295189b2012-06-20 16:38:30 -070016460 WDI_ControlBlockType* pWDICtx,
16461 WDI_EventInfoType* pEventData
16462)
16463{
16464 WDI_Status wdiStatus;
16465 WDI_StopRspCb wdiStopRspCb = NULL;
16466
Jeff Johnsone7245742012-09-05 17:12:55 -070016467 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16469
Jeff Johnsone7245742012-09-05 17:12:55 -070016470 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016471 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016472 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016473 -------------------------------------------------------------------------*/
16474 if (( NULL == pEventData ) ||
16475 ( NULL == pEventData->pEventData) ||
16476 ( NULL == wdiStopRspCb ))
16477 {
16478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016479 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016482 }
16483
16484 /*-------------------------------------------------------------------------
16485 Extract response and send it to UMAC
16486 -------------------------------------------------------------------------*/
16487 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16488 {
16489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016490 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016491 pEventData->uEventDataSize);
16492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016494 }
16495
16496 /*-------------------------------------------------------------------------
16497 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016498 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016499 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016500 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16501 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016502 sizeof(halMacStopRspMsg.stopRspParams));
16503
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016505
16506 wpalMutexAcquire(&pWDICtx->wptMutex);
16507
16508 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016509 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 --------------------------------------------------------------------------*/
16511 if ( WDI_STATUS_SUCCESS != wdiStatus )
16512 {
16513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16514 "Failed to stop the device with status %s (%d)",
16515 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16516 halMacStopRspMsg.stopRspParams.status);
16517
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016519 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016520
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016523 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016524
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16526
16527 /*Transition now as WDI may get preempted imediately after it sends
16528 up the Stop Response and it will not get to process the state transition
16529 from Main Rsp function*/
16530 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16531 wpalMutexRelease(&pWDICtx->wptMutex);
16532
16533 /*! TO DO: - STOP the Data transport */
16534
16535 /*Notify UMAC*/
16536 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16537
Jeff Johnsone7245742012-09-05 17:12:55 -070016538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016539}/*WDI_ProcessStopRsp*/
16540
16541/**
16542 @brief Process Close Rsp function (called when a response
16543 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016544
16545 @param pWDICtx: pointer to the WLAN DAL context
16546 pEventData: pointer to the event information structure
16547
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 @see
16549 @return Result of the function call
16550*/
16551WDI_Status
16552WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016553(
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 WDI_ControlBlockType* pWDICtx,
16555 WDI_EventInfoType* pEventData
16556)
16557{
16558 /*There is no close response comming from HAL - function just kept for
16559 simmetry */
16560 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016562}/*WDI_ProcessCloseRsp*/
16563
16564
16565/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016567============================================================================*/
16568
16569/**
16570 @brief Process Init Scan Rsp function (called when a response
16571 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016572
16573 @param pWDICtx: pointer to the WLAN DAL context
16574 pEventData: pointer to the event information structure
16575
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 @see
16577 @return Result of the function call
16578*/
16579WDI_Status
16580WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016581(
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 WDI_ControlBlockType* pWDICtx,
16583 WDI_EventInfoType* pEventData
16584)
16585{
16586 WDI_Status wdiStatus;
16587 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016588 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016589 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16591
16592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 -------------------------------------------------------------------------*/
16595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16596 ( NULL == pEventData->pEventData))
16597 {
16598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 }
16603
16604 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16605 if( NULL == wdiInitScanRspCb)
16606 {
16607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016608 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 }
16612
16613 /*-------------------------------------------------------------------------
16614 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016615 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016616 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16618 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 sizeof(halInitScanRspMsg.initScanRspParams));
16620
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016622
16623 if ( pWDICtx->bInBmps )
16624 {
16625 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016626 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16627 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016629 "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 -080016630 WDI_ASSERT(0);
16631 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 }
16633
16634 /*Notify UMAC*/
16635 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16636
Jeff Johnsone7245742012-09-05 17:12:55 -070016637 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016638}/*WDI_ProcessInitScanRsp*/
16639
16640
16641/**
16642 @brief Process Start Scan Rsp function (called when a response
16643 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016644
16645 @param pWDICtx: pointer to the WLAN DAL context
16646 pEventData: pointer to the event information structure
16647
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 @see
16649 @return Result of the function call
16650*/
16651WDI_Status
16652WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016653(
Jeff Johnson295189b2012-06-20 16:38:30 -070016654 WDI_ControlBlockType* pWDICtx,
16655 WDI_EventInfoType* pEventData
16656)
16657{
16658 WDI_StartScanRspParamsType wdiStartScanParams;
16659 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016660
16661 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16663
16664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 -------------------------------------------------------------------------*/
16667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16668 ( NULL == pEventData->pEventData))
16669 {
16670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016674 }
16675
16676 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16677 if( NULL == wdiStartScanRspCb)
16678 {
16679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016680 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 }
16684
16685 /*-------------------------------------------------------------------------
16686 Extract response and send it to UMAC
16687 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16689 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 sizeof(halStartScanRspMsg.startScanRspParams));
16691
16692 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16693 halStartScanRspMsg.startScanRspParams.status);
16694#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016695 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016697 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016698 halStartScanRspMsg.startScanRspParams.startTSF,
16699 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016700#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016701
16702 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16703 {
16704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16705 "Start scan failed with status %s (%d)",
16706 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16707 halStartScanRspMsg.startScanRspParams.status);
16708 /* send the status to UMAC, don't return from here*/
16709 }
16710
16711 /*Notify UMAC*/
16712 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16713
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016715
16716}/*WDI_ProcessStartScanRsp*/
16717
16718
16719/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016720 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016722
16723 @param pWDICtx: pointer to the WLAN DAL context
16724 pEventData: pointer to the event information structure
16725
Jeff Johnson295189b2012-06-20 16:38:30 -070016726 @see
16727 @return Result of the function call
16728*/
16729WDI_Status
16730WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016731(
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 WDI_ControlBlockType* pWDICtx,
16733 WDI_EventInfoType* pEventData
16734)
16735{
16736 WDI_Status wdiStatus;
16737 tHalEndScanRspMsg halEndScanRspMsg;
16738 WDI_EndScanRspCb wdiEndScanRspCb;
16739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16740
16741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 -------------------------------------------------------------------------*/
16744 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16745 ( NULL == pEventData->pEventData))
16746 {
16747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016751 }
16752
16753 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16754
16755 /*-------------------------------------------------------------------------
16756 Extract response and send it to UMAC
16757 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016758 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16759 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 sizeof(halEndScanRspMsg.endScanRspParams));
16761
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016763
16764 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16765 {
16766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16767 "End Scan failed with status %s (%d )",
16768 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16769 halEndScanRspMsg.endScanRspParams.status);
16770 /* send the status to UMAC, don't return from here*/
16771 }
16772
16773 /*Notify UMAC*/
16774 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16775
Jeff Johnsone7245742012-09-05 17:12:55 -070016776 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016777}/*WDI_ProcessEndScanRsp*/
16778
16779
16780/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016781 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016782 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016783
16784 @param pWDICtx: pointer to the WLAN DAL context
16785 pEventData: pointer to the event information structure
16786
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 @see
16788 @return Result of the function call
16789*/
16790WDI_Status
16791WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016792(
Jeff Johnson295189b2012-06-20 16:38:30 -070016793 WDI_ControlBlockType* pWDICtx,
16794 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016795)
Jeff Johnson295189b2012-06-20 16:38:30 -070016796{
16797 WDI_Status wdiStatus;
16798 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016799
16800 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16802
16803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016804 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 -------------------------------------------------------------------------*/
16806 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16807 ( NULL == pEventData->pEventData))
16808 {
16809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016810 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016813 }
16814
16815 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16816
16817 /*-------------------------------------------------------------------------
16818 Extract response and send it to UMAC
16819 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016820 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16821 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016822 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16823
Jeff Johnsone7245742012-09-05 17:12:55 -070016824 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016825
16826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016827 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016828 halFinishScanRspMsg.finishScanRspParams.status);
16829
16830 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16831 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16832 {
16833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16834 "Finish Scan failed with status %s (%d)",
16835 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16836 halFinishScanRspMsg.finishScanRspParams.status);
16837 /* send the status to UMAC, don't return from here*/
16838 }
16839
16840 /*Notify UMAC*/
16841 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16842
Jeff Johnsone7245742012-09-05 17:12:55 -070016843 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016844}/*WDI_ProcessFinishScanRsp*/
16845
16846/**
16847 @brief Process Join Response function (called when a response
16848 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016849
16850 @param pWDICtx: pointer to the WLAN DAL context
16851 pEventData: pointer to the event information structure
16852
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 @see
16854 @return Result of the function call
16855*/
16856WDI_Status
16857WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016858(
Jeff Johnson295189b2012-06-20 16:38:30 -070016859 WDI_ControlBlockType* pWDICtx,
16860 WDI_EventInfoType* pEventData
16861)
16862{
16863 WDI_Status wdiStatus;
16864 WDI_JoinRspCb wdiJoinRspCb;
16865 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016866
16867 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16869
16870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 -------------------------------------------------------------------------*/
16873 if (( NULL == pWDICtx ) ||
16874 ( NULL == pWDICtx->pfncRspCB ) ||
16875 ( NULL == pEventData ) ||
16876 ( NULL == pEventData->pEventData))
16877 {
16878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 }
16883
16884 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16885
16886 /*-------------------------------------------------------------------------
16887 Extract response and send it to UMAC
16888 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16890 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016891 sizeof(halJoinRspMsg.joinRspParams));
16892
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016894
16895 wpalMutexAcquire(&pWDICtx->wptMutex);
16896
16897 /*-----------------------------------------------------------------------
16898 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016899 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016901 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16903 {
16904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016905 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16906 "association no longer in progress %d - mysterious HAL response",
16907 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016908
Jeff Johnsone7245742012-09-05 17:12:55 -070016909 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 }
16913
16914 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16915
16916 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 -----------------------------------------------------------------------*/
16919 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16920 {
16921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16922 "Join only allowed in Joining state - failure state is %d "
16923 "strange HAL response", pBSSSes->wdiAssocState);
16924
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16926
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 }
16930
16931
16932 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016933 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 -----------------------------------------------------------------------*/
16935 if ( WDI_STATUS_SUCCESS != wdiStatus )
16936 {
16937 /*Association was failed by HAL - remove session*/
16938 WDI_DeleteSession(pWDICtx, pBSSSes);
16939
16940 /*Association no longer in progress */
16941 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16942
16943 /*Association no longer in progress - prepare pending assoc for processing*/
16944 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016945
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 }
16947 else
16948 {
16949 /*Transition to state Joining - this may be redundant as we are supposed
16950 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016951 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016952 }
16953
16954 wpalMutexRelease(&pWDICtx->wptMutex);
16955
16956 /*Notify UMAC*/
16957 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16958
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016960}/*WDI_ProcessJoinRsp*/
16961
16962
16963/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016964 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016966
16967 @param pWDICtx: pointer to the WLAN DAL context
16968 pEventData: pointer to the event information structure
16969
Jeff Johnson295189b2012-06-20 16:38:30 -070016970 @see
16971 @return Result of the function call
16972*/
16973WDI_Status
16974WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016975(
Jeff Johnson295189b2012-06-20 16:38:30 -070016976 WDI_ControlBlockType* pWDICtx,
16977 WDI_EventInfoType* pEventData
16978)
16979{
16980 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16981 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016982 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016983 WDI_BSSSessionType* pBSSSes = NULL;
16984
Jeff Johnsone7245742012-09-05 17:12:55 -070016985 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016986 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16987 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016988
Jeff Johnson295189b2012-06-20 16:38:30 -070016989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16990
16991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016993 -------------------------------------------------------------------------*/
16994 if (( NULL == pEventData ) ||
16995 ( NULL == pEventData->pEventData))
16996 {
16997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016998 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017001 }
17002
17003 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
17004
17005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017006 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017008 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17009 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017010 sizeof(halConfigBssRspMsg.configBssRspParams));
17011
17012 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17013 halConfigBssRspMsg.configBssRspParams.status);
17014 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17015 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017016 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017017 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17018 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017019
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017021
17022 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017024
17025 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017027
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017029
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017031 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017032 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17033 #endif
17034 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17035 halConfigBssRspMsg.configBssRspParams.staMac,
17036 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017037
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 wpalMutexAcquire(&pWDICtx->wptMutex);
17039 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017040 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17043 wdiConfigBSSParams.macBSSID,
17044 &pBSSSes);
17045
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 /*-----------------------------------------------------------------------
17047 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 -----------------------------------------------------------------------*/
17050 if ( NULL == pBSSSes )
17051 {
17052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17053 "Association sequence for this BSS does not yet exist "
17054 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017055
17056 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17057
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017059 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017061
Jeff Johnson295189b2012-06-20 16:38:30 -070017062 /*Save data for this BSS*/
17063 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17064 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017065 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017066 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017069 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17075 pBSSSes->bcastStaIdx =
17076 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017077
Jeff Johnson295189b2012-06-20 16:38:30 -070017078 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017079
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 /*-------------------------------------------------------------------------
17081 Add Peer STA
17082 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17085 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017086
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017088 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 wdiAddSTAParam.ucHTCapable =
17091 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17092 wdiAddSTAParam.ucStaType =
17093 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17094
Jeff Johnson295189b2012-06-20 16:38:30 -070017095 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017096 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17097 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017098 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017099
17100 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17101 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17102 WDI_MAC_ADDR_LEN);
17103
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017105 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017109 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017111 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017113 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017115 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017117
Jeff Johnson295189b2012-06-20 16:38:30 -070017118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17119 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017120
Jeff Johnson295189b2012-06-20 16:38:30 -070017121 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17122 /*-------------------------------------------------------------------------
17123 Add Broadcast STA only in AP mode
17124 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017125 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017126 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017127 {
17128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17129 "Add BCAST STA to table for index: %d",
17130 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017131
17132 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017134
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17136 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17137 }
17138 wpalMutexRelease(&pWDICtx->wptMutex);
17139 }
17140 else
17141 {
17142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17143 "Config BSS RSP failed with status : %s(%d)",
17144 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017145 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017146 halConfigBssRspMsg.configBssRspParams.status);
17147
Jeff Johnsone7245742012-09-05 17:12:55 -070017148
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 /*Association was failed by HAL - remove session*/
17150 WDI_DeleteSession(pWDICtx, pBSSSes);
17151
17152 /*Association no longer in progress */
17153 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17154
17155 /*Association no longer in progress - prepare pending assoc for processing*/
17156 WDI_DequeueAssocRequest(pWDICtx);
17157
17158 }
17159
17160 /*Notify UMAC*/
17161 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17162
Jeff Johnsone7245742012-09-05 17:12:55 -070017163 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017164}/*WDI_ProcessConfigBSSRsp*/
17165
17166
17167/**
17168 @brief Process Del BSS Response function (called when a response
17169 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017170
17171 @param pWDICtx: pointer to the WLAN DAL context
17172 pEventData: pointer to the event information structure
17173
Jeff Johnson295189b2012-06-20 16:38:30 -070017174 @see
17175 @return Result of the function call
17176*/
17177WDI_Status
17178WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017179(
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 WDI_ControlBlockType* pWDICtx,
17181 WDI_EventInfoType* pEventData
17182)
17183{
17184 WDI_DelBSSRspParamsType wdiDelBSSParams;
17185 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017186 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 WDI_BSSSessionType* pBSSSes = NULL;
17188
Jeff Johnsone7245742012-09-05 17:12:55 -070017189 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17191
17192 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017193 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 -------------------------------------------------------------------------*/
17195 if (( NULL == pEventData ) ||
17196 ( NULL == pEventData->pEventData))
17197 {
17198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017199 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017202 }
17203
17204 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17205
17206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017207 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017208 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017209 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17210 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017211 sizeof(halDelBssRspMsg.deleteBssRspParams));
17212
17213
17214 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017215 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017216
17217 wpalMutexAcquire(&pWDICtx->wptMutex);
17218
17219 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017220 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017221 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017222 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17223 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17224 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017225
17226 /*-----------------------------------------------------------------------
17227 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017228 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017229 -----------------------------------------------------------------------*/
17230 if ( NULL == pBSSSes )
17231 {
17232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17233 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017234 "association no longer in progress - mysterious HAL response");
17235
17236 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17237
17238 wpalMutexRelease(&pWDICtx->wptMutex);
17239 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017241
17242 /*Extract BSSID for the response to UMAC*/
17243 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17244 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17245
17246 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17247
17248 /*-----------------------------------------------------------------------
17249 The current session will be deleted
17250 -----------------------------------------------------------------------*/
17251 WDI_DeleteSession(pWDICtx, pBSSSes);
17252
17253
17254 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017255 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17256 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017258 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017259 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017260
17261 /* Delete the STA's in this BSS */
17262 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17263
Jeff Johnson295189b2012-06-20 16:38:30 -070017264 wpalMutexRelease(&pWDICtx->wptMutex);
17265
17266 /*Notify UMAC*/
17267 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17268
Jeff Johnsone7245742012-09-05 17:12:55 -070017269 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017270}/*WDI_ProcessDelBSSRsp*/
17271
17272/**
17273 @brief Process Post Assoc Rsp function (called when a response
17274 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017275
17276 @param pWDICtx: pointer to the WLAN DAL context
17277 pEventData: pointer to the event information structure
17278
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 @see
17280 @return Result of the function call
17281*/
17282WDI_Status
17283WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017284(
Jeff Johnson295189b2012-06-20 16:38:30 -070017285 WDI_ControlBlockType* pWDICtx,
17286 WDI_EventInfoType* pEventData
17287)
17288{
17289 WDI_PostAssocRspParamsType wdiPostAssocParams;
17290 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017291 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017292 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017293 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17295
17296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017298 -------------------------------------------------------------------------*/
17299 if (( NULL == pEventData ) ||
17300 ( NULL == pEventData->pEventData))
17301 {
17302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017306 }
17307
17308 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17309
17310 /*-------------------------------------------------------------------------
17311 Extract response and send it to UMAC
17312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017313 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17314 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 sizeof(halPostAssocRspMsg.postAssocRspParams));
17316
17317 /*Extract the Post Assoc STA Params */
17318
Jeff Johnsone7245742012-09-05 17:12:55 -070017319 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017320 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017321 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017323 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017324 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17325
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 wdiPostAssocParams.wdiStatus =
17327 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017328
17329 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17330 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017331 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17332 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017333 WDI_MAC_ADDR_LEN);
17334
17335 /* Extract Post Assoc BSS Params */
17336
Jeff Johnsone7245742012-09-05 17:12:55 -070017337 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17338 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17339 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017340
17341 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17342 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017343 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017344 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17345 .macSTA, WDI_MAC_ADDR_LEN);
17346
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017348 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17349
Jeff Johnsone7245742012-09-05 17:12:55 -070017350 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17352
17353 wdiPostAssocParams.bssParams.ucBSSIdx =
17354 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17355
Jeff Johnsone7245742012-09-05 17:12:55 -070017356 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17358
17359 wpalMutexAcquire(&pWDICtx->wptMutex);
17360
17361 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017362 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017364 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017365 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017366 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017367
17368 /*-----------------------------------------------------------------------
17369 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017370 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017371 -----------------------------------------------------------------------*/
17372 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17375 {
17376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17377 "Association sequence for this BSS does not yet exist or "
17378 "association no longer in progress - mysterious HAL response");
17379
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17381
Jeff Johnson295189b2012-06-20 16:38:30 -070017382 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017383 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017384 }
17385
17386 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017387 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 -----------------------------------------------------------------------*/
17389 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17390 {
17391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17392 "Post Assoc not allowed before JOIN - failing request "
17393 "strange HAL response");
17394
Jeff Johnsone7245742012-09-05 17:12:55 -070017395 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17396
Jeff Johnson295189b2012-06-20 16:38:30 -070017397 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017398 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 }
17400
17401 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 -----------------------------------------------------------------------*/
17404 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17405 {
17406 /*Association was failed by HAL - remove session*/
17407 WDI_DeleteSession(pWDICtx, pBSSSes);
17408 }
17409 else
17410 {
17411 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017412 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017413
17414 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017417 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017419 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017420 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017421 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17423
Jeff Johnsone7245742012-09-05 17:12:55 -070017424 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017425 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17426 }
17427
17428 /*Association no longer in progress */
17429 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17430
17431 /*Association no longer in progress - prepare pending assoc for processing*/
17432 WDI_DequeueAssocRequest(pWDICtx);
17433
17434 wpalMutexRelease(&pWDICtx->wptMutex);
17435
17436 /*Notify UMAC*/
17437 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17438
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017440}/*WDI_ProcessPostAssocRsp*/
17441
17442/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017445
17446 @param pWDICtx: pointer to the WLAN DAL context
17447 pEventData: pointer to the event information structure
17448
Jeff Johnson295189b2012-06-20 16:38:30 -070017449 @see
17450 @return Result of the function call
17451*/
17452WDI_Status
17453WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017454(
Jeff Johnson295189b2012-06-20 16:38:30 -070017455 WDI_ControlBlockType* pWDICtx,
17456 WDI_EventInfoType* pEventData
17457)
17458{
17459 WDI_DelSTARspParamsType wdiDelSTARsp;
17460 WDI_DelSTARspCb wdiDelSTARspCb;
17461 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017462 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17464
17465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017467 -------------------------------------------------------------------------*/
17468 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17469 ( NULL == pEventData->pEventData))
17470 {
17471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017475 }
17476
17477 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17478
17479 /*-------------------------------------------------------------------------
17480 Extract response and send it to UMAC
17481 -------------------------------------------------------------------------*/
17482 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017483 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017484 sizeof(halDelStaRspMsg.delStaRspParams));
17485
17486 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017487 wdiDelSTARsp.wdiStatus =
17488 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017489
17490 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17491
17492 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17493 if(staType == WDI_STA_ENTRY_SELF)
17494 {
17495 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17496
17497 /* At this point add the self-STA */
17498
17499 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17500 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17501 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17502
17503#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17504#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17505
17506 //all DPU indices are the same for self STA
17507 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17508 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17509 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17510 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17511 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17512 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017513
17514 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017515 }
17516 else
17517 {
17518 //Delete the station in the table
17519 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17520 }
17521
17522 /*Notify UMAC*/
17523 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17524
Jeff Johnsone7245742012-09-05 17:12:55 -070017525 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017526}/*WDI_ProcessDelSTARsp*/
17527
17528
17529/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017530 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017531==========================================================================*/
17532
17533/**
17534 @brief Process Set BSS Key Rsp function (called when a response
17535 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017536
17537 @param pWDICtx: pointer to the WLAN DAL context
17538 pEventData: pointer to the event information structure
17539
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 @see
17541 @return Result of the function call
17542*/
17543WDI_Status
17544WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017545(
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 WDI_ControlBlockType* pWDICtx,
17547 WDI_EventInfoType* pEventData
17548)
17549{
17550 WDI_Status wdiStatus;
17551 eHalStatus halStatus;
17552 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17554
17555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017557 -------------------------------------------------------------------------*/
17558 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17559 ( NULL == pEventData->pEventData))
17560 {
17561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017565 }
17566
17567 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17568
17569 /*-------------------------------------------------------------------------
17570 Extract response and send it to UMAC
17571 -------------------------------------------------------------------------*/
17572 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017573 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017574
17575 if ( eHAL_STATUS_SUCCESS != halStatus )
17576 {
17577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17578 "Set BSS Key failed with status %s (%d)",
17579 WDI_getHALStatusMsgString(halStatus),
17580 halStatus);
17581 /* send the status to UMAC, don't return from here*/
17582 }
17583
17584 /*Notify UMAC*/
17585 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17586
Jeff Johnsone7245742012-09-05 17:12:55 -070017587 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017588}/*WDI_ProcessSetBssKeyRsp*/
17589
17590/**
17591 @brief Process Remove BSS Key Rsp function (called when a response
17592 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017593
17594 @param pWDICtx: pointer to the WLAN DAL context
17595 pEventData: pointer to the event information structure
17596
Jeff Johnson295189b2012-06-20 16:38:30 -070017597 @see
17598 @return Result of the function call
17599*/
17600WDI_Status
17601WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017602(
Jeff Johnson295189b2012-06-20 16:38:30 -070017603 WDI_ControlBlockType* pWDICtx,
17604 WDI_EventInfoType* pEventData
17605)
17606{
17607 WDI_Status wdiStatus;
17608 eHalStatus halStatus;
17609 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17611
17612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017613 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017614 -------------------------------------------------------------------------*/
17615 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17616 ( NULL == pEventData->pEventData))
17617 {
17618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017622 }
17623
17624 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17625
17626 /*-------------------------------------------------------------------------
17627 Extract response and send it to UMAC
17628 -------------------------------------------------------------------------*/
17629 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017630 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017631
17632 if ( eHAL_STATUS_SUCCESS != halStatus )
17633 {
17634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17635 "Remove BSS Key failed with status %s (%d )",
17636 WDI_getHALStatusMsgString(halStatus),
17637 halStatus);
17638 /* send the status to UMAC, don't return from here*/
17639 }
17640
17641 /*Notify UMAC*/
17642 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17643
Jeff Johnsone7245742012-09-05 17:12:55 -070017644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017645}/*WDI_ProcessSetBssKeyRsp*/
17646
17647
17648/**
17649 @brief Process Set STA Key Rsp function (called when a response
17650 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017651
17652 @param pWDICtx: pointer to the WLAN DAL context
17653 pEventData: pointer to the event information structure
17654
Jeff Johnson295189b2012-06-20 16:38:30 -070017655 @see
17656 @return Result of the function call
17657*/
17658WDI_Status
17659WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017660(
Jeff Johnson295189b2012-06-20 16:38:30 -070017661 WDI_ControlBlockType* pWDICtx,
17662 WDI_EventInfoType* pEventData
17663)
17664{
17665 WDI_Status wdiStatus;
17666 eHalStatus halStatus;
17667 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17669
17670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017672 -------------------------------------------------------------------------*/
17673 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17674 ( NULL == pEventData->pEventData))
17675 {
17676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017680 }
17681
17682 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17683
17684 /*-------------------------------------------------------------------------
17685 Extract response and send it to UMAC
17686 -------------------------------------------------------------------------*/
17687 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017688 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017689
17690 if ( eHAL_STATUS_SUCCESS != halStatus )
17691 {
17692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17693 "Set STA Key failed with status %s (%d)",
17694 WDI_getHALStatusMsgString(halStatus),
17695 halStatus);
17696 /* send the status to UMAC, don't return from here*/
17697 }
17698
17699 /*Notify UMAC*/
17700 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17701
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017703}/*WDI_ProcessSetSTAKeyRsp*/
17704
17705/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017706 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017707 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017708
17709 @param pWDICtx: pointer to the WLAN DAL context
17710 pEventData: pointer to the event information structure
17711
Jeff Johnson295189b2012-06-20 16:38:30 -070017712 @see
17713 @return Result of the function call
17714*/
17715WDI_Status
17716WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017717(
Jeff Johnson295189b2012-06-20 16:38:30 -070017718 WDI_ControlBlockType* pWDICtx,
17719 WDI_EventInfoType* pEventData
17720)
17721{
17722 WDI_Status wdiStatus;
17723 eHalStatus halStatus;
17724 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17726
17727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017729 -------------------------------------------------------------------------*/
17730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17731 ( NULL == pEventData->pEventData))
17732 {
17733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 }
17738
17739 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17740
17741 /*-------------------------------------------------------------------------
17742 Extract response and send it to UMAC
17743 -------------------------------------------------------------------------*/
17744 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017745 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017746
17747 if ( eHAL_STATUS_SUCCESS != halStatus )
17748 {
17749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17750 "Remove STA Key failed with status %s (%d)",
17751 WDI_getHALStatusMsgString(halStatus),
17752 halStatus);
17753 /* send the status to UMAC, don't return from here*/
17754 }
17755
17756 /*Notify UMAC*/
17757 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17758
Jeff Johnsone7245742012-09-05 17:12:55 -070017759 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017760}/*WDI_ProcessRemoveStaKeyRsp*/
17761
17762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017763 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017765
17766 @param pWDICtx: pointer to the WLAN DAL context
17767 pEventData: pointer to the event information structure
17768
Jeff Johnson295189b2012-06-20 16:38:30 -070017769 @see
17770 @return Result of the function call
17771*/
17772WDI_Status
17773WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017774(
Jeff Johnson295189b2012-06-20 16:38:30 -070017775 WDI_ControlBlockType* pWDICtx,
17776 WDI_EventInfoType* pEventData
17777)
17778{
17779 WDI_Status wdiStatus;
17780 eHalStatus halStatus;
17781 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17783
17784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017786 -------------------------------------------------------------------------*/
17787 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17788 ( NULL == pEventData->pEventData))
17789 {
17790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017794 }
17795
17796 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17797
17798 /*-------------------------------------------------------------------------
17799 Extract response and send it to UMAC
17800 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017801 wpalMemoryCopy( &halStatus,
17802 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017803 sizeof(halStatus));
17804
Jeff Johnsone7245742012-09-05 17:12:55 -070017805 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017806
17807 if ( eHAL_STATUS_SUCCESS != halStatus )
17808 {
17809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17810 "Set STA Key failed with status %s (%d)",
17811 WDI_getHALStatusMsgString(halStatus),
17812 halStatus);
17813 /* send the status to UMAC, don't return from here*/
17814 }
17815
17816 /*Notify UMAC*/
17817 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17818
Jeff Johnsone7245742012-09-05 17:12:55 -070017819 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017820}/*WDI_ProcessSetSTABcastKeyRsp*/
17821
17822/**
17823 @brief Process Remove STA Bcast Key Rsp function (called when a
17824 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017825
17826 @param pWDICtx: pointer to the WLAN DAL context
17827 pEventData: pointer to the event information structure
17828
Jeff Johnson295189b2012-06-20 16:38:30 -070017829 @see
17830 @return Result of the function call
17831*/
17832WDI_Status
17833WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017834(
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 WDI_ControlBlockType* pWDICtx,
17836 WDI_EventInfoType* pEventData
17837)
17838{
17839 WDI_Status wdiStatus;
17840 eHalStatus halStatus;
17841 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17843
17844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017845 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017846 -------------------------------------------------------------------------*/
17847 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17848 ( NULL == pEventData->pEventData))
17849 {
17850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017851 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 }
17855
17856 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17857
17858 /*-------------------------------------------------------------------------
17859 Extract response and send it to UMAC
17860 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017861 wpalMemoryCopy( &halStatus,
17862 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017863 sizeof(halStatus));
17864
Jeff Johnsone7245742012-09-05 17:12:55 -070017865 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017866
17867 if ( eHAL_STATUS_SUCCESS != halStatus )
17868 {
17869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17870 "Remove STA Key failed with status %s (%d)",
17871 WDI_getHALStatusMsgString(halStatus),
17872 halStatus);
17873 /* send the status to UMAC, don't return from here*/
17874 }
17875
17876 /*Notify UMAC*/
17877 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17878
Jeff Johnsone7245742012-09-05 17:12:55 -070017879 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017880}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17881
17882
17883/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017884 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017885==========================================================================*/
17886
17887/**
17888 @brief Process Add TSpec Rsp function (called when a response
17889 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017890
17891 @param pWDICtx: pointer to the WLAN DAL context
17892 pEventData: pointer to the event information structure
17893
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 @see
17895 @return Result of the function call
17896*/
17897WDI_Status
17898WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017899(
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 WDI_ControlBlockType* pWDICtx,
17901 WDI_EventInfoType* pEventData
17902)
17903{
17904 WDI_Status wdiStatus;
17905 eHalStatus halStatus;
17906 WDI_AddTsRspCb wdiAddTsRspCb;
17907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17908
17909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 -------------------------------------------------------------------------*/
17912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17913 ( NULL == pEventData->pEventData))
17914 {
17915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 }
17920
17921 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17922
17923 /*-------------------------------------------------------------------------
17924 Extract response and send it to UMAC
17925 -------------------------------------------------------------------------*/
17926 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017927 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017928
17929 /*Notify UMAC*/
17930 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17931
Jeff Johnsone7245742012-09-05 17:12:55 -070017932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017933}/*WDI_ProcessAddTSpecRsp*/
17934
17935
Sunil Duttbd736ed2014-05-26 21:19:41 +053017936
17937#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17938
17939WDI_Status
17940WDI_ProcessLLStatsSetRsp
17941(
17942 WDI_ControlBlockType* pWDICtx,
17943 WDI_EventInfoType* pEventData
17944)
17945{
17946 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17947
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053017948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053017949 "%s: Enter ", __func__);
17950 /*-------------------------------------------------------------------------
17951 Sanity check
17952 -------------------------------------------------------------------------*/
17953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17954 ( NULL == pEventData->pEventData))
17955 {
17956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17957 "%s: Invalid parameters", __func__);
17958 WDI_ASSERT(0);
17959 return WDI_STATUS_E_FAILURE;
17960 }
17961
17962 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17963
17964 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17965
17966 return WDI_STATUS_SUCCESS;
17967}
17968
17969WDI_Status
17970WDI_ProcessLLStatsGetRsp
17971(
17972 WDI_ControlBlockType* pWDICtx,
17973 WDI_EventInfoType* pEventData
17974)
17975{
17976 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17977
17978 /*-------------------------------------------------------------------------
17979 Sanity check
17980 -------------------------------------------------------------------------*/
17981 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17982 ( NULL == pEventData->pEventData))
17983 {
17984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17985 "%s: Invalid parameters", __func__);
17986 WDI_ASSERT(0);
17987 return WDI_STATUS_E_FAILURE;
17988 }
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053017989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053017990 "%s: Enter ", __func__);
17991
17992 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17993
17994 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17995
17996 return WDI_STATUS_SUCCESS;
17997}
17998
17999WDI_Status
18000WDI_ProcessLLStatsClearRsp
18001(
18002 WDI_ControlBlockType* pWDICtx,
18003 WDI_EventInfoType* pEventData
18004)
18005{
18006 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18007
18008 /*-------------------------------------------------------------------------
18009 Sanity check
18010 -------------------------------------------------------------------------*/
18011 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18012 ( NULL == pEventData->pEventData))
18013 {
18014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18015 "%s: Invalid parameters", __func__);
18016 WDI_ASSERT(0);
18017 return WDI_STATUS_E_FAILURE;
18018 }
18019
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018021 "%s: CLEAR RESPONSE CALL BACK", __func__);
18022 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18023
18024 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18025
18026 return WDI_STATUS_SUCCESS;
18027}
18028#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18029
Jeff Johnson295189b2012-06-20 16:38:30 -070018030/**
18031 @brief Process Del TSpec Rsp function (called when a response
18032 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018033
18034 @param pWDICtx: pointer to the WLAN DAL context
18035 pEventData: pointer to the event information structure
18036
Jeff Johnson295189b2012-06-20 16:38:30 -070018037 @see
18038 @return Result of the function call
18039*/
18040WDI_Status
18041WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018042(
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 WDI_ControlBlockType* pWDICtx,
18044 WDI_EventInfoType* pEventData
18045)
18046{
18047 WDI_Status wdiStatus;
18048 eHalStatus halStatus;
18049 WDI_DelTsRspCb wdiDelTsRspCb;
18050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18051
18052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018054 -------------------------------------------------------------------------*/
18055 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18056 ( NULL == pEventData->pEventData))
18057 {
18058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018059 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018060 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018062 }
18063
18064 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18065
18066 /*-------------------------------------------------------------------------
18067 Extract response and send it to UMAC
18068 -------------------------------------------------------------------------*/
18069 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018070 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018071
18072 /*Notify UMAC*/
18073 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18074
Jeff Johnsone7245742012-09-05 17:12:55 -070018075 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018076}/*WDI_ProcessDelTSpecRsp*/
18077
18078/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018079 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018080 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018081
18082 @param pWDICtx: pointer to the WLAN DAL context
18083 pEventData: pointer to the event information structure
18084
Jeff Johnson295189b2012-06-20 16:38:30 -070018085 @see
18086 @return Result of the function call
18087*/
18088WDI_Status
18089WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018090(
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 WDI_ControlBlockType* pWDICtx,
18092 WDI_EventInfoType* pEventData
18093)
18094{
18095 WDI_Status wdiStatus;
18096 eHalStatus halStatus;
18097 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18099
18100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018101 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018102 -------------------------------------------------------------------------*/
18103 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18104 ( NULL == pEventData->pEventData))
18105 {
18106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 }
18111
18112 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18113
18114 /*-------------------------------------------------------------------------
18115 Extract response and send it to UMAC
18116 -------------------------------------------------------------------------*/
18117 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018118 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018119
18120 /*Notify UMAC*/
18121 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18122
Jeff Johnsone7245742012-09-05 17:12:55 -070018123 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018124}/*WDI_ProcessUpdateEDCAParamsRsp*/
18125
18126
18127/**
18128 @brief Process Add BA Rsp function (called when a response
18129 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018130
18131 @param pWDICtx: pointer to the WLAN DAL context
18132 pEventData: pointer to the event information structure
18133
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 @see
18135 @return Result of the function call
18136*/
18137WDI_Status
18138WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018139(
Jeff Johnson295189b2012-06-20 16:38:30 -070018140 WDI_ControlBlockType* pWDICtx,
18141 WDI_EventInfoType* pEventData
18142)
18143{
18144 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
18145
18146 tAddBASessionRspParams halBASessionRsp;
18147 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18148
Jeff Johnsone7245742012-09-05 17:12:55 -070018149
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18151
18152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018153 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018154 -------------------------------------------------------------------------*/
18155 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18156 ( NULL == pEventData->pEventData))
18157 {
18158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 }
18163
18164 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18165
18166 /*-------------------------------------------------------------------------
18167 Extract response and send it to UMAC
18168 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018169 wpalMemoryCopy( &halBASessionRsp,
18170 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 sizeof(halBASessionRsp));
18172
18173 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18174
Jeff Johnson43971f52012-07-17 12:26:56 -070018175 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 {
18177 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18178 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18179 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18180 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18181 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18182 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18183 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18184 }
18185
18186 /*Notify UMAC*/
18187 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18188
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018190}/*WDI_ProcessAddSessionBARsp*/
18191
18192
18193/**
18194 @brief Process Del BA Rsp function (called when a response
18195 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018196
18197 @param pWDICtx: pointer to the WLAN DAL context
18198 pEventData: pointer to the event information structure
18199
Jeff Johnson295189b2012-06-20 16:38:30 -070018200 @see
18201 @return Result of the function call
18202*/
18203WDI_Status
18204WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018205(
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 WDI_ControlBlockType* pWDICtx,
18207 WDI_EventInfoType* pEventData
18208)
18209{
18210 WDI_Status wdiStatus;
18211 eHalStatus halStatus;
18212 WDI_DelBARspCb wdiDelBARspCb;
18213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18214
18215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018216 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 -------------------------------------------------------------------------*/
18218 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18219 ( NULL == pEventData->pEventData))
18220 {
18221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018222 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018225 }
18226
18227 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18228
18229 /*-------------------------------------------------------------------------
18230 Extract response and send it to UMAC
18231 -------------------------------------------------------------------------*/
18232 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018233 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018234
18235 if ( eHAL_STATUS_SUCCESS == halStatus )
18236 {
18237 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18238 }
18239
18240 /*Notify UMAC*/
18241 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18242
Jeff Johnsone7245742012-09-05 17:12:55 -070018243 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018244}/*WDI_ProcessDelBARsp*/
18245
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018246#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018247/**
18248 @brief Process TSM Stats Rsp function (called when a response
18249 is being received over the bus from HAL)
18250
18251 @param pWDICtx: pointer to the WLAN DAL context
18252 pEventData: pointer to the event information structure
18253
18254 @see
18255 @return Result of the function call
18256*/
18257WDI_Status
18258WDI_ProcessTsmStatsRsp
18259(
18260 WDI_ControlBlockType* pWDICtx,
18261 WDI_EventInfoType* pEventData
18262)
18263{
18264 WDI_TsmRspCb wdiTsmStatsRspCb;
18265 tTsmStatsRspMsg halTsmStatsRspMsg;
18266 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18268
18269 /*-------------------------------------------------------------------------
18270 Sanity check
18271 -------------------------------------------------------------------------*/
18272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18273 ( NULL == pEventData->pEventData))
18274 {
18275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018277 WDI_ASSERT(0);
18278 return WDI_STATUS_E_FAILURE;
18279 }
18280
18281 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18282
18283 /*-------------------------------------------------------------------------
18284 Unpack HAL Response Message - the header was already extracted by the
18285 main Response Handling procedure
18286 -------------------------------------------------------------------------*/
18287 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18288 pEventData->pEventData,
18289 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18290
18291 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18292 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18293 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18294 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18295 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18296 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18297 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18298 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18299 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18300 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18301 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18302 halTsmStatsRspMsg.tsmStatsRspParams.status);
18303
18304 /*Notify UMAC*/
18305 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18306
18307 return WDI_STATUS_SUCCESS;
18308}/*WDI_ProcessTsmStatsRsp*/
18309
18310#endif
18311
18312
18313
18314/**
18315 @brief Process Flush AC Rsp function (called when a response
18316 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018317
18318 @param pWDICtx: pointer to the WLAN DAL context
18319 pEventData: pointer to the event information structure
18320
Jeff Johnson295189b2012-06-20 16:38:30 -070018321 @see
18322 @return Result of the function call
18323*/
18324WDI_Status
18325WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018326(
Jeff Johnson295189b2012-06-20 16:38:30 -070018327 WDI_ControlBlockType* pWDICtx,
18328 WDI_EventInfoType* pEventData
18329)
18330{
18331 WDI_Status wdiStatus;
18332 eHalStatus halStatus;
18333 WDI_FlushAcRspCb wdiFlushAcRspCb;
18334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18335
18336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018337 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018338 -------------------------------------------------------------------------*/
18339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18340 ( NULL == pEventData->pEventData))
18341 {
18342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018343 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018344 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018346 }
18347
18348 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18349
18350 /*-------------------------------------------------------------------------
18351 Extract response and send it to UMAC
18352 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018353 wpalMemoryCopy( &halStatus,
18354 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018355 sizeof(halStatus));
18356
Jeff Johnsone7245742012-09-05 17:12:55 -070018357 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018358
18359 /*Notify UMAC*/
18360 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18361
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018363}/*WDI_ProcessFlushAcRsp*/
18364
18365/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018366 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018367 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018368
18369 @param pWDICtx: pointer to the WLAN DAL context
18370 pEventData: pointer to the event information structure
18371
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 @see
18373 @return Result of the function call
18374*/
18375WDI_Status
18376WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018377(
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 WDI_ControlBlockType* pWDICtx,
18379 WDI_EventInfoType* pEventData
18380)
18381{
18382 WDI_Status wdiStatus;
18383 eHalStatus halStatus;
18384 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18386
18387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018389 -------------------------------------------------------------------------*/
18390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18391 ( NULL == pEventData->pEventData))
18392 {
18393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 }
18398
18399 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18400
18401 /*-------------------------------------------------------------------------
18402 Extract response and send it to UMAC
18403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 wpalMemoryCopy( &halStatus,
18405 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018406 sizeof(halStatus));
18407
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018409
18410 /*Notify UMAC*/
18411 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18412
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018414}/*WDI_ProcessBtAmpEventRsp*/
18415
18416
18417/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018418 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018419 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018420
18421 @param pWDICtx: pointer to the WLAN DAL context
18422 pEventData: pointer to the event information structure
18423
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 @see
18425 @return Result of the function call
18426*/
18427WDI_Status
18428WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018429(
Jeff Johnson295189b2012-06-20 16:38:30 -070018430 WDI_ControlBlockType* pWDICtx,
18431 WDI_EventInfoType* pEventData
18432)
18433{
18434 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18435 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18436 tAddStaSelfRspMsg halAddStaSelfRsp;
18437 WDI_AddStaParams wdiAddSTAParam = {0};
18438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18439
18440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018442 -------------------------------------------------------------------------*/
18443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18444 ( NULL == pEventData->pEventData))
18445 {
18446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018450 }
18451
Jeff Johnsone7245742012-09-05 17:12:55 -070018452 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018453 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18454
18455 /*-------------------------------------------------------------------------
18456 Extract response and send it to UMAC
18457 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018458 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18459 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018460 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18461
18462
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 wdiAddSTASelfParams.wdiStatus =
18464 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018465
Jeff Johnsone7245742012-09-05 17:12:55 -070018466 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018468 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018470 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018471 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18472
18473 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18474 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18475 WDI_MAC_ADDR_LEN);
18476
18477
18478#ifdef HAL_SELF_STA_PER_BSS
18479
18480 /* At this point add the self-STA */
18481
18482 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18483 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18484 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18485
18486 //all DPU indices are the same for self STA
18487
18488 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018489 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18491 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18492 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18493 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18494 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18495
18496 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18497 WDI_MAC_ADDR_LEN);
18498
18499 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18500 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18501
Jeff Johnsone7245742012-09-05 17:12:55 -070018502 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018503 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18504 {
18505 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18506 }
18507#endif
18508
18509 /*Notify UMAC*/
18510 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18511
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018513}/*WDI_ProcessAddSTASelfRsp*/
18514
18515
18516
18517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018518 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018520
18521 @param pWDICtx: pointer to the WLAN DAL context
18522 pEventData: pointer to the event information structure
18523
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 @see
18525 @return Result of the function call
18526*/
18527WDI_Status
18528WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018529(
Jeff Johnson295189b2012-06-20 16:38:30 -070018530 WDI_ControlBlockType* pWDICtx,
18531 WDI_EventInfoType* pEventData
18532)
18533{
18534 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18535 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18536 tDelStaSelfRspParams delStaSelfRspParams;
18537 wpt_uint8 ucStaIdx;
18538
18539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18540
18541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 -------------------------------------------------------------------------*/
18544 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18545 ( NULL == pEventData->pEventData))
18546 {
18547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018551 }
18552
18553 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18554
18555 /*-------------------------------------------------------------------------
18556 Extract response and send it to UMAC
18557 -------------------------------------------------------------------------*/
18558
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 (wpt_uint8*)pEventData->pEventData,
18561 sizeof(tDelStaSelfRspParams));
18562
Jeff Johnsone7245742012-09-05 17:12:55 -070018563 wdiDelStaSelfRspParams.wdiStatus =
18564 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018565
Jeff Johnsone7245742012-09-05 17:12:55 -070018566 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018567 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18568 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18569 {
18570 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018571 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018572 delStaSelfRspParams.selfMacAddr,
18573 &ucStaIdx);
18574 if(WDI_STATUS_E_FAILURE == wdiStatus)
18575 {
18576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018577 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018580 }
18581 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18582 }
18583
18584 /*Notify UMAC*/
18585 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18586
18587 return WDI_STATUS_SUCCESS;
18588}
18589
Jeff Johnsone7245742012-09-05 17:12:55 -070018590#ifdef FEATURE_OEM_DATA_SUPPORT
18591/**
18592 @brief Start Oem Data Rsp function (called when a
18593 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018594
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 @param pWDICtx: pointer to the WLAN DAL context
18596 pEventData: pointer to the event information structure
18597
18598 @see
18599 @return Result of the function call
18600*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018601
18602WDI_Status
18603WDI_ProcessStartOemDataRsp
18604(
18605 WDI_ControlBlockType* pWDICtx,
18606 WDI_EventInfoType* pEventData
18607)
18608{
18609 WDI_oemDataRspCb wdiOemDataRspCb;
18610 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18611 tStartOemDataRspParams* halStartOemDataRspParams;
18612
18613 /*-------------------------------------------------------------------------
18614 Sanity check
18615 -------------------------------------------------------------------------*/
18616 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18617 ( NULL == pEventData->pEventData))
18618 {
18619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018620 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018621 WDI_ASSERT(0);
18622 return WDI_STATUS_E_FAILURE;
18623 }
18624
18625 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18626
18627 /*-------------------------------------------------------------------------
18628 Extract response and send it to UMAC
18629 -------------------------------------------------------------------------*/
18630 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18631
18632
18633 //It is the responsibility of the application code to check for failure
18634 //conditions!
18635
18636 //Allocate memory for WDI OEM DATA RSP structure
18637 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18638
18639 if(NULL == wdiOemDataRspParams)
18640 {
18641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018642 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018643 pWDICtx, pEventData, pEventData->pEventData);
18644 WDI_ASSERT(0);
18645 return WDI_STATUS_E_FAILURE;
18646 }
18647
18648 /* Populate WDI structure members */
18649 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18650
18651 /*Notify UMAC*/
18652 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18653
18654 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18655 wpalMemoryFree(wdiOemDataRspParams);
18656
18657 return WDI_STATUS_SUCCESS;
18658}/*WDI_PrcoessStartOemDataRsp*/
18659#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018660
18661/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018662 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018663===========================================================================*/
18664
18665/**
18666 @brief Process Channel Switch Rsp function (called when a response
18667 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018668
18669 @param pWDICtx: pointer to the WLAN DAL context
18670 pEventData: pointer to the event information structure
18671
Jeff Johnson295189b2012-06-20 16:38:30 -070018672 @see
18673 @return Result of the function call
18674*/
18675WDI_Status
18676WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018677(
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 WDI_ControlBlockType* pWDICtx,
18679 WDI_EventInfoType* pEventData
18680)
18681{
18682 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18683 WDI_SwitchChRspCb wdiChSwitchRspCb;
18684 tSwitchChannelRspParams halSwitchChannelRsp;
18685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18686
18687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018689 -------------------------------------------------------------------------*/
18690 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18691 ( NULL == pEventData->pEventData))
18692 {
18693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018697 }
18698
18699 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18700
18701 /*-------------------------------------------------------------------------
18702 Extract response and send it to UMAC
18703 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 (wpt_uint8*)pEventData->pEventData,
18706 sizeof(halSwitchChannelRsp));
18707
Jeff Johnsone7245742012-09-05 17:12:55 -070018708 wdiSwitchChRsp.wdiStatus =
18709 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18711
18712#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018713 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018714#endif
18715
18716 /*Notify UMAC*/
18717 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18718
Jeff Johnsone7245742012-09-05 17:12:55 -070018719 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018720}/*WDI_ProcessChannelSwitchRsp*/
18721
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018722/**
18723 @brief Process Channel Switch Rsp function (called when a response
18724 is being received over the bus from HAL against
18725 WDI_ProcessChannelSwitchReq_V1)
18726
18727 @param pWDICtx: pointer to the WLAN DAL context
18728 pEventData: pointer to the event information structure
18729
18730 @see
18731 @return Result of the function call
18732*/
18733
18734WDI_Status
18735WDI_ProcessChannelSwitchRsp_V1
18736(
18737 WDI_ControlBlockType* pWDICtx,
18738 WDI_EventInfoType* pEventData
18739)
18740{
18741 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18742 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18743 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18745
18746 /*-------------------------------------------------------------------------
18747 Sanity check
18748 -------------------------------------------------------------------------*/
18749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18750 ( NULL == pEventData->pEventData))
18751 {
18752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18753 "%s: Invalid parameters", __func__);
18754 WDI_ASSERT(0);
18755 return WDI_STATUS_E_FAILURE;
18756 }
18757
18758 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18759
18760 /*-------------------------------------------------------------------------
18761 Extract response and send it to UMAC
18762 -------------------------------------------------------------------------*/
18763 wpalMemoryCopy( &halSwitchChannelRsp,
18764 (wpt_uint8*)pEventData->pEventData,
18765 sizeof(halSwitchChannelRsp));
18766
18767 wdiSwitchChRsp.wdiStatus =
18768 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18769 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18770
18771#ifdef WLAN_FEATURE_VOWIFI
18772 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18773#endif
18774
18775 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18776 if (( NULL == wdiChSwitchRspCb ) )
18777 {
18778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18779 "%s: ### Call back function is null", __func__);
18780 WDI_ASSERT(0);
18781 return WDI_STATUS_E_FAILURE;
18782 }
18783 /*Notify UMAC*/
18784 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18785
18786 return WDI_STATUS_SUCCESS;
18787}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018788
18789/**
18790 @brief Process Config STA Rsp function (called when a response
18791 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018792
18793 @param pWDICtx: pointer to the WLAN DAL context
18794 pEventData: pointer to the event information structure
18795
Jeff Johnson295189b2012-06-20 16:38:30 -070018796 @see
18797 @return Result of the function call
18798*/
18799WDI_Status
18800WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018801(
Jeff Johnson295189b2012-06-20 16:38:30 -070018802 WDI_ControlBlockType* pWDICtx,
18803 WDI_EventInfoType* pEventData
18804)
18805{
18806 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18807 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18808 WDI_AddStaParams wdiAddSTAParam;
18809
18810 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018811 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018812
Jeff Johnsone7245742012-09-05 17:12:55 -070018813 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18815
18816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 -------------------------------------------------------------------------*/
18819 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18820 ( NULL == pEventData->pEventData))
18821 {
18822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 }
18827
18828 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18829
18830 /*-------------------------------------------------------------------------
18831 Extract response and send it to UMAC
18832 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018833 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18834 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018835 sizeof(halConfigStaRsp.configStaRspParams));
18836
18837
18838 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18839 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18840 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18841 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18842 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18843
18844 /* MAC Address of STA - take from cache as it does not come back in the
18845 response*/
18846 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018847 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018849
18850 wdiCfgSTAParams.wdiStatus =
18851 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018852
18853 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18854 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18855 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18856
18857 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18858 {
18859 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18860 {
18861 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018862 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018863 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18864 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018865
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018867 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018869 wdiAddSTAParam.ucHTCapable =
18870 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18871 wdiAddSTAParam.ucStaType =
18872 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018873 wdiAddSTAParam.ucRmfEnabled =
18874 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018875
Jeff Johnson295189b2012-06-20 16:38:30 -070018876 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018877 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18878 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018879 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018880
18881 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18882 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18883 WDI_MAC_ADDR_LEN);
18884
18885 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18886 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18887 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018888
18889 if ( NULL == pBSSSes )
18890 {
18891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18892 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018893
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018895 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018896 }
18897
18898 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018899 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018901 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018902 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018903 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018904 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018905 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018906 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018907 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018908
Jeff Johnson295189b2012-06-20 16:38:30 -070018909 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18910 }
18911 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18912 {
18913 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18914
Jeff Johnsone7245742012-09-05 17:12:55 -070018915 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018917 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018918 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018919 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018920 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018921 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018922 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018923 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018924 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018925 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018927 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018928 halConfigStaRsp.configStaRspParams.ucUcastSig;
18929 }
18930 }
18931
18932 /*Notify UMAC*/
18933 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18934
Jeff Johnsone7245742012-09-05 17:12:55 -070018935 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018936}/*WDI_ProcessConfigStaRsp*/
18937
18938
18939/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018940 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018941 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018942
18943 @param pWDICtx: pointer to the WLAN DAL context
18944 pEventData: pointer to the event information structure
18945
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 @see
18947 @return Result of the function call
18948*/
18949WDI_Status
18950WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018951(
Jeff Johnson295189b2012-06-20 16:38:30 -070018952 WDI_ControlBlockType* pWDICtx,
18953 WDI_EventInfoType* pEventData
18954)
18955{
18956 WDI_Status wdiStatus;
18957 eHalStatus halStatus;
18958 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18959
18960 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018961 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18963
18964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018965 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 -------------------------------------------------------------------------*/
18967 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18968 ( NULL == pEventData->pEventData))
18969 {
18970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018971 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018974 }
18975
18976 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18977
18978 wpalMutexAcquire(&pWDICtx->wptMutex);
18979
18980 /*If the link is being transitioned to idle - the BSS is to be deleted
18981 - this type of ending a session is possible when UMAC has failed an
18982 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018983 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018984 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18985 {
18986 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018987 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18990 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18991 &pBSSSes);
18992
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 /*-----------------------------------------------------------------------
18994 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018995 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018996 -----------------------------------------------------------------------*/
18997 if ( NULL == pBSSSes )
18998 {
18999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19000 "Set link response received outside association session");
19001 }
19002 else
19003 {
19004 /* For BT AMP roles no need to delete the sessions if assoc fails. There
19005 will be del BSS coming after this to stop the beaconing & cleaning up the
19006 sessions*/
19007 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19008 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19009 {
19010 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019011 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019012 -----------------------------------------------------------------------*/
19013 WDI_DeleteSession(pWDICtx, pBSSSes);
19014
19015 /*-----------------------------------------------------------------------
19016 Check to see if this association is in progress - if so disable the
19017 flag as this has ended
19018 -----------------------------------------------------------------------*/
19019 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019020 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019021 /*Association no longer in progress */
19022 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19023 /*Association no longer in progress - prepare pending assoc for processing*/
19024 WDI_DequeueAssocRequest(pWDICtx);
19025 }
19026 }
19027 }
19028 }
19029 /* If the link state has been set to POST ASSOC, reset the "association in
19030 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019031 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19033 {
19034 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19035 WDI_DequeueAssocRequest(pWDICtx);
19036 }
19037
19038 wpalMutexRelease(&pWDICtx->wptMutex);
19039
19040 /*-------------------------------------------------------------------------
19041 Extract response and send it to UMAC
19042 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019043 wpalMemoryCopy( &halStatus,
19044 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 sizeof(halStatus));
19046
Jeff Johnsone7245742012-09-05 17:12:55 -070019047 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019048
19049 /*Notify UMAC*/
19050 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19051
Jeff Johnsone7245742012-09-05 17:12:55 -070019052 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019053}/*WDI_ProcessSetLinkStateRsp*/
19054
19055/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019056 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019058
19059 @param pWDICtx: pointer to the WLAN DAL context
19060 pEventData: pointer to the event information structure
19061
Jeff Johnson295189b2012-06-20 16:38:30 -070019062 @see
19063 @return Result of the function call
19064*/
19065WDI_Status
19066WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019067(
Jeff Johnson295189b2012-06-20 16:38:30 -070019068 WDI_ControlBlockType* pWDICtx,
19069 WDI_EventInfoType* pEventData
19070)
19071{
19072 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19073 WDI_GetStatsRspCb wdiGetStatsRspCb;
19074 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019075
Jeff Johnson295189b2012-06-20 16:38:30 -070019076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19077
19078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 -------------------------------------------------------------------------*/
19081 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19082 ( NULL == pEventData->pEventData))
19083 {
19084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019088 }
19089
19090 /*-------------------------------------------------------------------------
19091 Extract response and send it to UMAC
19092 -------------------------------------------------------------------------*/
19093 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19094
19095 /*allocate the stats response buffer */
19096 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19097 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19098 + sizeof(WDI_GetStatsRspParamsType));
19099
19100 if(NULL == wdiGetStatsRsp)
19101 {
19102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019103 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 pWDICtx, pEventData, pEventData->pEventData);
19105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019107 }
19108
19109 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19110
19111 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19112 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19113 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19114 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19115 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19116 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19117
19118 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19119 wpalMemoryCopy(wdiGetStatsRsp + 1,
19120 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19121 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19122
19123 /*Notify UMAC*/
19124 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19125
19126 wpalMemoryFree(wdiGetStatsRsp);
19127
Jeff Johnsone7245742012-09-05 17:12:55 -070019128 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019129}/*WDI_ProcessGetStatsRsp*/
19130
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019131#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019132/**
19133 @brief Process Get Roam Rssi Rsp function (called when a response is
19134 being received over the bus from HAL)
19135
19136 @param pWDICtx: pointer to the WLAN DAL context
19137 pEventData: pointer to the event information structure
19138
19139 @see
19140 @return Result of the function call
19141*/
19142WDI_Status
19143WDI_ProcessGetRoamRssiRsp
19144(
19145 WDI_ControlBlockType* pWDICtx,
19146 WDI_EventInfoType* pEventData
19147)
19148{
19149 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19150 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19151 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19153
19154 /*-------------------------------------------------------------------------
19155 Sanity check
19156 -------------------------------------------------------------------------*/
19157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19158 ( NULL == pEventData->pEventData))
19159 {
19160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19161 "%s: Invalid parameters", __func__);
19162 WDI_ASSERT(0);
19163 return WDI_STATUS_E_FAILURE;
19164 }
19165
19166 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19167 if(NULL == wdiGetRoamRssiRspCb)
19168 {
19169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19170 "%s: call back function is NULL", __func__);
19171 WDI_ASSERT(0);
19172 return WDI_STATUS_E_FAILURE;
19173 }
19174
19175 /*-------------------------------------------------------------------------
19176 Extract response and send it to UMAC
19177 -------------------------------------------------------------------------*/
19178 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19179 pEventData->pEventData,
19180 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19181
19182 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19183 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19184 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19185
19186 /*Notify UMAC*/
19187 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19188
19189 return WDI_STATUS_SUCCESS;
19190}/*WDI_ProcessGetRoamRssiRsp*/
19191#endif
19192
Jeff Johnson295189b2012-06-20 16:38:30 -070019193
19194/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019195 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019197
19198 @param pWDICtx: pointer to the WLAN DAL context
19199 pEventData: pointer to the event information structure
19200
Jeff Johnson295189b2012-06-20 16:38:30 -070019201 @see
19202 @return Result of the function call
19203*/
19204WDI_Status
19205WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019206(
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 WDI_ControlBlockType* pWDICtx,
19208 WDI_EventInfoType* pEventData
19209)
19210{
19211 WDI_Status wdiStatus;
19212 eHalStatus halStatus;
19213 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19215
19216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 -------------------------------------------------------------------------*/
19219 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19220 ( NULL == pEventData->pEventData))
19221 {
19222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 }
19227
19228 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19229
19230 /*-------------------------------------------------------------------------
19231 Extract response and send it to UMAC
19232 -------------------------------------------------------------------------*/
19233 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019235
19236 /*Notify UMAC*/
19237 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19238
Jeff Johnsone7245742012-09-05 17:12:55 -070019239 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019240}/*WDI_ProcessUpdateCfgRsp*/
19241
19242
19243
19244/**
19245 @brief Process Add BA Rsp function (called when a response
19246 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019247
19248 @param pWDICtx: pointer to the WLAN DAL context
19249 pEventData: pointer to the event information structure
19250
Jeff Johnson295189b2012-06-20 16:38:30 -070019251 @see
19252 @return Result of the function call
19253*/
19254WDI_Status
19255WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019256(
Jeff Johnson295189b2012-06-20 16:38:30 -070019257 WDI_ControlBlockType* pWDICtx,
19258 WDI_EventInfoType* pEventData
19259)
19260{
19261 WDI_AddBARspCb wdiAddBARspCb;
19262
19263 tAddBARspParams halAddBARsp;
19264 WDI_AddBARspinfoType wdiAddBARsp;
19265
19266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19267
19268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019270 -------------------------------------------------------------------------*/
19271 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19272 ( NULL == pEventData->pEventData))
19273 {
19274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019278 }
19279
19280 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19281
19282 /*-------------------------------------------------------------------------
19283 Extract response and send it to UMAC
19284 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019285 wpalMemoryCopy( &halAddBARsp,
19286 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 sizeof(halAddBARsp));
19288
19289 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19290
Jeff Johnson43971f52012-07-17 12:26:56 -070019291 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019292 {
19293 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19294 }
19295
19296 /*Notify UMAC*/
19297 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19298
Jeff Johnsone7245742012-09-05 17:12:55 -070019299 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019300}/*WDI_ProcessAddSessionBARsp*/
19301
19302/**
19303 @brief Process Add BA Rsp function (called when a response
19304 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019305
19306 @param pWDICtx: pointer to the WLAN DAL context
19307 pEventData: pointer to the event information structure
19308
Jeff Johnson295189b2012-06-20 16:38:30 -070019309 @see
19310 @return Result of the function call
19311*/
19312WDI_Status
19313WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019314(
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 WDI_ControlBlockType* pWDICtx,
19316 WDI_EventInfoType* pEventData
19317)
19318{
19319 WDI_TriggerBARspCb wdiTriggerBARspCb;
19320
19321 tTriggerBARspParams* halTriggerBARsp;
19322 tTriggerBaRspCandidate* halBaCandidate;
19323 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19324 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19325 wpt_uint16 index;
19326 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019327 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19329
19330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019331 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019332 -------------------------------------------------------------------------*/
19333 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19334 ( NULL == pEventData->pEventData))
19335 {
19336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019337 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019339 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019340 }
19341
19342 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19343
19344 /*-------------------------------------------------------------------------
19345 Extract response and send it to UMAC
19346 -------------------------------------------------------------------------*/
19347 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19348
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019349 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19350
19351 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19352 {
19353 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019354 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019355 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019356
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019357 if(NULL == wdiTriggerBARsp)
19358 {
19359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019360 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019361 pWDICtx, pEventData, pEventData->pEventData);
19362 WDI_ASSERT(0);
19363 return WDI_STATUS_E_FAILURE;
19364 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019365
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019366 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19367
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019369 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19371
19372 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19373 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19374
19375 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19376 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019377 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19379 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19380 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019381 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019383 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019384 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19385 }
19386 wdiTriggerBARspCandidate++;
19387 halBaCandidate++;
19388 }
19389 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019390 else
19391 {
19392 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19393
19394 if(NULL == wdiTriggerBARsp)
19395 {
19396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019397 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019398 pWDICtx, pEventData, pEventData->pEventData);
19399 WDI_ASSERT(0);
19400 return WDI_STATUS_E_FAILURE;
19401 }
19402
19403 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19404
19405 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019406
19407 /*Notify UMAC*/
19408 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19409
19410 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019411 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019412}/*WDI_ProcessAddSessionBARsp*/
19413
19414/**
19415 @brief Process Update Beacon Params Rsp function (called when a response
19416 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019417
19418 @param pWDICtx: pointer to the WLAN DAL context
19419 pEventData: pointer to the event information structure
19420
Jeff Johnson295189b2012-06-20 16:38:30 -070019421 @see
19422 @return Result of the function call
19423*/
19424WDI_Status
19425WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019426(
Jeff Johnson295189b2012-06-20 16:38:30 -070019427 WDI_ControlBlockType* pWDICtx,
19428 WDI_EventInfoType* pEventData
19429)
19430{
19431 WDI_Status wdiStatus;
19432 eHalStatus halStatus;
19433 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19435
19436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019438 -------------------------------------------------------------------------*/
19439 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19440 ( NULL == pEventData->pEventData))
19441 {
19442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 }
19447
19448 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19449
19450 /*-------------------------------------------------------------------------
19451 Extract response and send it to UMAC
19452 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019453 wpalMemoryCopy( &halStatus,
19454 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019455 sizeof(halStatus));
19456
Jeff Johnsone7245742012-09-05 17:12:55 -070019457 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019458
19459 /*Notify UMAC*/
19460 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19461
Jeff Johnsone7245742012-09-05 17:12:55 -070019462 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019463}/*WDI_ProcessUpdateBeaconParamsRsp*/
19464
19465/**
19466 @brief Process Send Beacon template Rsp function (called when a response
19467 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019468
19469 @param pWDICtx: pointer to the WLAN DAL context
19470 pEventData: pointer to the event information structure
19471
Jeff Johnson295189b2012-06-20 16:38:30 -070019472 @see
19473 @return Result of the function call
19474*/
19475WDI_Status
19476WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019477(
Jeff Johnson295189b2012-06-20 16:38:30 -070019478 WDI_ControlBlockType* pWDICtx,
19479 WDI_EventInfoType* pEventData
19480)
19481{
19482 WDI_Status wdiStatus;
19483 eHalStatus halStatus;
19484 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19486
19487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 -------------------------------------------------------------------------*/
19490 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19491 ( NULL == pEventData->pEventData))
19492 {
19493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019497 }
19498
19499 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19500
19501 /*-------------------------------------------------------------------------
19502 Extract response and send it to UMAC
19503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019504 wpalMemoryCopy( &halStatus,
19505 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 sizeof(halStatus));
19507
Jeff Johnsone7245742012-09-05 17:12:55 -070019508 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019509
19510 /*Notify UMAC*/
19511 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19512
Jeff Johnsone7245742012-09-05 17:12:55 -070019513 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019514}/*WDI_ProcessSendBeaconParamsRsp*/
19515
Jeff Johnsone7245742012-09-05 17:12:55 -070019516
Jeff Johnson295189b2012-06-20 16:38:30 -070019517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019518 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019519 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019520
19521 @param pWDICtx: pointer to the WLAN DAL context
19522 pEventData: pointer to the event information structure
19523
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 @see
19525 @return Result of the function call
19526*/
19527WDI_Status
19528WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019529(
Jeff Johnson295189b2012-06-20 16:38:30 -070019530 WDI_ControlBlockType* pWDICtx,
19531 WDI_EventInfoType* pEventData
19532)
19533{
19534 WDI_Status wdiStatus;
19535 eHalStatus halStatus;
19536 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19538
19539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019541 -------------------------------------------------------------------------*/
19542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19543 ( NULL == pEventData->pEventData))
19544 {
19545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 }
19550
19551 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19552
19553 /*-------------------------------------------------------------------------
19554 Extract response and send it to UMAC
19555 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019556 wpalMemoryCopy( &halStatus,
19557 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019558 sizeof(halStatus));
19559
Jeff Johnsone7245742012-09-05 17:12:55 -070019560 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019561
19562 /*Notify UMAC*/
19563 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19564
Jeff Johnsone7245742012-09-05 17:12:55 -070019565 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019566}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19567
19568 /**
19569 @brief Process Set Max Tx Power Rsp function (called when a response
19570 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019571
19572 @param pWDICtx: pointer to the WLAN DAL context
19573 pEventData: pointer to the event information structure
19574
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 @see
19576 @return Result of the function call
19577*/
19578WDI_Status
19579WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019580(
Jeff Johnson295189b2012-06-20 16:38:30 -070019581 WDI_ControlBlockType* pWDICtx,
19582 WDI_EventInfoType* pEventData
19583)
19584{
19585 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019586
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019588
Jeff Johnson295189b2012-06-20 16:38:30 -070019589 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19591
19592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 -------------------------------------------------------------------------*/
19595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19596 ( NULL == pEventData->pEventData))
19597 {
19598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019602 }
19603
19604 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19605
19606 /*-------------------------------------------------------------------------
19607 Extract response and send it to UMAC
19608 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019609 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19610 pEventData->pEventData,
19611 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019612
19613 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19614 {
19615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19616 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019618 }
19619
Jeff Johnsone7245742012-09-05 17:12:55 -070019620 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019621 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019622 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019623
19624 /*Notify UMAC*/
19625 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19626
Jeff Johnsone7245742012-09-05 17:12:55 -070019627 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019628}
19629
schang86c22c42013-03-13 18:41:24 -070019630 /**
19631 @brief Process Set Tx Power Rsp function (called when a response
19632 is being received over the bus from HAL)
19633
19634 @param pWDICtx: pointer to the WLAN DAL context
19635 pEventData: pointer to the event information structure
19636
19637 @see
19638 @return Result of the function call
19639*/
19640WDI_Status
19641WDI_ProcessSetTxPowerRsp
19642(
19643 WDI_ControlBlockType* pWDICtx,
19644 WDI_EventInfoType* pEventData
19645)
19646{
19647 tSetTxPwrRspMsg halTxpowerrsp;
19648 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19649 WDA_SetTxPowerRspCb wdiReqStatusCb;
19650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19651
19652 /*-------------------------------------------------------------------------
19653 Sanity check
19654 -------------------------------------------------------------------------*/
19655 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19656 ( NULL == pEventData->pEventData))
19657 {
19658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19659 "%s: Invalid parameters", __func__);
19660 WDI_ASSERT(0);
19661 return WDI_STATUS_E_FAILURE;
19662 }
19663
19664 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19665
19666 /*-------------------------------------------------------------------------
19667 Extract response and send it to UMAC
19668 -------------------------------------------------------------------------*/
19669 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19670 pEventData->pEventData,
19671 sizeof(halTxpowerrsp.setTxPwrRspParams));
19672
19673 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19674 {
19675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19676 "Error status returned in Set Tx Power Response ");
19677 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19678 return WDI_STATUS_E_FAILURE;
19679 }
19680
19681 wdiSetTxPowerRspMsg.wdiStatus =
19682 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19683
19684 /*Notify UMAC*/
19685 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19686
19687 return WDI_STATUS_SUCCESS;
19688}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019689
19690/**
19691 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19692 is being received over the bus from HAL)
19693
19694 @param pWDICtx: pointer to the WLAN DAL context
19695 pEventData: pointer to the event information structure
19696
19697 @see
19698 @return Result of the function call
19699*/
19700WDI_Status
19701WDI_ProcessSetMaxTxPowerPerBandRsp
19702(
19703 WDI_ControlBlockType* pWDICtx,
19704 WDI_EventInfoType* pEventData
19705)
19706{
19707 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19708 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19709 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19711
19712 /*-------------------------------------------------------------------------
19713 Sanity check
19714 -------------------------------------------------------------------------*/
19715 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19716 ( NULL == pEventData->pEventData))
19717 {
19718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19719 "%s: Invalid parameters", __func__);
19720 WDI_ASSERT(0);
19721 return WDI_STATUS_E_FAILURE;
19722 }
19723
19724 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19725
19726 /*-------------------------------------------------------------------------
19727 Extract response and send it to UMAC
19728 -------------------------------------------------------------------------*/
19729 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19730 pEventData->pEventData,
19731 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19732
19733 if (eHAL_STATUS_SUCCESS !=
19734 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19735 {
19736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19737 "Error status returned in Set Max Tx Power Per Band Response");
19738 return WDI_STATUS_E_FAILURE;
19739 }
19740
19741 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19742 WDI_HAL_2_WDI_STATUS(
19743 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19744
19745 /* Notify UMAC */
19746 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19747
19748 return WDI_STATUS_SUCCESS;
19749}
19750
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019751#ifdef FEATURE_WLAN_TDLS
19752/**
19753 @brief Process TDLS Link Establish Rsp function (called
19754 when a response is being received over the bus from HAL)
19755
19756 @param pWDICtx: pointer to the WLAN DAL context
19757 pEventData: pointer to the event information structure
19758
19759 @see
19760 @return Result of the function call
19761*/
19762WDI_Status
19763WDI_ProcessLinkEstablishReqRsp
19764(
19765 WDI_ControlBlockType* pWDICtx,
19766 WDI_EventInfoType* pEventData
19767)
19768{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019769 eHalStatus halStatus;
19770 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019771 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19772 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19773
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19775
19776 /*-------------------------------------------------------------------------
19777 Sanity check
19778 -------------------------------------------------------------------------*/
19779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19780 ( NULL == pEventData->pEventData))
19781 {
19782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19783 "%s: Invalid parameters", __func__);
19784 WDI_ASSERT(0);
19785 return WDI_STATUS_E_FAILURE;
19786 }
19787
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019788 /*-------------------------------------------------------------------------
19789 Extract indication and send it to UMAC
19790 -------------------------------------------------------------------------*/
19791 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19792 pEventData->pEventData,
19793 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19794
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019795 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19796
19797 /*-------------------------------------------------------------------------
19798 Extract response and send it to UMAC
19799 -------------------------------------------------------------------------*/
19800 wpalMemoryCopy( &halStatus,
19801 pEventData->pEventData,
19802 sizeof(halStatus));
19803
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019804 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19805 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019806
19807 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019808 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019809
19810 return WDI_STATUS_SUCCESS;
19811}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019812
19813
19814
19815/**
19816 @brief Process TDLS Chan switch Rsp function (called
19817 when a response is being received over the bus from HAL)
19818
19819 @param pWDICtx: pointer to the WLAN DAL context
19820 pEventData: pointer to the event information structure
19821
19822 @see
19823 @return Result of the function call
19824*/
19825WDI_Status
19826WDI_ProcessChanSwitchReqRsp
19827(
19828 WDI_ControlBlockType* pWDICtx,
19829 WDI_EventInfoType* pEventData
19830)
19831{
19832 eHalStatus halStatus;
19833 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19834 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19835 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19836
19837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19838
19839 /*-------------------------------------------------------------------------
19840 Sanity check
19841 -------------------------------------------------------------------------*/
19842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19843 ( NULL == pEventData->pEventData))
19844 {
19845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19846 "%s: Invalid parameters", __func__);
19847 WDI_ASSERT(0);
19848 return WDI_STATUS_E_FAILURE;
19849 }
19850
19851 /*-------------------------------------------------------------------------
19852 Extract indication and send it to UMAC
19853 -------------------------------------------------------------------------*/
19854 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19855 pEventData->pEventData,
19856 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19857
19858 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19859
19860 /*-------------------------------------------------------------------------
19861 Extract response and send it to UMAC
19862 -------------------------------------------------------------------------*/
19863 wpalMemoryCopy( &halStatus,
19864 pEventData->pEventData,
19865 sizeof(halStatus));
19866
19867 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19868 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19869
19870 /*Notify UMAC*/
19871 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19872
19873 return WDI_STATUS_SUCCESS;
19874}/*WDI_ProcessChanSwitchReqRsp*/
19875
19876
19877
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019878#endif
schang86c22c42013-03-13 18:41:24 -070019879
Jeff Johnson295189b2012-06-20 16:38:30 -070019880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019881 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019882 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019883
19884 @param pWDICtx: pointer to the WLAN DAL context
19885 pEventData: pointer to the event information structure
19886
Jeff Johnson295189b2012-06-20 16:38:30 -070019887 @see
19888 @return Result of the function call
19889*/
19890WDI_Status
19891WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019892(
Jeff Johnson295189b2012-06-20 16:38:30 -070019893 WDI_ControlBlockType* pWDICtx,
19894 WDI_EventInfoType* pEventData
19895)
19896{
19897 WDI_Status wdiStatus;
19898 eHalStatus halStatus;
19899 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19901
19902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019904 -------------------------------------------------------------------------*/
19905 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19906 ( NULL == pEventData->pEventData))
19907 {
19908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019912 }
19913
19914 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19915
19916 /*-------------------------------------------------------------------------
19917 Extract response and send it to UMAC
19918 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019919 wpalMemoryCopy( &halStatus,
19920 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019921 sizeof(halStatus));
19922
Jeff Johnsone7245742012-09-05 17:12:55 -070019923 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019924
19925 /*Notify UMAC*/
19926 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19927
Jeff Johnsone7245742012-09-05 17:12:55 -070019928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019929}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019930/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019931 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019933
19934 @param pWDICtx: pointer to the WLAN DAL context
19935 pEventData: pointer to the event information structure
19936
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 @see
19938 @return Result of the function call
19939*/
19940WDI_Status
19941WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019942(
Jeff Johnson295189b2012-06-20 16:38:30 -070019943 WDI_ControlBlockType* pWDICtx,
19944 WDI_EventInfoType* pEventData
19945)
19946{
19947 WDI_Status wdiStatus;
19948 eHalStatus halStatus;
19949 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019950 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19952
19953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 -------------------------------------------------------------------------*/
19956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19957 ( NULL == pEventData->pEventData))
19958 {
19959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 }
19964
19965 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19966
19967 /*-------------------------------------------------------------------------
19968 Extract response and send it to UMAC
19969 -------------------------------------------------------------------------*/
19970 halStatus = *((eHalStatus*)pEventData->pEventData);
19971
Jeff Johnsone7245742012-09-05 17:12:55 -070019972 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019973
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019974 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19975 * Other module states are taken care by PMC.
19976 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19977 */
19978 if (wdiStatus != WDI_STATUS_SUCCESS) {
19979
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19981 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19982 halStatus);
19983 /* Call Back is not required as we are putting the DXE in FULL
19984 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019985 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19986
19987 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019989 "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 -080019990 WDI_ASSERT(0);
19991 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019992 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019993 /*Notify UMAC*/
19994 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19995
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019997}/*WDI_ProcessEnterImpsRsp*/
19998
19999/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020000 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020002
20003 @param pWDICtx: pointer to the WLAN DAL context
20004 pEventData: pointer to the event information structure
20005
Jeff Johnson295189b2012-06-20 16:38:30 -070020006 @see
20007 @return Result of the function call
20008*/
20009WDI_Status
20010WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020011(
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 WDI_ControlBlockType* pWDICtx,
20013 WDI_EventInfoType* pEventData
20014)
20015{
20016 WDI_Status wdiStatus;
20017 eHalStatus halStatus;
20018 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020019 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20021
20022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020024 -------------------------------------------------------------------------*/
20025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20026 ( NULL == pEventData->pEventData))
20027 {
20028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020032 }
20033
20034 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20035
20036 /*-------------------------------------------------------------------------
20037 Extract response and send it to UMAC
20038 -------------------------------------------------------------------------*/
20039 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020040 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020041
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020042 if (halStatus != eHAL_STATUS_SUCCESS)
20043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20044 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20045
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020047 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20048 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20049 {
20050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020051 "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 -080020052 WDI_ASSERT(0);
20053 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 /*Notify UMAC*/
20055 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20056
Jeff Johnsone7245742012-09-05 17:12:55 -070020057 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020058}/*WDI_ProcessExitImpsRsp*/
20059
20060/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020061 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020062 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020063
20064 @param pWDICtx: pointer to the WLAN DAL context
20065 pEventData: pointer to the event information structure
20066
Jeff Johnson295189b2012-06-20 16:38:30 -070020067 @see
20068 @return Result of the function call
20069*/
20070WDI_Status
20071WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020072(
Jeff Johnson295189b2012-06-20 16:38:30 -070020073 WDI_ControlBlockType* pWDICtx,
20074 WDI_EventInfoType* pEventData
20075)
20076{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020077 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20078 tHalEnterBmpsRspParams halEnterBmpsRsp;
20079 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20080 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020081 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20083
20084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 -------------------------------------------------------------------------*/
20087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20088 ( NULL == pEventData->pEventData))
20089 {
20090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020094 }
20095
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020097 Extract response and send it to UMAC
20098 -------------------------------------------------------------------------*/
20099 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20100 {
20101 wpalMemoryCopy( &halEnterBmpsRsp,
20102 pEventData->pEventData,
20103 sizeof(halEnterBmpsRsp));
20104
20105 //Used to print debug message
20106 halStatus = halEnterBmpsRsp.status;
20107 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20108 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20109 }
20110 else
20111 {
20112 halStatus = *((eHalStatus*)pEventData->pEventData);
20113 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20114 }
20115
20116 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020117
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020118 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20119 * Other module states are taken care by PMC.
20120 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20121 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020122 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20123 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020124
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020126 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20127 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020128 /* Call Back is not required as we are putting the DXE in FULL
20129 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020130 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20131 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20132 {
20133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020134 "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 -080020135 WDI_ASSERT(0);
20136 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020137 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020138 }
20139
Jeff Johnson295189b2012-06-20 16:38:30 -070020140 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020141 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020142
Jeff Johnsone7245742012-09-05 17:12:55 -070020143 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020144}/*WDI_ProcessEnterBmpsRsp*/
20145
20146/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020147 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020148 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020149
20150 @param pWDICtx: pointer to the WLAN DAL context
20151 pEventData: pointer to the event information structure
20152
Jeff Johnson295189b2012-06-20 16:38:30 -070020153 @see
20154 @return Result of the function call
20155*/
20156WDI_Status
20157WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020158(
Jeff Johnson295189b2012-06-20 16:38:30 -070020159 WDI_ControlBlockType* pWDICtx,
20160 WDI_EventInfoType* pEventData
20161)
20162{
Jeff Johnson295189b2012-06-20 16:38:30 -070020163 eHalStatus halStatus;
20164 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020165 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020166 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20167 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20169
20170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020172 -------------------------------------------------------------------------*/
20173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20174 ( NULL == pEventData->pEventData))
20175 {
20176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020180 }
20181
20182 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20183
20184 /*-------------------------------------------------------------------------
20185 Extract response and send it to UMAC
20186 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020187
20188 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20189 {
20190 wpalMemoryCopy( &halExitBmpsRsp,
20191 pEventData->pEventData,
20192 sizeof(halExitBmpsRsp));
20193
20194 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20195 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20196 }
20197 else
20198 {
20199 halStatus = *((eHalStatus*)pEventData->pEventData);
20200 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20201 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020202
20203 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020204 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20205 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20206 {
20207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020208 "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 -080020209 WDI_ASSERT(0);
20210 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20212
20213 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020214 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020215
Jeff Johnsone7245742012-09-05 17:12:55 -070020216 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020217}/*WDI_ProcessExitBmpsRsp*/
20218
20219/**
20220 @brief Process Enter UAPSD Rsp function (called when a response
20221 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020222
20223 @param pWDICtx: pointer to the WLAN DAL context
20224 pEventData: pointer to the event information structure
20225
Jeff Johnson295189b2012-06-20 16:38:30 -070020226 @see
20227 @return Result of the function call
20228*/
20229WDI_Status
20230WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020231(
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 WDI_ControlBlockType* pWDICtx,
20233 WDI_EventInfoType* pEventData
20234)
20235{
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020237 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020239 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20240
Jeff Johnson295189b2012-06-20 16:38:30 -070020241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20242
20243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020245 -------------------------------------------------------------------------*/
20246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20247 ( NULL == pEventData->pEventData))
20248 {
20249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020253 }
20254
20255 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20256
20257 /*-------------------------------------------------------------------------
20258 Extract response and send it to UMAC
20259 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020260 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20261 {
20262 wpalMemoryCopy( &halEnterUapsdRsp,
20263 pEventData->pEventData,
20264 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020265
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020266 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20267 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20268 }
20269 else
20270 {
20271 halStatus = *((eHalStatus*)pEventData->pEventData);
20272 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20273 }
20274
20275 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020276 {
20277 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20278 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20279 // the traffic to decide when to suspend the trigger frames when there is no traffic
20280 // activity on the trigger enabled ACs
20281 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20282
20283#ifdef WLAN_PERF
20284 // Increment the BD signature to refresh the fast path BD utilization
20285 pWDICtx->uBdSigSerialNum++;
20286#endif
20287 }
20288
20289 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020290 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020291
Jeff Johnsone7245742012-09-05 17:12:55 -070020292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020293}/*WDI_ProcessEnterUapsdRsp*/
20294
20295/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020296 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020297 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020298
20299 @param pWDICtx: pointer to the WLAN DAL context
20300 pEventData: pointer to the event information structure
20301
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 @see
20303 @return Result of the function call
20304*/
20305WDI_Status
20306WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020307(
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 WDI_ControlBlockType* pWDICtx,
20309 WDI_EventInfoType* pEventData
20310)
20311{
Jeff Johnson295189b2012-06-20 16:38:30 -070020312 eHalStatus halStatus;
20313 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020314 tHalExitUapsdRspParams halExitUapsdRsp;
20315 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20317
20318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020319 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020320 -------------------------------------------------------------------------*/
20321 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20322 ( NULL == pEventData->pEventData))
20323 {
20324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020325 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 }
20329
20330 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20331
20332 /*-------------------------------------------------------------------------
20333 Extract response and send it to UMAC
20334 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020335 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20336 {
20337 wpalMemoryCopy( &halExitUapsdRsp,
20338 pEventData->pEventData,
20339 sizeof(halExitUapsdRsp));
20340
20341 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20342 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20343 }
20344 else
20345 {
20346 halStatus = *((eHalStatus*)pEventData->pEventData);
20347 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20348 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020349 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20350 // directly instead of the FW WQ.
20351 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20352
20353#ifdef WLAN_PERF
20354 // Increment the BD signature to refresh the fast path BD utilization
20355 pWDICtx->uBdSigSerialNum++;
20356#endif
20357
20358 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020359 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020360
Jeff Johnsone7245742012-09-05 17:12:55 -070020361 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020362}/*WDI_ProcessExitUapsdRsp*/
20363
20364/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020366 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020367
20368 @param pWDICtx: pointer to the WLAN DAL context
20369 pEventData: pointer to the event information structure
20370
Jeff Johnson295189b2012-06-20 16:38:30 -070020371 @see
20372 @return Result of the function call
20373*/
20374WDI_Status
20375WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020376(
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 WDI_ControlBlockType* pWDICtx,
20378 WDI_EventInfoType* pEventData
20379)
20380{
20381 WDI_Status wdiStatus;
20382 eHalStatus halStatus;
20383 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20385
20386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020388 -------------------------------------------------------------------------*/
20389 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20390 ( NULL == pEventData->pEventData))
20391 {
20392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020396 }
20397
20398 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20399
20400 /*-------------------------------------------------------------------------
20401 Extract response and send it to UMAC
20402 -------------------------------------------------------------------------*/
20403 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020404 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020405
20406 /*Notify UMAC*/
20407 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20408
Jeff Johnsone7245742012-09-05 17:12:55 -070020409 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020410}/*WDI_ProcessSetUapsdAcParamsRsp*/
20411
20412/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020413 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020414 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020415
20416 @param pWDICtx: pointer to the WLAN DAL context
20417 pEventData: pointer to the event information structure
20418
Jeff Johnson295189b2012-06-20 16:38:30 -070020419 @see
20420 @return Result of the function call
20421*/
20422WDI_Status
20423WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020424(
Jeff Johnson295189b2012-06-20 16:38:30 -070020425 WDI_ControlBlockType* pWDICtx,
20426 WDI_EventInfoType* pEventData
20427)
20428{
20429 WDI_Status wdiStatus;
20430 eHalStatus halStatus;
20431 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20433
20434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020436 -------------------------------------------------------------------------*/
20437 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20438 ( NULL == pEventData->pEventData))
20439 {
20440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020444 }
20445
20446 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20447
20448 /*-------------------------------------------------------------------------
20449 Extract response and send it to UMAC
20450 -------------------------------------------------------------------------*/
20451 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020452 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020453
20454 /*Notify UMAC*/
20455 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20456
Jeff Johnsone7245742012-09-05 17:12:55 -070020457 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020458}/*WDI_ProcessUpdateUapsdParamsRsp*/
20459
20460/**
20461 @brief Process Configure RXP filter Rsp function (called when a
20462 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020463
20464 @param pWDICtx: pointer to the WLAN DAL context
20465 pEventData: pointer to the event information structure
20466
Jeff Johnson295189b2012-06-20 16:38:30 -070020467 @see
20468 @return Result of the function call
20469*/
20470WDI_Status
20471WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020472(
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 WDI_ControlBlockType* pWDICtx,
20474 WDI_EventInfoType* pEventData
20475)
20476{
20477 WDI_Status wdiStatus;
20478 eHalStatus halStatus;
20479 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20481
20482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 -------------------------------------------------------------------------*/
20485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20486 ( NULL == pEventData->pEventData))
20487 {
20488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 }
20493
20494 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20495
20496 /*-------------------------------------------------------------------------
20497 Extract response and send it to UMAC
20498 -------------------------------------------------------------------------*/
20499 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020500 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020501
20502 /*Notify UMAC*/
20503 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20504
Jeff Johnsone7245742012-09-05 17:12:55 -070020505 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020506}/*WDI_ProcessConfigureRxpFilterRsp*/
20507
20508/**
20509 @brief Process Set beacon filter Rsp function (called when a
20510 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020511
20512 @param pWDICtx: pointer to the WLAN DAL context
20513 pEventData: pointer to the event information structure
20514
Jeff Johnson295189b2012-06-20 16:38:30 -070020515 @see
20516 @return Result of the function call
20517*/
20518WDI_Status
20519WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020520(
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 WDI_ControlBlockType* pWDICtx,
20522 WDI_EventInfoType* pEventData
20523)
20524{
20525 WDI_Status wdiStatus;
20526 eHalStatus halStatus;
20527 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20529
20530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020531 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 -------------------------------------------------------------------------*/
20533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20534 ( NULL == pEventData->pEventData))
20535 {
20536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 }
20541
20542 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20543
20544 /*-------------------------------------------------------------------------
20545 Extract response and send it to UMAC
20546 -------------------------------------------------------------------------*/
20547 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020549
20550 /*Notify UMAC*/
20551 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20552
Jeff Johnsone7245742012-09-05 17:12:55 -070020553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020554}/*WDI_ProcessSetBeaconFilterRsp*/
20555
20556/**
20557 @brief Process remove beacon filter Rsp function (called when a
20558 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020559
20560 @param pWDICtx: pointer to the WLAN DAL context
20561 pEventData: pointer to the event information structure
20562
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 @see
20564 @return Result of the function call
20565*/
20566WDI_Status
20567WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020568(
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 WDI_ControlBlockType* pWDICtx,
20570 WDI_EventInfoType* pEventData
20571)
20572{
20573 WDI_Status wdiStatus;
20574 eHalStatus halStatus;
20575 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20577
20578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 -------------------------------------------------------------------------*/
20581 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20582 ( NULL == pEventData->pEventData))
20583 {
20584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020588 }
20589
20590 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20591
20592 /*-------------------------------------------------------------------------
20593 Extract response and send it to UMAC
20594 -------------------------------------------------------------------------*/
20595 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020596 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020597
20598 /*Notify UMAC*/
20599 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20600
Jeff Johnsone7245742012-09-05 17:12:55 -070020601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020602}/*WDI_ProcessRemBeaconFilterRsp*/
20603
20604/**
20605 @brief Process set RSSI thresholds Rsp function (called when a
20606 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020607
20608 @param pWDICtx: pointer to the WLAN DAL context
20609 pEventData: pointer to the event information structure
20610
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 @see
20612 @return Result of the function call
20613*/
20614WDI_Status
20615WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020616(
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 WDI_ControlBlockType* pWDICtx,
20618 WDI_EventInfoType* pEventData
20619)
20620{
20621 WDI_Status wdiStatus;
20622 eHalStatus halStatus;
20623 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20625
20626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 -------------------------------------------------------------------------*/
20629 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20630 ( NULL == pEventData->pEventData))
20631 {
20632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020636 }
20637
20638 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20639
20640 /*-------------------------------------------------------------------------
20641 Extract response and send it to UMAC
20642 -------------------------------------------------------------------------*/
20643 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020644 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020645
20646 /*Notify UMAC*/
20647 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20648
Jeff Johnsone7245742012-09-05 17:12:55 -070020649 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020650}/*WDI_ProcessSetRSSIThresoldsRsp*/
20651
20652/**
20653 @brief Process host offload Rsp function (called when a
20654 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020655
20656 @param pWDICtx: pointer to the WLAN DAL context
20657 pEventData: pointer to the event information structure
20658
Jeff Johnson295189b2012-06-20 16:38:30 -070020659 @see
20660 @return Result of the function call
20661*/
20662WDI_Status
20663WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020664(
Jeff Johnson295189b2012-06-20 16:38:30 -070020665 WDI_ControlBlockType* pWDICtx,
20666 WDI_EventInfoType* pEventData
20667)
20668{
20669 WDI_Status wdiStatus;
20670 eHalStatus halStatus;
20671 WDI_HostOffloadCb wdiHostOffloadCb;
20672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20673
20674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 -------------------------------------------------------------------------*/
20677 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20678 ( NULL == pEventData->pEventData))
20679 {
20680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020681 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020684 }
20685
20686 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20687
20688 /*-------------------------------------------------------------------------
20689 Extract response and send it to UMAC
20690 -------------------------------------------------------------------------*/
20691 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020693
20694 /*Notify UMAC*/
20695 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20696
Jeff Johnsone7245742012-09-05 17:12:55 -070020697 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020698}/*WDI_ProcessHostOffloadRsp*/
20699
20700/**
20701 @brief Process keep alive Rsp function (called when a
20702 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020703
20704 @param pWDICtx: pointer to the WLAN DAL context
20705 pEventData: pointer to the event information structure
20706
Jeff Johnson295189b2012-06-20 16:38:30 -070020707 @see
20708 @return Result of the function call
20709*/
20710WDI_Status
20711WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020712(
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 WDI_ControlBlockType* pWDICtx,
20714 WDI_EventInfoType* pEventData
20715)
20716{
20717 WDI_Status wdiStatus;
20718 eHalStatus halStatus;
20719 WDI_KeepAliveCb wdiKeepAliveCb;
20720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053020721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20723
20724
20725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 -------------------------------------------------------------------------*/
20728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20729 ( NULL == pEventData->pEventData))
20730 {
20731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 }
20736
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20738
Jeff Johnson295189b2012-06-20 16:38:30 -070020739 /*-------------------------------------------------------------------------
20740 Extract response and send it to UMAC
20741 -------------------------------------------------------------------------*/
20742 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020743 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020744
20745 /*Notify UMAC*/
20746 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20747
Jeff Johnsone7245742012-09-05 17:12:55 -070020748 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020749}/*WDI_ProcessKeepAliveRsp*/
20750
20751/**
20752 @brief Process wowl add ptrn Rsp function (called when a
20753 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020754
20755 @param pWDICtx: pointer to the WLAN DAL context
20756 pEventData: pointer to the event information structure
20757
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 @see
20759 @return Result of the function call
20760*/
20761WDI_Status
20762WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020763(
Jeff Johnson295189b2012-06-20 16:38:30 -070020764 WDI_ControlBlockType* pWDICtx,
20765 WDI_EventInfoType* pEventData
20766)
20767{
Jeff Johnson295189b2012-06-20 16:38:30 -070020768 eHalStatus halStatus;
20769 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020770 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20771 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20772
Jeff Johnson295189b2012-06-20 16:38:30 -070020773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20774
20775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 -------------------------------------------------------------------------*/
20778 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20779 ( NULL == pEventData->pEventData))
20780 {
20781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020782 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020785 }
20786
20787 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20788
20789 /*-------------------------------------------------------------------------
20790 Extract response and send it to UMAC
20791 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020792 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20793 {
20794 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20795 pEventData->pEventData,
20796 sizeof(halAddWowlBcastPtrRsp));
20797
20798 wdiWowlAddBcPtrRsp.wdiStatus =
20799 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20800 }
20801 else
20802 {
20803 halStatus = *((eHalStatus*)pEventData->pEventData);
20804 wdiWowlAddBcPtrRsp.wdiStatus =
20805 WDI_HAL_2_WDI_STATUS(halStatus);
20806 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020807
20808 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020809 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020810
Jeff Johnsone7245742012-09-05 17:12:55 -070020811 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020812}/*WDI_ProcessWowlAddBcPtrnRsp*/
20813
20814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020815 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020816 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020817
20818 @param pWDICtx: pointer to the WLAN DAL context
20819 pEventData: pointer to the event information structure
20820
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 @see
20822 @return Result of the function call
20823*/
20824WDI_Status
20825WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020826(
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 WDI_ControlBlockType* pWDICtx,
20828 WDI_EventInfoType* pEventData
20829)
20830{
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 eHalStatus halStatus;
20832 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020833 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20834 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20836
20837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 -------------------------------------------------------------------------*/
20840 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20841 ( NULL == pEventData->pEventData))
20842 {
20843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020844 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020847 }
20848
20849 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20850
20851 /*-------------------------------------------------------------------------
20852 Extract response and send it to UMAC
20853 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020854 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20855 {
20856 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20857 pEventData->pEventData,
20858 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020859
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020860 wdiWowlDelBcstPtrRsp.wdiStatus =
20861 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20862 }
20863 else
20864 {
20865 halStatus = *((eHalStatus*)pEventData->pEventData);
20866 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20867 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020869 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020870
Jeff Johnsone7245742012-09-05 17:12:55 -070020871 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020872}/*WDI_ProcessWowlDelBcPtrnRsp*/
20873
20874/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020877
20878 @param pWDICtx: pointer to the WLAN DAL context
20879 pEventData: pointer to the event information structure
20880
Jeff Johnson295189b2012-06-20 16:38:30 -070020881 @see
20882 @return Result of the function call
20883*/
20884WDI_Status
20885WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020886(
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 WDI_ControlBlockType* pWDICtx,
20888 WDI_EventInfoType* pEventData
20889)
20890{
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 eHalStatus halStatus;
20892 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020893 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20894 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20896
20897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020899 -------------------------------------------------------------------------*/
20900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20901 ( NULL == pEventData->pEventData))
20902 {
20903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020907 }
20908
20909 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20910
20911 /*-------------------------------------------------------------------------
20912 Extract response and send it to UMAC
20913 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020914 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20915 {
20916 wpalMemoryCopy( &halEnterWowlRspParams,
20917 (wpt_uint8*)pEventData->pEventData,
20918 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020919
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020920 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20921 wdiwowlEnterRsp.status =
20922 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20923 }
20924 else
20925 {
20926 halStatus = *((eHalStatus*)pEventData->pEventData);
20927 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20928 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020930 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020931
Jeff Johnsone7245742012-09-05 17:12:55 -070020932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020933}/*WDI_ProcessWowlEnterRsp*/
20934
20935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020936 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020937 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020938
20939 @param pWDICtx: pointer to the WLAN DAL context
20940 pEventData: pointer to the event information structure
20941
Jeff Johnson295189b2012-06-20 16:38:30 -070020942 @see
20943 @return Result of the function call
20944*/
20945WDI_Status
20946WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020947(
Jeff Johnson295189b2012-06-20 16:38:30 -070020948 WDI_ControlBlockType* pWDICtx,
20949 WDI_EventInfoType* pEventData
20950)
20951{
Jeff Johnson295189b2012-06-20 16:38:30 -070020952 eHalStatus halStatus;
20953 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020954 tHalExitWowlRspParams halExitWowlRspParams;
20955 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20956
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20958
20959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 -------------------------------------------------------------------------*/
20962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20963 ( NULL == pEventData->pEventData))
20964 {
20965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 }
20970
20971 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20972
20973 /*-------------------------------------------------------------------------
20974 Extract response and send it to UMAC
20975 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020976 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20977 {
20978 wpalMemoryCopy( &halExitWowlRspParams,
20979 pEventData->pEventData,
20980 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020981
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020982 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20983 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20984
20985 }
20986 else
20987 {
20988 halStatus = *((eHalStatus*)pEventData->pEventData);
20989 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20990 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020992 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020993
Jeff Johnsone7245742012-09-05 17:12:55 -070020994 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020995}/*WDI_ProcessWowlExitRsp*/
20996
20997/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020998 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020999 (called when a response is being received over the bus
21000 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021001
21002 @param pWDICtx: pointer to the WLAN DAL context
21003 pEventData: pointer to the event information structure
21004
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 @see
21006 @return Result of the function call
21007*/
21008WDI_Status
21009WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021010(
Jeff Johnson295189b2012-06-20 16:38:30 -070021011 WDI_ControlBlockType* pWDICtx,
21012 WDI_EventInfoType* pEventData
21013)
21014{
21015 WDI_Status wdiStatus;
21016 eHalStatus halStatus;
21017 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21019
21020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021021 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021022 -------------------------------------------------------------------------*/
21023 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21024 ( NULL == pEventData->pEventData))
21025 {
21026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021030 }
21031
21032 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21033
21034 /*-------------------------------------------------------------------------
21035 Extract response and send it to UMAC
21036 -------------------------------------------------------------------------*/
21037 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021038 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021039
21040 /*Notify UMAC*/
21041 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21042
Jeff Johnsone7245742012-09-05 17:12:55 -070021043 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021044}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21045
21046
21047/**
21048 @brief Process Nv download(called when a response
21049 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070021050
21051 @param pWDICtx: pointer to the WLAN DAL context
21052 pEventData: pointer to the event information structure
21053
Jeff Johnson295189b2012-06-20 16:38:30 -070021054 @see
21055 @return Result of the function call
21056*/
21057WDI_Status
21058WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021059(
Jeff Johnson295189b2012-06-20 16:38:30 -070021060 WDI_ControlBlockType* pWDICtx,
21061 WDI_EventInfoType* pEventData
21062)
21063{
21064
21065 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21066 tHalNvImgDownloadRspParams halNvDownloadRsp;
21067 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
21068
21069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021071 -------------------------------------------------------------------------*/
21072 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21073 ( NULL == pEventData->pEventData))
21074 {
21075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021079 }
21080
21081 /*-------------------------------------------------------------------------
21082 Extract response and send it to UMAC
21083 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021084 wpalMemoryCopy( &halNvDownloadRsp,
21085 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021086 sizeof(halNvDownloadRsp));
21087
21088 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21089
21090 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21092 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021093 {
21094 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021095 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021096 }
21097 else
21098 {
21099 /*Reset the Nv related global information in WDI context information */
21100 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21101 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21102 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21103 /*call WDA callback function for last fragment */
21104 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21105 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21106 }
21107
Jeff Johnsone7245742012-09-05 17:12:55 -070021108 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021109}
21110#ifdef WLAN_FEATURE_VOWIFI_11R
21111/**
21112 @brief Process Add TSpec Rsp function (called when a response
21113 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021114
21115 @param pWDICtx: pointer to the WLAN DAL context
21116 pEventData: pointer to the event information structure
21117
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 @see
21119 @return Result of the function call
21120*/
21121WDI_Status
21122WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021123(
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 WDI_ControlBlockType* pWDICtx,
21125 WDI_EventInfoType* pEventData
21126)
21127{
21128 WDI_Status wdiStatus;
21129 tAggrAddTsRspParams aggrAddTsRsp;
21130 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21132
21133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021135 -------------------------------------------------------------------------*/
21136 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21137 ( NULL == pEventData->pEventData))
21138 {
21139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021140 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021143 }
21144
21145 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21146
21147 /*-------------------------------------------------------------------------
21148 Extract response and send it to UMAC
21149 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 wpalMemoryCopy( &aggrAddTsRsp,
21151 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 sizeof(aggrAddTsRsp));
21153
21154 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021155 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021156
21157 /*Notify UMAC*/
21158 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21159
Jeff Johnsone7245742012-09-05 17:12:55 -070021160 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021161}/*WDI_ProcessAddTSpecRsp*/
21162#endif /* WLAN_FEATURE_VOWIFI_11R */
21163
21164/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021167
21168 @param pWDICtx: pointer to the WLAN DAL context
21169 pEventData: pointer to the event information structure
21170
Jeff Johnson295189b2012-06-20 16:38:30 -070021171 @see
21172 @return Result of the function call
21173*/
21174WDI_Status
21175WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021176(
Jeff Johnson295189b2012-06-20 16:38:30 -070021177 WDI_ControlBlockType* pWDICtx,
21178 WDI_EventInfoType* pEventData
21179)
21180{
21181 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21182 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21183 tHalHostResumeRspParams hostResumeRspMsg;
21184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21185
21186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 -------------------------------------------------------------------------*/
21189 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21190 ( NULL == pEventData->pEventData))
21191 {
21192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021193 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021196 }
21197
21198 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21199
21200 /*-------------------------------------------------------------------------
21201 Extract response and send it to UMAC
21202 -------------------------------------------------------------------------*/
21203
Jeff Johnsone7245742012-09-05 17:12:55 -070021204 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 (wpt_uint8*)pEventData->pEventData,
21206 sizeof(hostResumeRspMsg));
21207
Jeff Johnsone7245742012-09-05 17:12:55 -070021208 wdiResumeRspParams.wdiStatus =
21209 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021210
21211 /*Notify UMAC*/
21212 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21213
21214 return WDI_STATUS_SUCCESS;
21215}
21216
21217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021218 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021220
21221 @param pWDICtx: pointer to the WLAN DAL context
21222 pEventData: pointer to the event information structure
21223
Jeff Johnson295189b2012-06-20 16:38:30 -070021224 @see
21225 @return Result of the function call
21226*/
21227WDI_Status
21228WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021229(
Jeff Johnson295189b2012-06-20 16:38:30 -070021230 WDI_ControlBlockType* pWDICtx,
21231 WDI_EventInfoType* pEventData
21232)
21233{
21234 WDI_Status wdiStatus;
21235 eHalStatus halStatus;
21236 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21238
21239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021241 -------------------------------------------------------------------------*/
21242 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21243 ( NULL == pEventData->pEventData))
21244 {
21245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021249 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021250
21251 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021252
21253 /*-------------------------------------------------------------------------
21254 Extract response and send it to UMAC
21255 -------------------------------------------------------------------------*/
21256 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021257 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021258
21259 /*Notify UMAC*/
21260 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21261
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021263}/*WDI_ProcessSetTxPerTrackingRsp*/
21264
21265/*==========================================================================
21266 Indications from HAL
21267 ==========================================================================*/
21268/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021269 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 indication of this kind is being received over the bus
21271 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021272
21273 @param pWDICtx: pointer to the WLAN DAL context
21274 pEventData: pointer to the event information structure
21275
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 @see
21277 @return Result of the function call
21278*/
21279WDI_Status
21280WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021281(
Jeff Johnson295189b2012-06-20 16:38:30 -070021282 WDI_ControlBlockType* pWDICtx,
21283 WDI_EventInfoType* pEventData
21284)
21285{
21286 WDI_LowLevelIndType wdiInd;
21287 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21289
21290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 -------------------------------------------------------------------------*/
21293 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21294 ( NULL == pEventData->pEventData))
21295 {
21296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021300 }
21301
21302 /*-------------------------------------------------------------------------
21303 Extract indication and send it to UMAC
21304 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21306 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021307 sizeof(tHalRSSINotification));
21308
21309 /*Fill in the indication parameters*/
21310 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21311 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21312 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21313 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21314 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21315 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21316 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21317 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21318 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21319 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21320 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21321 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21322 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021323 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21324 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021325
ltimariub77f24b2013-01-24 18:54:33 -080021326 if ( pWDICtx->wdiLowLevelIndCB )
21327 {
21328 /*Notify UMAC of indication*/
21329 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21330 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021331
21332 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021333}/*WDI_ProcessLowRSSIInd*/
21334
21335
21336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021338 an indication of this kind is being received over the
21339 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021340
21341 @param pWDICtx: pointer to the WLAN DAL context
21342 pEventData: pointer to the event information structure
21343
Jeff Johnson295189b2012-06-20 16:38:30 -070021344 @see
21345 @return Result of the function call
21346*/
21347WDI_Status
21348WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021349(
Jeff Johnson295189b2012-06-20 16:38:30 -070021350 WDI_ControlBlockType* pWDICtx,
21351 WDI_EventInfoType* pEventData
21352)
21353{
21354 WDI_Status wdiStatus;
21355 eHalStatus halStatus;
21356 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021357 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21359
21360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021362 -------------------------------------------------------------------------*/
21363 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21364 ( NULL == pEventData->pEventData))
21365 {
21366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021370 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021371 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021372 /*-------------------------------------------------------------------------
21373 Extract indication and send it to UMAC
21374 -------------------------------------------------------------------------*/
21375 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21376 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021377 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021378
21379 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021381 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21382 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021383 if ( pWDICtx->wdiLowLevelIndCB )
21384 {
21385 /*Notify UMAC*/
21386 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21387 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021388
21389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021390}/*WDI_ProcessMissedBeaconInd*/
21391
21392
21393/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021394 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 an indication of this kind is being received over the
21396 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021397
21398 @param pWDICtx: pointer to the WLAN DAL context
21399 pEventData: pointer to the event information structure
21400
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 @see
21402 @return Result of the function call
21403*/
21404WDI_Status
21405WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021406(
Jeff Johnson295189b2012-06-20 16:38:30 -070021407 WDI_ControlBlockType* pWDICtx,
21408 WDI_EventInfoType* pEventData
21409)
21410{
21411 WDI_Status wdiStatus;
21412 eHalStatus halStatus;
21413 WDI_LowLevelIndType wdiInd;
21414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21415
21416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021417 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021418 -------------------------------------------------------------------------*/
21419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21420 ( NULL == pEventData->pEventData))
21421 {
21422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021426 }
21427
21428 /*-------------------------------------------------------------------------
21429 Extract indication and send it to UMAC
21430 -------------------------------------------------------------------------*/
21431 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21432 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021433 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021434
21435 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021436 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021437 /* ! TO DO - fill in from HAL struct:
21438 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21439
ltimariub77f24b2013-01-24 18:54:33 -080021440 if ( pWDICtx->wdiLowLevelIndCB )
21441 {
21442 /*Notify UMAC*/
21443 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21444 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021445
21446 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021447}/*WDI_ProcessUnkAddrFrameInd*/
21448
21449
21450/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021451 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 indication of this kind is being received over the bus
21453 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021454
21455 @param pWDICtx: pointer to the WLAN DAL context
21456 pEventData: pointer to the event information structure
21457
Jeff Johnson295189b2012-06-20 16:38:30 -070021458 @see
21459 @return Result of the function call
21460*/
21461WDI_Status
21462WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021463(
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 WDI_ControlBlockType* pWDICtx,
21465 WDI_EventInfoType* pEventData
21466)
21467{
21468 WDI_LowLevelIndType wdiInd;
21469 tpSirMicFailureInd pHalMicFailureInd;
21470
21471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21472
21473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021475 -------------------------------------------------------------------------*/
21476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21477 ( NULL == pEventData->pEventData))
21478 {
21479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021484
Jeff Johnson295189b2012-06-20 16:38:30 -070021485 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21486 /*-------------------------------------------------------------------------
21487 Extract indication and send it to UMAC
21488 -------------------------------------------------------------------------*/
21489
21490 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021491 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021492 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21493 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21494 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21495 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21496 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21497 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21498 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21499 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021501 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021502 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021504 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021505 pHalMicFailureInd->info.keyId;
21506 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21507 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21508 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21509 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021510
21511 if ( pWDICtx->wdiLowLevelIndCB )
21512 {
21513 /*Notify UMAC*/
21514 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21515 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021516
21517 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021518}/*WDI_ProcessMicFailureInd*/
21519
21520
21521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021522 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 an indication of this kind is being received over the
21524 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021525
21526 @param pWDICtx: pointer to the WLAN DAL context
21527 pEventData: pointer to the event information structure
21528
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 @see
21530 @return Result of the function call
21531*/
21532WDI_Status
21533WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021534(
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 WDI_ControlBlockType* pWDICtx,
21536 WDI_EventInfoType* pEventData
21537)
21538{
21539 WDI_Status wdiStatus;
21540 eHalStatus halStatus;
21541 WDI_LowLevelIndType wdiInd;
21542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21543
21544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 -------------------------------------------------------------------------*/
21547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21548 ( NULL == pEventData->pEventData))
21549 {
21550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021554 }
21555
21556 /*-------------------------------------------------------------------------
21557 Extract indication and send it to UMAC
21558 -------------------------------------------------------------------------*/
21559
21560 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21561 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021562 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021563
21564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21565 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021566
Jeff Johnson295189b2012-06-20 16:38:30 -070021567 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021568 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21569 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021570
ltimariub77f24b2013-01-24 18:54:33 -080021571 if ( pWDICtx->wdiLowLevelIndCB )
21572 {
21573 /*Notify UMAC*/
21574 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21575 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021576
21577 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021578}/*WDI_ProcessFatalErrorInd*/
21579
21580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021581 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021582 an indication of this kind is being received over the
21583 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021584
21585 @param pWDICtx: pointer to the WLAN DAL context
21586 pEventData: pointer to the event information structure
21587
Jeff Johnson295189b2012-06-20 16:38:30 -070021588 @see
21589 @return Result of the function call
21590*/
21591WDI_Status
21592WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021593(
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 WDI_ControlBlockType* pWDICtx,
21595 WDI_EventInfoType* pEventData
21596)
21597{
21598 tDeleteStaContextParams halDelSTACtx;
21599 WDI_LowLevelIndType wdiInd;
21600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21601
21602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021604 -------------------------------------------------------------------------*/
21605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21606 ( NULL == pEventData->pEventData))
21607 {
21608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021612 }
21613
21614 /*-------------------------------------------------------------------------
21615 Extract indication and send it to UMAC
21616 -------------------------------------------------------------------------*/
21617
21618 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021619 wpalMemoryCopy( &halDelSTACtx,
21620 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021621 sizeof(halDelSTACtx));
21622
21623 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021624 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021625
21626 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21627 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21628 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21629 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21630
Jeff Johnsone7245742012-09-05 17:12:55 -070021631 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021632 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021633 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021634 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021635 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21636 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021637
ltimariub77f24b2013-01-24 18:54:33 -080021638 if ( pWDICtx->wdiLowLevelIndCB )
21639 {
21640 /*Notify UMAC*/
21641 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21642 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021643
21644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021645}/*WDI_ProcessDelSTAInd*/
21646
21647/**
21648*@brief Process Coex Indication function (called when
21649 an indication of this kind is being received over the
21650 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021651
21652 @param pWDICtx: pointer to the WLAN DAL context
21653 pEventData: pointer to the event information structure
21654
Jeff Johnson295189b2012-06-20 16:38:30 -070021655 @see
21656 @return Result of the function call
21657*/
21658WDI_Status
21659WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021660(
Jeff Johnson295189b2012-06-20 16:38:30 -070021661 WDI_ControlBlockType* pWDICtx,
21662 WDI_EventInfoType* pEventData
21663)
21664{
21665 WDI_LowLevelIndType wdiInd;
21666 tCoexIndMsg halCoexIndMsg;
21667 wpt_uint32 index;
21668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21669
21670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021672 -------------------------------------------------------------------------*/
21673 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21674 ( NULL == pEventData->pEventData ))
21675 {
21676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021678 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021680 }
21681
21682 /*-------------------------------------------------------------------------
21683 Extract indication and send it to UMAC
21684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021685 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21686 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 sizeof(halCoexIndMsg.coexIndParams) );
21688
21689 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021690 wdiInd.wdiIndicationType = WDI_COEX_IND;
21691 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21693 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021694 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021695 }
21696
21697 // DEBUG
21698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21699 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21701 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21702 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21703 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21704 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021705
ltimariub77f24b2013-01-24 18:54:33 -080021706 if ( pWDICtx->wdiLowLevelIndCB )
21707 {
21708 /*Notify UMAC*/
21709 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21710 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021711
21712 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021713}/*WDI_ProcessCoexInd*/
21714
21715/**
21716*@brief Process Tx Complete Indication function (called when
21717 an indication of this kind is being received over the
21718 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021719
21720 @param pWDICtx: pointer to the WLAN DAL context
21721 pEventData: pointer to the event information structure
21722
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 @see
21724 @return Result of the function call
21725*/
21726WDI_Status
21727WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021728(
Jeff Johnson295189b2012-06-20 16:38:30 -070021729 WDI_ControlBlockType* pWDICtx,
21730 WDI_EventInfoType* pEventData
21731)
21732{
21733 WDI_LowLevelIndType wdiInd;
21734 tTxComplIndMsg halTxComplIndMsg;
21735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21736
21737 /*-------------------------------------------------------------------------
21738 Sanity check
21739 -------------------------------------------------------------------------*/
21740 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21741 ( NULL == pEventData->pEventData ))
21742 {
21743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021744 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 WDI_ASSERT( 0 );
21746 return WDI_STATUS_E_FAILURE;
21747 }
21748
21749 /*-------------------------------------------------------------------------
21750 Extract indication and send it to UMAC
21751 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021752 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21753 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021754 sizeof(halTxComplIndMsg.txComplParams) );
21755
21756 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021757 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021758
21759 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21760 &halTxComplIndMsg.txComplParams,
21761 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021762
ltimariub77f24b2013-01-24 18:54:33 -080021763 if ( pWDICtx->wdiLowLevelIndCB )
21764 {
21765 /*Notify UMAC*/
21766 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21767 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021768
21769 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021770}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021771#ifdef FEATURE_WLAN_TDLS
21772/**
21773*@brief Process TDLS Indication function (called when
21774 an indication of this kind is being received over the
21775 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021776
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021777 @param pWDICtx: pointer to the WLAN DAL context
21778 pEventData: pointer to the event information structure
21779
21780 @see
21781 @return Result of the function call
21782*/
21783WDI_Status
21784WDI_ProcessTdlsInd
21785(
21786 WDI_ControlBlockType* pWDICtx,
21787 WDI_EventInfoType* pEventData
21788)
21789{
21790 WDI_LowLevelIndType wdiInd;
21791 tTdlsIndMsg halTdlsIndMsg;
21792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21793
21794 /*-------------------------------------------------------------------------
21795 Sanity check
21796 -------------------------------------------------------------------------*/
21797 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21798 ( NULL == pEventData->pEventData ))
21799 {
21800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21801 "%s: Invalid parameters", __func__);
21802 WDI_ASSERT( 0 );
21803 return WDI_STATUS_E_FAILURE;
21804 }
21805
21806 /*-------------------------------------------------------------------------
21807 Extract indication and send it to UMAC
21808 -------------------------------------------------------------------------*/
21809 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21810 pEventData->pEventData,
21811 sizeof(halTdlsIndMsg.tdlsIndParams) );
21812
21813 /*Fill in the indication parameters*/
21814 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21815
21816 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21817 = halTdlsIndMsg.tdlsIndParams.status;
21818
21819 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21820 = halTdlsIndMsg.tdlsIndParams.staIdx;
21821
21822 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21823 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21824
Atul Mittalbb2aad02014-09-22 19:09:36 +053021825 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21826 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021827 /*Notify UMAC*/
21828 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21829
21830 return WDI_STATUS_SUCCESS;
21831}/*WDI_ProcessTdlsInd*/
21832#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021833/**
Viral Modid86bde22012-12-10 13:09:21 -080021834*@brief Process Noa Start Indication function (called when
21835 an indication of this kind is being received over the
21836 bus from HAL)
21837
21838 @param pWDICtx: pointer to the WLAN DAL context
21839 pEventData: pointer to the event information structure
21840
21841 @see
21842 @return Result of the function call
21843*/
21844WDI_Status
21845WDI_ProcessP2pNoaStartInd
21846(
21847 WDI_ControlBlockType* pWDICtx,
21848 WDI_EventInfoType* pEventData
21849)
21850{
21851 WDI_LowLevelIndType wdiInd;
21852 tNoaStartIndMsg halNoaStartIndMsg;
21853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21854
21855 /*-------------------------------------------------------------------------
21856 Sanity check
21857 -------------------------------------------------------------------------*/
21858 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21859 ( NULL == pEventData->pEventData ))
21860 {
21861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21862 "%s: Invalid parameters", __func__);
21863 WDI_ASSERT( 0 );
21864 return WDI_STATUS_E_FAILURE;
21865 }
21866
21867 /*-------------------------------------------------------------------------
21868 Extract indication and send it to UMAC
21869 -------------------------------------------------------------------------*/
21870 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21871 pEventData->pEventData,
21872 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21873
21874 /*Fill in the indication parameters*/
21875 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21876
21877 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21878 = halNoaStartIndMsg.noaStartIndParams.status;
21879
21880 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21881 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21882
21883 /*Notify UMAC*/
21884 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21885
21886 return WDI_STATUS_SUCCESS;
21887}/*WDI_ProcessNoaAttrInd*/
21888
21889/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021890*@brief Process Noa Attr Indication function (called when
21891 an indication of this kind is being received over the
21892 bus from HAL)
21893
21894 @param pWDICtx: pointer to the WLAN DAL context
21895 pEventData: pointer to the event information structure
21896
21897 @see
21898 @return Result of the function call
21899*/
21900WDI_Status
21901WDI_ProcessP2pNoaAttrInd
21902(
21903 WDI_ControlBlockType* pWDICtx,
21904 WDI_EventInfoType* pEventData
21905)
21906{
21907 WDI_LowLevelIndType wdiInd;
21908 tNoaAttrIndMsg halNoaAttrIndMsg;
21909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21910
21911 /*-------------------------------------------------------------------------
21912 Sanity check
21913 -------------------------------------------------------------------------*/
21914 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21915 ( NULL == pEventData->pEventData ))
21916 {
21917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021919 WDI_ASSERT( 0 );
21920 return WDI_STATUS_E_FAILURE;
21921 }
21922
21923 /*-------------------------------------------------------------------------
21924 Extract indication and send it to UMAC
21925 -------------------------------------------------------------------------*/
21926 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21927 pEventData->pEventData,
21928 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21929
21930 /*Fill in the indication parameters*/
21931 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021932
Jeff Johnson295189b2012-06-20 16:38:30 -070021933 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21934 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021935
Jeff Johnson295189b2012-06-20 16:38:30 -070021936 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21937 = halNoaAttrIndMsg.noaAttrIndParams.index;
21938 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21939 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21940 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21941 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021942
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21944 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21945 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21946 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21947 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21948 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21949 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21950 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021951
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21953 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21954 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21955 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21956 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21957 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21958 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21959 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21960
ltimariub77f24b2013-01-24 18:54:33 -080021961 if ( pWDICtx->wdiLowLevelIndCB )
21962 {
21963 /*Notify UMAC*/
21964 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21965 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021966
21967 return WDI_STATUS_SUCCESS;
21968}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021969
21970/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021972 an indication of this kind is being received over the
21973 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021974
21975 @param pWDICtx: pointer to the WLAN DAL context
21976 pEventData: pointer to the event information structure
21977
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 @see
21979 @return Result of the function call
21980*/
21981WDI_Status
21982WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021983(
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 WDI_ControlBlockType* pWDICtx,
21985 WDI_EventInfoType* pEventData
21986)
21987{
21988 WDI_LowLevelIndType wdiInd;
21989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021990
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 /*-------------------------------------------------------------------------
21992 Extract indication and send it to UMAC
21993 -------------------------------------------------------------------------*/
21994 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021995 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21996
ltimariub77f24b2013-01-24 18:54:33 -080021997 if ( pWDICtx->wdiLowLevelIndCB )
21998 {
21999 /*Notify UMAC*/
22000 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22001 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022002
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022004}/*WDI_ProcessTxPerHitInd*/
22005
Jeff Johnson295189b2012-06-20 16:38:30 -070022006/**
Yue Mab9c86f42013-08-14 15:59:08 -070022007 @brief Process Periodic Tx Pattern Fw Indication function
22008
22009 @param pWDICtx: pointer to the WLAN DAL context
22010 pEventData: pointer to the event information structure
22011
22012 @see
22013 @return Result of the function call
22014*/
22015WDI_Status
22016WDI_ProcessPeriodicTxPtrnFwInd
22017(
22018 WDI_ControlBlockType* pWDICtx,
22019 WDI_EventInfoType* pEventData
22020)
22021{
22022 WDI_LowLevelIndType wdiInd;
22023
22024 /*-------------------------------------------------------------------------
22025 Sanity check
22026 -------------------------------------------------------------------------*/
22027 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22028 (NULL == pEventData->pEventData))
22029 {
22030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22031 "%s: Invalid parameters", __func__);
22032 WDI_ASSERT(0);
22033 return WDI_STATUS_E_FAILURE;
22034 }
22035
22036 /*-------------------------------------------------------------------------
22037 Extract indication and send it to UMAC
22038 -------------------------------------------------------------------------*/
22039 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22040 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22041 sizeof(tHalPeriodicTxPtrnFwInd));
22042
22043 if (pWDICtx->wdiLowLevelIndCB)
22044 {
22045 /*Notify UMAC*/
22046 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22047 }
22048
22049 return WDI_STATUS_SUCCESS;
22050}
22051
22052/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022053 @brief WDI_ProcessFTMCommandReq
22054 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022055
22056 @param pWDICtx: pointer to the WLAN DAL context
22057 pEventData: pointer to the event information structure
22058
Jeff Johnson295189b2012-06-20 16:38:30 -070022059 @see
22060 @return Result of the function call
22061*/
22062WDI_Status
22063WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022064(
Jeff Johnson295189b2012-06-20 16:38:30 -070022065 WDI_ControlBlockType* pWDICtx,
22066 WDI_EventInfoType* pEventData
22067)
22068{
22069 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22070 wpt_uint8 *ftmCommandBuffer = NULL;
22071 wpt_uint16 dataOffset;
22072 wpt_uint16 bufferSize;
22073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022074 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022075 -------------------------------------------------------------------------*/
22076 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22077 ( NULL == pEventData->pEventData))
22078
22079 {
22080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022084 }
22085
22086 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22087
22088 /* Get MSG Buffer */
22089 WDI_GetMessageBuffer(pWDICtx,
22090 WDI_FTM_CMD_REQ,
22091 ftmCommandReq->bodyLength,
22092 &ftmCommandBuffer,
22093 &dataOffset,
22094 &bufferSize);
22095
22096 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22097 ftmCommandReq->FTMCommandBody,
22098 ftmCommandReq->bodyLength);
22099
22100 /* Send MSG */
22101 return WDI_SendMsg(pWDICtx,
22102 ftmCommandBuffer,
22103 bufferSize,
22104 pEventData->pCBfnc,
22105 pEventData->pUserData,
22106 WDI_FTM_CMD_RESP);
22107}
22108
22109/**
22110 @brief WDI_ProcessFTMCommandRsp
22111 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022112
22113 @param pWDICtx: pointer to the WLAN DAL context
22114 pEventData: pointer to the event information structure
22115
Jeff Johnson295189b2012-06-20 16:38:30 -070022116 @see
22117 @return Result of the function call
22118*/
22119WDI_Status
22120WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022121(
Jeff Johnson295189b2012-06-20 16:38:30 -070022122 WDI_ControlBlockType* pWDICtx,
22123 WDI_EventInfoType* pEventData
22124)
22125{
22126 WDI_FTMCommandRspCb ftmCMDRspCb;
22127 tProcessPttRspParams *ftmCMDRspData = NULL;
22128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22129
22130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 -------------------------------------------------------------------------*/
22133 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22134 ( NULL == pEventData->pEventData))
22135 {
22136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022140 }
22141
22142 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22143
22144 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22145
Jeff Johnsone7245742012-09-05 17:12:55 -070022146 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22147 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022148 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22149
22150 /*Notify UMAC*/
22151 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22152
Jeff Johnsone7245742012-09-05 17:12:55 -070022153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022154}
Jeff Johnson295189b2012-06-20 16:38:30 -070022155/**
22156 @brief WDI_ProcessHalDumpCmdReq
22157 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022158
22159 @param pWDICtx: pointer to the WLAN DAL context
22160 pEventData: pointer to the event information structure
22161
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 @see
22163 @return Result of the function call
22164*/
22165WDI_Status
22166WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022167(
Jeff Johnson295189b2012-06-20 16:38:30 -070022168 WDI_ControlBlockType* pWDICtx,
22169 WDI_EventInfoType* pEventData
22170)
22171{
22172 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22173 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22174 wpt_uint16 usDataOffset = 0;
22175 wpt_uint16 usSendSize = 0;
22176 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022177 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022178
22179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 -------------------------------------------------------------------------*/
22182 if (( NULL == pEventData ) ||
22183 ( NULL == pEventData->pEventData) ||
22184 ( NULL == pEventData->pCBfnc ))
22185 {
22186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022190 }
22191
22192 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
22193 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
22194
22195 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022196 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022197 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070022198 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022199 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022200 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022201 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070022202 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022203 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070022206
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 /*-----------------------------------------------------------------------
22208 Get message buffer
22209 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022211 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
22212 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022213 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022214 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
22215 {
22216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022217 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022218 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
22219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022221 }
22222
Jeff Johnsone7245742012-09-05 17:12:55 -070022223 wpalMemoryCopy( pSendBuffer+usDataOffset,
22224 &halDumpCmdReqMsg.dumpCmdReqParams,
22225 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070022226
22227 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022228 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022229
22230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022231 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22234 wdiHALDumpCmdRspCb, pEventData->pUserData,
22235 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022236}
22237
22238/**
22239 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022240 Process hal Dump Command Response from HAL, simply route to HDD
22241
22242 @param pWDICtx: pointer to the WLAN DAL context
22243 pEventData: pointer to the event information structure
22244
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 @see
22246 @return Result of the function call
22247*/
22248WDI_Status
22249WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022250(
Jeff Johnson295189b2012-06-20 16:38:30 -070022251 WDI_ControlBlockType* pWDICtx,
22252 WDI_EventInfoType* pEventData
22253)
22254{
22255 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022256 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22258
22259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 -------------------------------------------------------------------------*/
22262 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22263 ( NULL == pEventData->pEventData))
22264 {
22265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022269 }
22270
Jeff Johnsone7245742012-09-05 17:12:55 -070022271 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022272
22273 /*Initialize the WDI Response structure */
22274 wdiHALDumpCmdRsp.usBufferLen = 0;
22275 wdiHALDumpCmdRsp.pBuffer = NULL;
22276
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022277 wpalMemoryCopy( &halDumpCmdRspParams,
22278 pEventData->pEventData,
22279 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022280
22281 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022282 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022283
22284 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022285 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 {
22287 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022288 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22289 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22290
22291 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22292 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022293 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022294 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022295
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 /*Notify UMAC*/
22297 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22298
22299 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22300 {
22301 /* Free the allocated buffer */
22302 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22303 }
22304 return WDI_STATUS_SUCCESS;
22305}
22306
22307/*==========================================================================
22308 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022309
Jeff Johnson295189b2012-06-20 16:38:30 -070022310 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022311 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022312==========================================================================*/
22313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022314 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 when it wishes to send up a notification like the ones
22316 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022317
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022319
22320 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022322 wctsNotifyCBData: the callback data of the user
22323
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022325
22326 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022327*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022328void
Jeff Johnson295189b2012-06-20 16:38:30 -070022329WDI_NotifyMsgCTSCB
22330(
Jeff Johnsone7245742012-09-05 17:12:55 -070022331 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022332 WCTS_NotifyEventType wctsEvent,
22333 void* wctsNotifyCBData
22334)
22335{
Jeff Johnsone7245742012-09-05 17:12:55 -070022336 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22338
22339 if (NULL == pWDICtx )
22340 {
22341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022342 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022343 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022344 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022345 }
22346
22347 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22348 {
22349 /* callback presumably occurred after close */
22350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022351 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022352 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022353 }
22354
22355 if ( WCTS_EVENT_OPEN == wctsEvent )
22356 {
22357 /*Flag must be set atomically as it is checked from incoming request
22358 functions*/
22359 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022361
22362 /*Nothing to do - so try to dequeue any pending request that may have
22363 occurred while we were trying to establish this*/
22364 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022365 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022366 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022367 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022368 {
22369 /*Flag must be set atomically as it is checked from incoming request
22370 functions*/
22371 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022372 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022373
22374 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 wpalMutexRelease(&pWDICtx->wptMutex);
22377
22378 /*Notify that the Control Channel is closed */
22379 wpalEventSet(&pWDICtx->wctsActionEvent);
22380 }
22381
22382}/*WDI_NotifyMsgCTSCB*/
22383
22384
22385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022386 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022387 when it wishes to send up a packet received over the
22388 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022389
Jeff Johnson295189b2012-06-20 16:38:30 -070022390 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022391
22392 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022393 pMsg: the packet
22394 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022395 wctsRxMsgCBData: the callback data of the user
22396
Jeff Johnson295189b2012-06-20 16:38:30 -070022397 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022398
22399 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022400*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022401void
22402WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022403(
Jeff Johnsone7245742012-09-05 17:12:55 -070022404 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022405 void* pMsg,
22406 wpt_uint32 uLen,
22407 void* wctsRxMsgCBData
22408)
22409{
Jeff Johnsone7245742012-09-05 17:12:55 -070022410 tHalMsgHeader *pHalMsgHeader;
22411 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22414
22415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022418 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 ( uLen < sizeof(tHalMsgHeader)))
22420 {
22421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 }
22426
22427 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22428 {
22429 /* callback presumably occurred after close */
22430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022431 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 }
22434
Jeff Johnsone7245742012-09-05 17:12:55 -070022435 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022436 context - so no serialization is necessary here
22437 ! - revisit this assumption */
22438
22439 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22440
22441 if ( uLen != pHalMsgHeader->msgLen )
22442 {
22443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22444 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022445 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022446 wpalWlanReload();
22447
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 }
22450
22451 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22452
22453 /*The message itself starts after the header*/
22454 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22455 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22456 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22457 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22458
22459
22460 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22461 {
22462 /*Stop the timer as the response was received */
22463 /*!UT - check for potential race conditions between stop and response */
22464 wpalTimerStop(&pWDICtx->wptResponseTimer);
22465 }
22466 /* Check if we receive a response message which is not expected */
22467 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22468 {
22469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22470 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22471 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022472 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22474 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022475
22476 if (gWDICb.bEnableSSR == false)
22477 {
22478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22479 "SSR is not enabled on WDI timeout");
22480 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22481 return;
22482 }
22483 wpalWcnssResetIntr();
22484 /* if this timer fires, it means Riva did not receive the FIQ */
22485 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22486
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 return;
22488 }
22489
22490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22491 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22492
22493 /*Post response event to the state machine*/
22494 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22495
22496}/*WDI_RXMsgCTSCB*/
22497
22498
22499/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022500 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022501========================================================================*/
22502
22503/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022506
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 @param pWDICtx - pointer to the control block
22508
22509 @return Result of the function call
22510*/
22511WPT_INLINE WDI_Status
22512WDI_CleanCB
22513(
22514 WDI_ControlBlockType* pWDICtx
22515)
22516{
22517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22518
22519 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022521
Jeff Johnsone7245742012-09-05 17:12:55 -070022522 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22524 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22525
22526 WDI_ResetAssocSessions( pWDICtx );
22527
22528 return WDI_STATUS_SUCCESS;
22529}/*WDI_CleanCB*/
22530
22531
22532/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022533 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022534
Jeff Johnsone7245742012-09-05 17:12:55 -070022535
22536 @param pWDICtx: pointer to the WLAN DAL context
22537 pEventData: pointer to the event information structure
22538
Jeff Johnson295189b2012-06-20 16:38:30 -070022539 @see
22540 @return Result of the function call
22541*/
22542WPT_INLINE WDI_Status
22543WDI_ProcessRequest
22544(
22545 WDI_ControlBlockType* pWDICtx,
22546 WDI_EventInfoType* pEventData
22547)
22548{
22549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22550
Jeff Johnsone7245742012-09-05 17:12:55 -070022551 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 already checked these pointers*/
22553
22554 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22555 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022556 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022558 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 WDI_getReqMsgString(pEventData->wdiRequest),
22560 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22561 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22562 }
22563 else
22564 {
22565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 pEventData->wdiRequest);
22568 return WDI_STATUS_E_NOT_IMPLEMENT;
22569 }
22570}/*WDI_ProcessRequest*/
22571
22572
22573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022574 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022575 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 prefixes it with a send message header
22577
22578 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022579 wdiReqType: type of the request being sent
22580 uBufferLen: message buffer len
22581 pMsgBuffer: resulting allocated buffer
22582 pusDataOffset: offset in the buffer where the caller
22583 can start copying its message data
22584 puBufferSize: the resulting buffer size (offset+buff
22585 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022586
Jeff Johnson295189b2012-06-20 16:38:30 -070022587 @see
22588 @return Result of the function call
22589*/
22590WDI_Status
22591WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022592(
22593 WDI_ControlBlockType* pWDICtx,
22594 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022595 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022596 wpt_uint8** pMsgBuffer,
22597 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022598 wpt_uint16* pusBufferSize
22599)
22600{
22601 tHalMsgHeader halMsgHeader;
22602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22603
Jeff Johnsone7245742012-09-05 17:12:55 -070022604 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022605 again*/
22606
22607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022608 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022610 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022611 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22612 if ( NULL == *pMsgBuffer )
22613 {
22614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22615 "Unable to allocate message buffer for req %s (%d)",
22616 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022617 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022620 }
22621
22622 /*-------------------------------------------------------------------------
22623 Fill in the message header
22624 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022625 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22626 /* Fill msgVersion */
22627#ifdef WLAN_FEATURE_11AC
22628 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022629 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 else
22631#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022632 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022633
Jeff Johnsone7245742012-09-05 17:12:55 -070022634 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22635 *pusDataOffset = sizeof(halMsgHeader);
22636 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22637
22638 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022639}/*WDI_GetMessageBuffer*/
22640
22641
22642/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022643 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022644 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022645 the CB
22646
22647 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022648 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022649
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 usSendSize size of the buffer to be sent
22651 pRspCb: response callback - save in the WDI
22652 CB
22653 pUserData: user data associated with the
22654 callback
22655 wdiExpectedResponse: the code of the response that is
22656 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022657
Jeff Johnson295189b2012-06-20 16:38:30 -070022658 @see
22659 @return Result of the function call
22660*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022661WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022662WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022663(
22664 WDI_ControlBlockType* pWDICtx,
22665 wpt_uint8* pSendBuffer,
22666 wpt_uint32 usSendSize,
22667 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 void* pUserData,
22669 WDI_ResponseEnumType wdiExpectedResponse
22670)
22671{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022672 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022673 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22675
22676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022677 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 ------------------------------------------------------------------------*/
22679 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022680 pWDICtx->pfncRspCB = pRspCb;
22681 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022682
22683 /*-----------------------------------------------------------------------
22684 Call the CTS to send this message over - free message afterwards
22685 - notify transport failure
22686 Note: CTS is reponsible for freeing the message buffer.
22687 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022688 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22689 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22690 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022691 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022693 "Failed to send message with expected response %s (%d)"
22694 " over the bus - catastrophic failure",
22695 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22696 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022697
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022698 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22699 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022701 else
22702 {
22703 /* even when message was placed in CTS deferred Q, we will treat it
22704 success but log this info
22705 */
22706 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22707 {
22708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22709 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22710 "response %s (%d)",
22711 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22712 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022713 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022714 }
22715 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022716
Jeff Johnsond13512a2012-07-17 11:42:19 -070022717 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 if ( NULL != pWDICtx->wdiReqStatusCB )
22719 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022720 /*Inform originator whether request went through or not*/
22721 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22722 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 pWDICtx->wdiReqStatusCB = NULL;
22724 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022725 callback(wdiStatus, callbackContext);
22726
22727 /*For WDI requests which have registered a request callback,
22728 inform the WDA caller of the same via setting the return value
22729 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22730 end up repeating the functonality in the req callback for the
22731 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022732 if (wdiStatus != WDI_STATUS_SUCCESS)
22733 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022734 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022735 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022736 }
22737
Jeff Johnsond13512a2012-07-17 11:42:19 -070022738 if ( wdiStatus == WDI_STATUS_SUCCESS )
22739 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022740 /*Start timer for the expected response */
22741 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022742
22743 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022744 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022745 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022746 }
22747 else
22748 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022749 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022750 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22751 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022752
Jeff Johnsond13512a2012-07-17 11:42:19 -070022753 return wdiStatus;
22754
Jeff Johnson295189b2012-06-20 16:38:30 -070022755}/*WDI_SendMsg*/
22756
22757
22758
22759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022760 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022761 the bus using the control transport and saves some info
22762 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022763
22764 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022765 pSendBuffer: buffer to be sent
22766 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022767
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 @see
22769 @return Result of the function call
22770*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022772WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022773(
22774 WDI_ControlBlockType* pWDICtx,
22775 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022776 wpt_uint32 usSendSize
22777)
22778{
22779 wpt_uint32 uStatus ;
22780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22781
22782 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 Note: CTS is reponsible for freeing the message buffer.
22785 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022786 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 (void*)pSendBuffer, usSendSize );
22788
22789 /*Inform Upper MAC about the outcome of the request*/
22790 if ( NULL != pWDICtx->wdiReqStatusCB )
22791 {
22792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22793 "Send indication status : %d", uStatus);
22794
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022795 /* even if CTS placed indication into its deferred Q, we treat it
22796 * as success and let CTS drain its queue as per smd interrupt to CTS
22797 */
22798 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 -070022799 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 }
22801
22802 /*If sending of the message failed - it is considered catastrophic and
22803 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022804 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22805 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22806
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 {
22808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022809 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022810
22811 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22812 return WDI_STATUS_E_FAILURE;
22813 }
22814
Jeff Johnsone7245742012-09-05 17:12:55 -070022815 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022816}/*WDI_SendIndication*/
22817
22818
22819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022820 @brief WDI_DetectedDeviceError - called internally by DAL when
22821 it has detected a failure in the device
22822
22823 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 usErrorCode: error code detected by WDI or received
22825 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022826
Jeff Johnson295189b2012-06-20 16:38:30 -070022827 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022829*/
22830void
22831WDI_DetectedDeviceError
22832(
22833 WDI_ControlBlockType* pWDICtx,
22834 wpt_uint16 usErrorCode
22835)
22836{
22837 WDI_LowLevelIndType wdiInd;
22838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22839
22840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22841 "Device Error detected code: %d - transitioning to stopped state",
22842 usErrorCode);
22843
Katya Nigamf02ad012014-05-05 16:12:49 +053022844 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22845
Jeff Johnson295189b2012-06-20 16:38:30 -070022846 wpalMutexAcquire(&pWDICtx->wptMutex);
22847
22848 WDI_STATableStop(pWDICtx);
22849
22850 WDI_ResetAssocSessions(pWDICtx);
22851
22852 /*Set the expected state transition to stopped - because the device
22853 experienced a failure*/
22854 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22855
22856 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022857 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022858
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022860
22861 /*TO DO: - there should be an attempt to reset the device here*/
22862
22863 wpalMutexRelease(&pWDICtx->wptMutex);
22864
22865 /*------------------------------------------------------------------------
22866 Notify UMAC if a handler is registered
22867 ------------------------------------------------------------------------*/
22868 if (pWDICtx->wdiLowLevelIndCB)
22869 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022870 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22871 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022872
22873 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22874 }
22875}/*WDI_DetectedDeviceError*/
22876
22877/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022878 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022879 we started on send message has expire - this should
22880 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022881 reply - trigger catastrophic failure
22882 @param
22883
Jeff Johnson295189b2012-06-20 16:38:30 -070022884 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022885
22886 @see
22887 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022888*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022889void
Jeff Johnson295189b2012-06-20 16:38:30 -070022890WDI_ResponseTimerCB
22891(
22892 void *pUserData
22893)
22894{
22895 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22897
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022898 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022899 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022903 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022904 }
22905
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022906 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022907 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022908 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022909
22910 /* If response timer is running at this time that means this timer
22911 * event is not for the last request but rather last-to-last request and
22912 * this timer event has come after we recevied respone for last-to-last
22913 * message
22914 */
22915 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22916 {
22917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22918 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022919 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022920 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22922 "uArchTimeStampTmrStart: %llu seconds, "
22923 "uArchTimeStampTmrExp: %llu seconds",
22924 pWDICtx->uArchTimeStampRspTmrStart,
22925 pWDICtx->uArchTimeStampRspTmrExp);
22926
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022927 return;
22928 }
22929
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022930 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022931 {
22932
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022934 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022935 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022936 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022937 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22938 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22940 "uArchTimeStampTmrStart: %llu seconds, "
22941 "uArchTimeStampTmrExp: %llu seconds",
22942 pWDICtx->uArchTimeStampRspTmrStart,
22943 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022944
22945 /* WDI timeout means Riva is not responding or SMD communication to Riva
22946 * is not happening. The only possible way to recover from this error
22947 * is to initiate SSR from APPS.
22948 * There is also an option to re-enable wifi, which will eventually
22949 * trigger SSR
22950 */
22951 if (gWDICb.bEnableSSR == false)
22952 {
22953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22954 "SSR is not enabled on WDI timeout");
22955 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22956 return;
22957 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022958#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022959 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022960 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022961 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022962 if(wpalIsSsrPanicOnFailure())
22963 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022964 } else {
22965 /* if this timer fires, it means Riva did not receive the FIQ */
22966 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022967 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022968#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022969 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22970 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022971#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 }
22973 else
22974 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022976 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022977 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022978 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22979 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22981 "uArchTimeStampTmrStart: %llu seconds, "
22982 "uArchTimeStampTmrExp: %llu seconds",
22983 pWDICtx->uArchTimeStampRspTmrStart,
22984 pWDICtx->uArchTimeStampRspTmrExp);
22985
Jeff Johnson295189b2012-06-20 16:38:30 -070022986 }
22987
22988 return;
22989
22990}/*WDI_ResponseTimerCB*/
22991
22992
22993/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022994 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022995
Jeff Johnsone7245742012-09-05 17:12:55 -070022996
22997 @param pWDICtx: pointer to the WLAN DAL context
22998 pEventData: pointer to the event information structure
22999
Jeff Johnson295189b2012-06-20 16:38:30 -070023000 @see
23001 @return Result of the function call
23002*/
23003WPT_INLINE WDI_Status
23004WDI_ProcessResponse
23005(
23006 WDI_ControlBlockType* pWDICtx,
23007 WDI_EventInfoType* pEventData
23008)
23009{
23010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23011
Jeff Johnsone7245742012-09-05 17:12:55 -070023012 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023013 already checked these pointers
23014 ! - revisit this assumption */
23015 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23016 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023017 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023019 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070023020 WDI_getRespMsgString(pEventData->wdiResponse),
23021 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23022 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23023 }
23024 else
23025 {
23026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023027 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023028 pEventData->wdiResponse);
23029 return WDI_STATUS_E_NOT_IMPLEMENT;
23030 }
23031}/*WDI_ProcessResponse*/
23032
23033
23034/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023035 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023036=========================================================================*/
23037
23038/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023039 @brief Utility function used by the DAL Core to help queue a
23040 request that cannot be processed right away.
23041 @param
23042
Jeff Johnson295189b2012-06-20 16:38:30 -070023043 pWDICtx: - pointer to the WDI control block
23044 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023045 queued
23046
23047 @see
23048 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023049*/
23050WDI_Status
23051WDI_QueuePendingReq
23052(
23053 WDI_ControlBlockType* pWDICtx,
23054 WDI_EventInfoType* pEventData
23055)
23056{
Jeff Johnsone7245742012-09-05 17:12:55 -070023057 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023058 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023059 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23061
23062 if ( NULL == pEventDataQueue )
23063 {
23064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023065 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 WDI_ASSERT(0);
23067 return WDI_STATUS_MEM_FAILURE;
23068 }
23069
23070 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23071 pEventDataQueue->pUserData = pEventData->pUserData;
23072 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23073 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023075
23076 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23077 {
23078 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023079
Jeff Johnson295189b2012-06-20 16:38:30 -070023080 if ( NULL == pEventInfo )
23081 {
23082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023084 WDI_ASSERT(0);
23085 wpalMemoryFree(pEventDataQueue);
23086 return WDI_STATUS_MEM_FAILURE;
23087 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023088
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23090
23091 }
23092 pEventDataQueue->pEventData = pEventInfo;
23093
23094 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023095 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023096
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023097 if (eWLAN_PAL_STATUS_E_FAILURE ==
23098 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23099 {
23100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23101 "pEventDataQueue wpal_list_insert_back failed");
23102 WDI_ASSERT(0);
23103 wpalMemoryFree(pEventDataQueue);
23104 wpalMemoryFree(pEventInfo);
23105 return WDI_STATUS_MEM_FAILURE;
23106 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023107
23108 return WDI_STATUS_SUCCESS;
23109}/*WDI_QueuePendingReq*/
23110
23111/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023112 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023113 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023114 @param
23115
23116 pMsg - pointer to the message
23117
23118 @see
23119 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023120*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023121void
Jeff Johnson295189b2012-06-20 16:38:30 -070023122WDI_PALCtrlMsgCB
23123(
23124 wpt_msg *pMsg
23125)
23126{
23127 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023128 WDI_ControlBlockType* pWDICtx = NULL;
23129 WDI_Status wdiStatus;
23130 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023131 void* pUserData;
23132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23133
23134 if (( NULL == pMsg )||
23135 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23136 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23137 {
23138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023139 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023141 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 }
23143
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023144 /*Access to the global state must be locked */
23145 wpalMutexAcquire(&pWDICtx->wptMutex);
23146
Jeff Johnson295189b2012-06-20 16:38:30 -070023147 /*Transition back to the state that we had before serialization
23148 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023149 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023150 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023151 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023152
23153 /*-----------------------------------------------------------------------
23154 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023155 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023156 -----------------------------------------------------------------------*/
23157 switch ( pEventData->wdiRequest )
23158 {
23159
Jeff Johnsone7245742012-09-05 17:12:55 -070023160 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023161 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23162 break;
23163
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 case WDI_NV_DOWNLOAD_REQ:
23165 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23166 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23167 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23168 {
23169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023170 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023171 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23172 }
23173 else
23174 {
23175 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
23176 }
23177
23178 break;
23179
23180 default:
23181 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23182 break;
23183 }/*switch ( pEventData->wdiRequest )*/
23184
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053023185 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053023186 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 {
23188 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
23189
23190 if ( NULL != pfnReqStatusCB )
23191 {
23192 /*Fail the request*/
23193 pfnReqStatusCB( wdiStatus, pUserData);
23194 }
23195 }
23196
23197 /* Free data - that was allocated when queueing*/
23198 if( pEventData != NULL )
23199 {
23200 if( pEventData->pEventData != NULL )
23201 {
23202 wpalMemoryFree(pEventData->pEventData);
23203 }
23204 wpalMemoryFree(pEventData);
23205 }
23206
23207 if( pMsg != NULL )
23208 {
23209 wpalMemoryFree(pMsg);
23210 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023211
Jeff Johnson295189b2012-06-20 16:38:30 -070023212}/*WDI_PALCtrlMsgCB*/
23213
23214/**
23215 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070023216 and schedule for execution a pending request
23217 @param
23218
Jeff Johnson295189b2012-06-20 16:38:30 -070023219 pWDICtx: - pointer to the WDI control block
23220 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023221 queued
23222
23223 @see
23224 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023225*/
23226WDI_Status
23227WDI_DequeuePendingReq
23228(
23229 WDI_ControlBlockType* pWDICtx
23230)
23231{
Jeff Johnsone7245742012-09-05 17:12:55 -070023232 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023234 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23236
Jeff Johnsone7245742012-09-05 17:12:55 -070023237 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023238
23239 if ( NULL == pNode )
23240 {
23241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023242 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 return WDI_STATUS_SUCCESS;
23244 }
23245
23246 /*The node actually points to the 1st element inside the Event Data struct -
23247 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023249
23250 /*Serialize processing in the control thread
23251 !TO DO: - check to see if these are all the messages params that need
23252 to be filled in*/
23253 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23254
23255 if ( NULL == palMsg )
23256 {
23257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023261 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 palMsg->callback = WDI_PALCtrlMsgCB;
23264 palMsg->ptr = pEventData;
23265
23266 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023267 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023268 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023269
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 /*Transition back to BUSY as we need to handle a queued request*/
23271 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023272
Jeff Johnson295189b2012-06-20 16:38:30 -070023273 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23274
23275 return WDI_STATUS_PENDING;
23276}/*WDI_DequeuePendingReq*/
23277
23278
23279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023281 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023282 away.- The assoc requests will be queued by BSSID
23283 @param
23284
Jeff Johnson295189b2012-06-20 16:38:30 -070023285 pWDICtx: - pointer to the WDI control block
23286 pEventData: pointer to the evnt info that needs to be queued
23287 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023288
23289 @see
23290 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023291*/
23292WDI_Status
23293WDI_QueueNewAssocRequest
23294(
23295 WDI_ControlBlockType* pWDICtx,
23296 WDI_EventInfoType* pEventData,
23297 wpt_macAddr macBSSID
23298)
23299{
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 wpt_uint8 i;
23301 WDI_BSSSessionType* pSession = NULL;
23302 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 void* pEventInfo;
23305 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023307
Jeff Johnsone7245742012-09-05 17:12:55 -070023308
23309 /*------------------------------------------------------------------------
23310 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 ------------------------------------------------------------------------*/
23312 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23313 {
23314 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23315 {
23316 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023317 pSession = &pWDICtx->aBSSSessions[i];
23318 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023319 }
23320 }
23321
23322 if ( i >= WDI_MAX_BSS_SESSIONS )
23323 {
23324 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023326 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023327
Jeff Johnson295189b2012-06-20 16:38:30 -070023328 /*------------------------------------------------------------------------
23329 Fill in the BSSID for this session and set the usage flag
23330 ------------------------------------------------------------------------*/
23331 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023333
23334 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023336 ------------------------------------------------------------------------*/
23337 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23338 if ( NULL == pEventDataQueue )
23339 {
23340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023341 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 WDI_ASSERT(0);
23343 return WDI_STATUS_MEM_FAILURE;
23344 }
23345
23346 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23347 if ( NULL == pSessionIdElement )
23348 {
23349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023350 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 WDI_ASSERT(0);
23352 wpalMemoryFree(pEventDataQueue);
23353 return WDI_STATUS_MEM_FAILURE;
23354 }
23355
23356 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23357 if ( NULL == pEventInfo )
23358 {
23359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023360 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023361 WDI_ASSERT(0);
23362 wpalMemoryFree(pSessionIdElement);
23363 wpalMemoryFree(pEventDataQueue);
23364 return WDI_STATUS_MEM_FAILURE;
23365 }
23366
23367 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23368 pEventDataQueue->pUserData = pEventData->pUserData;
23369 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23370 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023371 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023372
23373 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23374 pEventDataQueue->pEventData = pEventInfo;
23375
23376 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378
23379 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023380 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023381
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023382 if (eWLAN_PAL_STATUS_E_FAILURE ==
23383 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23384 {
23385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23386 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23387 WDI_ASSERT(0);
23388 wpalMemoryFree(pSessionIdElement);
23389 wpalMemoryFree(pEventDataQueue);
23390 wpalMemoryFree(pEventInfo);
23391 return WDI_STATUS_MEM_FAILURE;
23392 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023393
23394 /*We need to maintain a separate list that keeps track of the order in which
23395 the new assoc requests are being queued such that we can start processing
23396 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023397 pSessionIdElement->ucIndex = i;
23398 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023399
23400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23401 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023402 if (eWLAN_PAL_STATUS_E_FAILURE ==
23403 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23404 {
23405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23406 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23407 WDI_ASSERT(0);
23408 wpalMemoryFree(pSessionIdElement);
23409 wpalMemoryFree(pEventDataQueue);
23410 wpalMemoryFree(pEventInfo);
23411 return WDI_STATUS_MEM_FAILURE;
23412 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023413
23414 /*Return pending as this is what the status of the request is since it has
23415 been queued*/
23416 return WDI_STATUS_PENDING;
23417}/*WDI_QueueNewAssocRequest*/
23418
23419/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023420 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023421 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 away.- The assoc requests will be queued by BSSID
23423 @param
23424
Jeff Johnson295189b2012-06-20 16:38:30 -070023425 pWDICtx: - pointer to the WDI control block
23426 pSession: - session in which to queue
23427 pEventData: pointer to the event info that needs to be
23428 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023429
23430 @see
23431 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023432*/
23433WDI_Status
23434WDI_QueueAssocRequest
23435(
23436 WDI_ControlBlockType* pWDICtx,
23437 WDI_BSSSessionType* pSession,
23438 WDI_EventInfoType* pEventData
23439)
23440{
Jeff Johnsone7245742012-09-05 17:12:55 -070023441 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023442 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023443 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023445
23446 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 Sanity check
23448 ------------------------------------------------------------------------*/
23449 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23450 {
23451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023452 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023453
Jeff Johnsone7245742012-09-05 17:12:55 -070023454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023455 }
23456
23457 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023458 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 ------------------------------------------------------------------------*/
23460 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23461 if ( NULL == pEventDataQueue )
23462 {
23463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023464 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023465 WDI_ASSERT(0);
23466 return WDI_STATUS_MEM_FAILURE;
23467 }
23468
23469 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23470 if ( NULL == pEventInfo )
23471 {
23472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23473 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023474 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023475 WDI_ASSERT(0);
23476 wpalMemoryFree(pEventDataQueue);
23477 return WDI_STATUS_MEM_FAILURE;
23478 }
23479
23480 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23481 pEventDataQueue->pUserData = pEventData->pUserData;
23482 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23483 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023484 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023485 pEventDataQueue->pEventData = pEventInfo;
23486
23487 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23488
23489 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023490 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023491
23492 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023493 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023494
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023495 if (eWLAN_PAL_STATUS_E_FAILURE ==
23496 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23497 {
23498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23499 "%s: Cannot allocate memory for queueing event data info",
23500 __func__);
23501 WDI_ASSERT(0);
23502 wpalMemoryFree(pEventDataQueue);
23503 wpalMemoryFree(pEventInfo);
23504 return WDI_STATUS_MEM_FAILURE;
23505 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023506
23507 /*The result of this operation is pending because the request has been
23508 queued and it will be processed at a later moment in time */
23509 return WDI_STATUS_PENDING;
23510}/*WDI_QueueAssocRequest*/
23511
23512/**
23513 @brief Utility function used by the DAL Core to help dequeue
23514 an association request that was pending
23515 The request will be queued up in front of the main
23516 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023517 @param
23518
Jeff Johnson295189b2012-06-20 16:38:30 -070023519 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023520
23521
23522 @see
23523 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023524*/
23525WDI_Status
23526WDI_DequeueAssocRequest
23527(
23528 WDI_ControlBlockType* pWDICtx
23529)
23530{
Jeff Johnsone7245742012-09-05 17:12:55 -070023531 wpt_list_node* pNode = NULL;
23532 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023533 WDI_BSSSessionType* pSession;
23534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023535
23536 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 Sanity check
23538 ------------------------------------------------------------------------*/
23539 if ( NULL == pWDICtx )
23540 {
23541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023543
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 }
23546
23547 /*------------------------------------------------------------------------
23548 An association has been completed => a new association can occur
23549 Check to see if there are any pending associations ->
23550 If so , transfer all the pending requests into the busy queue for
23551 processing
23552 These requests have arrived prior to the requests in the busy queue
23553 (bc they needed to be processed in order to be placed in this queue)
23554 => they will be placed at the front of the busy queue
23555 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023556 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023557
23558 if ( NULL == pNode )
23559 {
23560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023561 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023562 return WDI_STATUS_SUCCESS;
23563 }
23564
23565 /*The node actually points to the 1st element inside the Session Id struct -
23566 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023567 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023568
23569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23570 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23571
23572 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23573 {
23574 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023575
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023577 the front of the main waiting queue for subsequent execution*/
23578 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 while ( NULL != pNode )
23580 {
23581 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023582 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23583 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023585 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023586 }
23587 else
23588 {
23589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023590 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023591 WPAL_ASSERT(0);
23592 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023595
Jeff Johnson295189b2012-06-20 16:38:30 -070023596 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23597 wpalMemoryFree(pSessionIdElement);
23598 return WDI_STATUS_SUCCESS;
23599}/*WDI_DequeueAssocRequest*/
23600
23601/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023602 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023603 pending requests - all req cb will be called with
23604 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023605 @param
23606
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023608
23609 @see
23610 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023611*/
23612WDI_Status
23613WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023614(
Jeff Johnson295189b2012-06-20 16:38:30 -070023615 WDI_ControlBlockType* pWDICtx
23616)
23617{
Jeff Johnsone7245742012-09-05 17:12:55 -070023618 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023619 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023620 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 void* pUserData;
23622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23623
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023625
23626 /*------------------------------------------------------------------------
23627 Go through all the requests and fail them - this will only be called
23628 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 ------------------------------------------------------------------------*/
23631 while( pNode )
23632 {
23633 /*The node actually points to the 1st element inside the Event Data struct -
23634 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023635 pEventDataQueue = (WDI_EventInfoType*)pNode;
23636
Jeff Johnson295189b2012-06-20 16:38:30 -070023637 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23638 if ( NULL != pfnReqStatusCB )
23639 {
23640 /*Fail the request*/
23641 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23642 }
23643 /* Free data - that was allocated when queueing */
23644 if ( pEventDataQueue->pEventData != NULL )
23645 {
23646 wpalMemoryFree(pEventDataQueue->pEventData);
23647 }
23648 wpalMemoryFree(pEventDataQueue);
23649
23650 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23651 {
23652 break;
23653 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023654 }
23655
Jeff Johnson295189b2012-06-20 16:38:30 -070023656 return WDI_STATUS_SUCCESS;
23657}/*WDI_ClearPendingRequests*/
23658
23659/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023660 @brief Helper routine used to init the BSS Sessions in the WDI control block
23661
23662
23663 @param pWDICtx: pointer to the WLAN DAL context
23664
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 @see
23666*/
23667void
23668WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023669(
Jeff Johnson295189b2012-06-20 16:38:30 -070023670 WDI_ControlBlockType* pWDICtx
23671)
23672{
Jeff Johnsone7245742012-09-05 17:12:55 -070023673 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23675
23676 /*-------------------------------------------------------------------------
23677 No Sanity check
23678 -------------------------------------------------------------------------*/
23679 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23680 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023681 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023682 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23683 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23684 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23685 }
23686}/*WDI_ResetAssocSessions*/
23687
23688/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023689 @brief Helper routine used to find a session based on the BSSID
23690
23691
23692 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023694 pSession: pointer to the session (if found)
23695
Jeff Johnson295189b2012-06-20 16:38:30 -070023696 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023697 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023698*/
23699wpt_uint8
23700WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023701(
Jeff Johnson295189b2012-06-20 16:38:30 -070023702 WDI_ControlBlockType* pWDICtx,
23703 wpt_macAddr macBSSID,
23704 WDI_BSSSessionType** ppSession
23705)
23706{
Jeff Johnsone7245742012-09-05 17:12:55 -070023707 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23709
23710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023712 -------------------------------------------------------------------------*/
23713 if ( NULL == ppSession )
23714 {
23715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023716 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023717 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 }
23719
Jeff Johnsone7245742012-09-05 17:12:55 -070023720 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023721
Jeff Johnsone7245742012-09-05 17:12:55 -070023722 /*------------------------------------------------------------------------
23723 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 ------------------------------------------------------------------------*/
23725 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23726 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023727 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23728 (eWLAN_PAL_TRUE ==
23729 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23730 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 {
23732 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023733 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023734 return i;
23735 }
23736 }
23737
Jeff Johnsone7245742012-09-05 17:12:55 -070023738 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023739}/*WDI_FindAssocSession*/
23740
23741/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023742 @brief Helper routine used to find a session based on the BSSID
23743
23744
23745 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023746 ucBSSIdx: BSS Index of the session
23747 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023748
Jeff Johnson295189b2012-06-20 16:38:30 -070023749 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023750 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023751*/
23752wpt_uint8
23753WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023754(
Jeff Johnson295189b2012-06-20 16:38:30 -070023755 WDI_ControlBlockType* pWDICtx,
23756 wpt_uint16 ucBSSIdx,
23757 WDI_BSSSessionType** ppSession
23758)
23759{
Jeff Johnsone7245742012-09-05 17:12:55 -070023760 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23762
23763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023765 -------------------------------------------------------------------------*/
23766 if ( NULL == ppSession )
23767 {
23768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023769 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023770 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023771 }
23772
Jeff Johnsone7245742012-09-05 17:12:55 -070023773 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023774
Jeff Johnsone7245742012-09-05 17:12:55 -070023775 /*------------------------------------------------------------------------
23776 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023777 ------------------------------------------------------------------------*/
23778 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23779 {
23780 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23781 {
23782 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023783 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023784 return i;
23785 }
23786 }
23787
Jeff Johnsone7245742012-09-05 17:12:55 -070023788 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023789}/*WDI_FindAssocSessionByBSSIdx*/
23790
23791/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 @brief Helper routine used to find a session based on the BSSID
23793
23794
23795 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023796 ucBSSIdx: BSS Index of the session
23797 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023798
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023800 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023801*/
23802wpt_uint8
23803WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023804(
Jeff Johnson295189b2012-06-20 16:38:30 -070023805 WDI_ControlBlockType* pWDICtx,
23806 wpt_uint16 usIdx,
23807 WDI_BSSSessionType** ppSession
23808)
23809{
23810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23811
23812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 -------------------------------------------------------------------------*/
23815 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23816 {
23817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023818 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023819 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023820 }
23821
23822 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023823 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023824
23825 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023826
Jeff Johnson295189b2012-06-20 16:38:30 -070023827}/*WDI_FindAssocSessionByBSSIdx*/
23828
23829/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023830 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023831 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023832
23833
23834 @param pWDICtx: pointer to the WLAN DAL context
23835 pSession: pointer to the session (if found)
23836
Jeff Johnson295189b2012-06-20 16:38:30 -070023837 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023838 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023839*/
23840wpt_uint8
23841WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023842(
Jeff Johnson295189b2012-06-20 16:38:30 -070023843 WDI_ControlBlockType* pWDICtx,
23844 WDI_BSSSessionType** ppSession
23845)
23846{
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023850 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023851 -------------------------------------------------------------------------*/
23852 if ( NULL == ppSession )
23853 {
23854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023855 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023856 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023857 }
23858
Jeff Johnsone7245742012-09-05 17:12:55 -070023859 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023860
Jeff Johnsone7245742012-09-05 17:12:55 -070023861 /*------------------------------------------------------------------------
23862 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023863 ------------------------------------------------------------------------*/
23864 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23865 {
23866 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23867 {
23868 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023869 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023870 return i;
23871 }
23872 }
23873
Jeff Johnsone7245742012-09-05 17:12:55 -070023874 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023875}/*WDI_FindEmptySession*/
23876
23877
23878/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023879 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023881
23882
23883 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023884 macBSSID: pointer to BSSID. If NULL, get all the session.
23885 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23886 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23887 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023888 @see
23889 @return Number of sessions in use
23890*/
23891wpt_uint8
23892WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023893(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023894 WDI_ControlBlockType* pWDICtx,
23895 wpt_macAddr macBSSID,
23896 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023897)
23898{
Jeff Johnsone7245742012-09-05 17:12:55 -070023899 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023901
23902 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023903 Count all sessions in use
23904 ------------------------------------------------------------------------*/
23905 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23906 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023907 if ( macBSSID && skipBSSID &&
23908 (eWLAN_PAL_TRUE ==
23909 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23910 WDI_MAC_ADDR_LEN)))
23911 {
23912 continue;
23913 }
23914 else if ( pWDICtx->aBSSSessions[i].bInUse )
23915 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023916 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023917 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023918 }
23919
Jeff Johnsone7245742012-09-05 17:12:55 -070023920 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023921}/*WDI_GetActiveSessionsCount*/
23922
23923/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023924 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023925 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023926
23927
23928 @param pWDICtx: pointer to the WLAN DAL context
23929 pSession: pointer to the session (if found)
23930
Jeff Johnson295189b2012-06-20 16:38:30 -070023931 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023932 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023933*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023934void
Jeff Johnson295189b2012-06-20 16:38:30 -070023935WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023936(
Jeff Johnson295189b2012-06-20 16:38:30 -070023937 WDI_ControlBlockType* pWDICtx,
23938 WDI_BSSSessionType* ppSession
23939)
23940{
23941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023942 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 -------------------------------------------------------------------------*/
23944 if ( NULL == ppSession )
23945 {
23946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023947 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023948 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023949 }
23950
Jeff Johnsone7245742012-09-05 17:12:55 -070023951 /*------------------------------------------------------------------------
23952 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023953 ------------------------------------------------------------------------*/
23954 wpal_list_destroy(&ppSession->wptPendingQueue);
23955 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023956 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23957 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23959 wpal_list_init(&ppSession->wptPendingQueue);
23960
23961}/*WDI_DeleteSession*/
23962
23963/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023964 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023965 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 @param
23967
Jeff Johnson295189b2012-06-20 16:38:30 -070023968 WDI_AddStaParams: - pointer to the WDI Add STA params
23969 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023970
23971 @see
23972 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023973*/
23974void
23975WDI_AddBcastSTAtoSTATable
23976(
23977 WDI_ControlBlockType* pWDICtx,
23978 WDI_AddStaParams * staParams,
23979 wpt_uint16 usBcastStaIdx
23980)
23981{
23982 WDI_AddStaParams wdiAddSTAParam = {0};
23983 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23985
23986 /*---------------------------------------------------------------------
23987 Sanity check
23988 ---------------------------------------------------------------------*/
23989 if ( NULL == staParams )
23990 {
23991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023993
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 }
23996
23997 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23998 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23999 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
24000 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
24001 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
24002 wdiAddSTAParam.dpuSig = staParams->dpuSig;
24003 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
24004 WDI_MAC_ADDR_LEN );
24005 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
24006 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24007 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24008 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24009 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24010 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24011 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024012
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24014}
24015
24016/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 @brief NV blob will be divided into fragments of size 4kb and
24018 Sent to HAL
24019
24020 @param pWDICtx: pointer to the WLAN DAL context
24021 pEventData: pointer to the event information structure
24022
Jeff Johnson295189b2012-06-20 16:38:30 -070024023 @see
24024 @return Result of the function call
24025 */
24026
24027WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024028(
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 WDI_ControlBlockType* pWDICtx,
24030 WDI_EventInfoType* pEventData
24031)
24032{
24033
24034 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24035 wpt_uint8* pSendBuffer = NULL;
24036 wpt_uint16 usDataOffset = 0;
24037 wpt_uint16 usSendSize = 0;
24038 wpt_uint16 usCurrentFragmentSize =0;
24039 wpt_uint8* pSrcBuffer = NULL;
24040 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24041 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24042
24043 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24044 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24045 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24046
Jeff Johnsone7245742012-09-05 17:12:55 -070024047 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024048 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24049
24050 /* Update the current Fragment Number */
24051 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24052
24053 /*Update the HAL REQ structure */
24054 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24055 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24056 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24057
24058 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024059 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024060 image will be sent to HAL*/
24061
Jeff Johnsone7245742012-09-05 17:12:55 -070024062 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024063 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024064 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024065 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024066 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024067 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24068 usCurrentFragmentSize = FRAGMENT_SIZE;
24069
24070 /*Update the HAL REQ structure */
24071 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24072 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24073
24074 }
24075 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024076 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024077 usCurrentFragmentSize = FRAGMENT_SIZE;
24078
24079 /*Update the HAL REQ structure */
24080 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24081 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24082 }
24083
24084 /*-----------------------------------------------------------------------
24085 Get message buffer
24086 -----------------------------------------------------------------------*/
24087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24088 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24089 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024090 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024091 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24092 {
24093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024094 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024095 pEventData, pwdiNvDownloadReqParams);
24096 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024097 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024098 }
24099
24100 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024101 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24103
24104 /* Appending the NV image fragment */
24105 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24106 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24107 usCurrentFragmentSize);
24108
24109 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024110 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024111
Jeff Johnsone7245742012-09-05 17:12:55 -070024112 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24113 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 WDI_NV_DOWNLOAD_RESP);
24115
24116}
Jeff Johnsone7245742012-09-05 17:12:55 -070024117/*============================================================================
24118 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 ============================================================================*/
24120/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024121 @brief Helper routine used to find a session based on the BSSID
24122 @param pContext: pointer to the WLAN DAL context
24123 @param pDPContext: pointer to the Datapath context
24124
Jeff Johnson295189b2012-06-20 16:38:30 -070024125 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024126 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024127*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024128WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024129WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24130{
24131 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24132
24133 pCB->pDPContext = pDPContext;
24134 return;
24135}
24136
24137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024138 @brief Helper routine used to find a session based on the BSSID
24139
24140
24141 @param pContext: pointer to the WLAN DAL context
24142
Jeff Johnson295189b2012-06-20 16:38:30 -070024143 @see
24144 @return pointer to Datapath context
24145*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024146WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024147WDI_DS_GetDatapathContext (void *pContext)
24148{
24149 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24150 return pCB->pDPContext;
24151}
24152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024153 @brief Helper routine used to find a session based on the BSSID
24154
24155
24156 @param pContext: pointer to the WLAN DAL context
24157 @param pDTDriverContext: pointer to the Transport Driver context
24158
Jeff Johnson295189b2012-06-20 16:38:30 -070024159 @see
24160 @return void
24161*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024162WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024163WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24164{
24165 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24166
24167 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024168 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024169}
24170
24171/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024172 @brief Helper routine used to find a session based on the BSSID
24173
24174
24175 @param pWDICtx: pointer to the WLAN DAL context
24176
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024178 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070024179*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024180WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024181WDT_GetTransportDriverContext (void *pContext)
24182{
24183 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024184 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070024185}
24186
Jeff Johnsone7245742012-09-05 17:12:55 -070024187/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070024188 Helper inline converters
24189 ============================================================================*/
24190/*Convert WDI driver type into HAL driver type*/
24191WPT_STATIC WPT_INLINE WDI_Status
24192WDI_HAL_2_WDI_STATUS
24193(
24194 eHalStatus halStatus
24195)
24196{
Jeff Johnsone7245742012-09-05 17:12:55 -070024197 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024198 the chances of getting inlined*/
24199 switch( halStatus )
24200 {
24201 case eHAL_STATUS_SUCCESS:
24202 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24203 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24204 return WDI_STATUS_SUCCESS;
24205 case eHAL_STATUS_FAILURE:
24206 return WDI_STATUS_E_FAILURE;
24207 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070024208 return WDI_STATUS_MEM_FAILURE;
24209 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070024210 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024211 default:
24212 return WDI_STATUS_DEV_INTERNAL_FAILURE;
24213 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024214
Jeff Johnsone7245742012-09-05 17:12:55 -070024215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024216}/*WDI_HAL_2_WDI_STATUS*/
24217
24218/*Convert WDI request type into HAL request type*/
24219WPT_STATIC WPT_INLINE tHalHostMsgType
24220WDI_2_HAL_REQ_TYPE
24221(
24222 WDI_RequestEnumType wdiReqType
24223)
24224{
Jeff Johnsone7245742012-09-05 17:12:55 -070024225 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024226 the chances of getting inlined*/
24227 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070024228 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024229 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024230 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024231 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024232 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024233 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024234 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024235 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024236 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024237 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024238 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024239 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024240 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024241 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024242 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024243 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024244 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024245 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024246 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024247 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024248 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024249 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024250 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024251 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024252 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024253 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024254 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024255 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024256 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024257 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024258 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024259 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024260 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024261 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024262 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024263 return WLAN_HAL_RMV_STAKEY_REQ;
24264 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024265 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024266 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024267 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024269 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024270 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024271 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024272 case WDI_DEL_BA_REQ:
24273 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024274#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 case WDI_TSM_STATS_REQ:
24276 return WLAN_HAL_TSM_STATS_REQ;
24277#endif
24278 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024279 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024281 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024283 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024284 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024285 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024287 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 case WDI_ADD_BA_SESSION_REQ:
24289 return WLAN_HAL_ADD_BA_SESSION_REQ;
24290 case WDI_TRIGGER_BA_REQ:
24291 return WLAN_HAL_TRIGGER_BA_REQ;
24292 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024293 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024295 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24297 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24298 case WDI_SET_MAX_TX_POWER_REQ:
24299 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024300 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24301 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024302 case WDI_SET_TX_POWER_REQ:
24303 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24305 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024306#ifdef FEATURE_WLAN_TDLS
24307 case WDI_TDLS_LINK_ESTABLISH_REQ:
24308 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024309 case WDI_TDLS_CHAN_SWITCH_REQ:
24310 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024311#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024312 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024316 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024321 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024323 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024324 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024325 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024326 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024327 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024328 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024329 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 case WDI_REM_BEACON_FILTER_REQ:
24333 return WLAN_HAL_REM_BCN_FILTER_REQ;
24334 case WDI_SET_RSSI_THRESHOLDS_REQ:
24335 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24336 case WDI_HOST_OFFLOAD_REQ:
24337 return WLAN_HAL_HOST_OFFLOAD_REQ;
24338 case WDI_WOWL_ADD_BC_PTRN_REQ:
24339 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24340 case WDI_WOWL_DEL_BC_PTRN_REQ:
24341 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24342 case WDI_WOWL_ENTER_REQ:
24343 return WLAN_HAL_ENTER_WOWL_REQ;
24344 case WDI_WOWL_EXIT_REQ:
24345 return WLAN_HAL_EXIT_WOWL_REQ;
24346 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24347 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24348 case WDI_NV_DOWNLOAD_REQ:
24349 return WLAN_HAL_DOWNLOAD_NV_REQ;
24350 case WDI_FLUSH_AC_REQ:
24351 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24352 case WDI_BTAMP_EVENT_REQ:
24353 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24354#ifdef WLAN_FEATURE_VOWIFI_11R
24355 case WDI_AGGR_ADD_TS_REQ:
24356 return WLAN_HAL_AGGR_ADD_TS_REQ;
24357#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024358 case WDI_FTM_CMD_REQ:
24359 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 case WDI_ADD_STA_SELF_REQ:
24361 return WLAN_HAL_ADD_STA_SELF_REQ;
24362 case WDI_DEL_STA_SELF_REQ:
24363 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024364#ifdef FEATURE_OEM_DATA_SUPPORT
24365 case WDI_START_OEM_DATA_REQ:
24366 return WLAN_HAL_START_OEM_DATA_REQ;
24367#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 case WDI_HOST_RESUME_REQ:
24369 return WLAN_HAL_HOST_RESUME_REQ;
24370 case WDI_HOST_SUSPEND_IND:
24371 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024372 case WDI_TRAFFIC_STATS_IND:
24373 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024374#ifdef WLAN_FEATURE_11W
24375 case WDI_EXCLUDE_UNENCRYPTED_IND:
24376 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24377#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024378 case WDI_KEEP_ALIVE_REQ:
24379 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024380#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024381 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24382 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024383#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024384#ifdef FEATURE_WLAN_SCAN_PNO
24385 case WDI_SET_PREF_NETWORK_REQ:
24386 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24387 case WDI_SET_RSSI_FILTER_REQ:
24388 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24389 case WDI_UPDATE_SCAN_PARAMS_REQ:
24390 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24391#endif // FEATURE_WLAN_SCAN_PNO
24392 case WDI_SET_TX_PER_TRACKING_REQ:
24393 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24394#ifdef WLAN_FEATURE_PACKET_FILTERING
24395 case WDI_8023_MULTICAST_LIST_REQ:
24396 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24397 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024398 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024399 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24400 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24401 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24402 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24403#endif // WLAN_FEATURE_PACKET_FILTERING
24404 case WDI_HAL_DUMP_CMD_REQ:
24405 return WLAN_HAL_DUMP_COMMAND_REQ;
24406#ifdef WLAN_FEATURE_GTK_OFFLOAD
24407 case WDI_GTK_OFFLOAD_REQ:
24408 return WLAN_HAL_GTK_OFFLOAD_REQ;
24409 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24410 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24411#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24412
24413 case WDI_INIT_SCAN_CON_REQ:
24414 return WLAN_HAL_INIT_SCAN_CON_REQ;
24415 case WDI_SET_POWER_PARAMS_REQ:
24416 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24417 case WDI_SET_TM_LEVEL_REQ:
24418 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24419 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24420 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024421#ifdef WLAN_FEATURE_11AC
24422 case WDI_UPDATE_VHT_OP_MODE_REQ:
24423 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24424#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024425 case WDI_GET_ROAM_RSSI_REQ:
24426 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024427 case WDI_DHCP_START_IND:
24428 return WLAN_HAL_DHCP_START_IND;
24429 case WDI_DHCP_STOP_IND:
24430 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024431#ifdef FEATURE_WLAN_LPHB
24432 case WDI_LPHB_CFG_REQ:
24433 return WLAN_HAL_LPHB_CFG_REQ;
24434#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024435 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24436 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24437 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24438 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24439
Rajeev79dbe4c2013-10-05 11:03:42 +053024440#ifdef FEATURE_WLAN_BATCH_SCAN
24441 case WDI_SET_BATCH_SCAN_REQ:
24442 return WLAN_HAL_BATCHSCAN_SET_REQ;
24443 case WDI_STOP_BATCH_SCAN_IND:
24444 return WLAN_HAL_BATCHSCAN_STOP_IND;
24445 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24446 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24447#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024448 case WDI_RATE_UPDATE_IND:
24449 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024450 case WDI_START_HT40_OBSS_SCAN_IND:
24451 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24452 case WDI_STOP_HT40_OBSS_SCAN_IND:
24453 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024454 case WDI_UPDATE_CHAN_REQ:
24455 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024456 case WDI_CH_SWITCH_REQ_V1:
24457 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024458 case WDI_GET_BCN_MISS_RATE_REQ:
24459 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024460
24461#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24462 case WDI_LL_STATS_SET_REQ:
24463 return WLAN_HAL_LL_SET_STATS_REQ;
24464 case WDI_LL_STATS_GET_REQ:
24465 return WLAN_HAL_LL_GET_STATS_REQ;
24466 case WDI_LL_STATS_CLEAR_REQ:
24467 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24468#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024469#ifdef WLAN_FEATURE_EXTSCAN
24470 case WDI_EXTSCAN_START_REQ:
24471 return WLAN_HAL_EXT_SCAN_START_REQ;
24472 case WDI_EXTSCAN_STOP_REQ:
24473 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24474 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24475 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24476 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24477 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24478 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24479 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24480 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24481 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024482 case WDI_EXTSCAN_SET_SSID_HOTLIST_REQ:
24483 return WLAN_HAL_SSID_HOTLIST_SET_REQ;
24484 case WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ:
24485 return WLAN_HAL_SSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053024486 case WDI_HIGH_PRIORITY_DATA_INFO_IND:
24487 return WLAN_HAL_HIGH_PRIORITY_DATA_INFO_REQ;
Dino Mycle41bdc942014-06-10 11:30:24 +053024488#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024489 case WDI_SPOOF_MAC_ADDR_REQ:
24490 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024491 case WDI_GET_FW_STATS_REQ:
24492 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024493 case WDI_ENCRYPT_MSG_REQ:
24494 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024495 case WDI_FW_LOGGING_INIT_REQ:
24496 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024497 case WDI_GET_FRAME_LOG_REQ:
24498 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024499 case WDI_NAN_REQUEST:
24500 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024501 case WDI_SET_RTS_CTS_HTVHT_IND:
24502 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024503 case WDI_MON_START_REQ:
24504 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24505 case WDI_MON_STOP_REQ:
24506 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024507 case WDI_FW_LOGGING_DXE_DONE_IND:
24508 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024509 case WDI_FATAL_EVENT_LOGGING_REQ:
24510 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024511 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24512 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053024513 case WDI_FWR_MEM_DUMP_REQ:
24514 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024515 case WDI_START_RSSI_MONITOR_REQ:
24516 return WLAN_HAL_START_RSSI_MONITORING_REQ;
24517 case WDI_STOP_RSSI_MONITOR_REQ:
24518 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024519 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024520 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024521 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024522
Jeff Johnson295189b2012-06-20 16:38:30 -070024523}/*WDI_2_HAL_REQ_TYPE*/
24524
24525/*Convert WDI response type into HAL response type*/
24526WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24527HAL_2_WDI_RSP_TYPE
24528(
24529 tHalHostMsgType halMsg
24530)
24531{
Jeff Johnsone7245742012-09-05 17:12:55 -070024532 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 the chances of getting inlined*/
24534 switch( halMsg )
24535 {
24536 case WLAN_HAL_START_RSP:
24537 return WDI_START_RESP;
24538 case WLAN_HAL_STOP_RSP:
24539 return WDI_STOP_RESP;
24540 case WLAN_HAL_INIT_SCAN_RSP:
24541 return WDI_INIT_SCAN_RESP;
24542 case WLAN_HAL_START_SCAN_RSP:
24543 return WDI_START_SCAN_RESP;
24544 case WLAN_HAL_END_SCAN_RSP:
24545 return WDI_END_SCAN_RESP;
24546 case WLAN_HAL_FINISH_SCAN_RSP:
24547 return WDI_FINISH_SCAN_RESP;
24548 case WLAN_HAL_CONFIG_STA_RSP:
24549 return WDI_CONFIG_STA_RESP;
24550 case WLAN_HAL_DELETE_STA_RSP:
24551 return WDI_DEL_STA_RESP;
24552 case WLAN_HAL_CONFIG_BSS_RSP:
24553 return WDI_CONFIG_BSS_RESP;
24554 case WLAN_HAL_DELETE_BSS_RSP:
24555 return WDI_DEL_BSS_RESP;
24556 case WLAN_HAL_JOIN_RSP:
24557 return WDI_JOIN_RESP;
24558 case WLAN_HAL_POST_ASSOC_RSP:
24559 return WDI_POST_ASSOC_RESP;
24560 case WLAN_HAL_SET_BSSKEY_RSP:
24561 return WDI_SET_BSS_KEY_RESP;
24562 case WLAN_HAL_SET_STAKEY_RSP:
24563 return WDI_SET_STA_KEY_RESP;
24564 case WLAN_HAL_RMV_BSSKEY_RSP:
24565 return WDI_RMV_BSS_KEY_RESP;
24566 case WLAN_HAL_RMV_STAKEY_RSP:
24567 return WDI_RMV_STA_KEY_RESP;
24568 case WLAN_HAL_SET_BCASTKEY_RSP:
24569 return WDI_SET_STA_BCAST_KEY_RESP;
24570 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24571 // return WDI_RMV_STA_BCAST_KEY_RESP;
24572 case WLAN_HAL_ADD_TS_RSP:
24573 return WDI_ADD_TS_RESP;
24574 case WLAN_HAL_DEL_TS_RSP:
24575 return WDI_DEL_TS_RESP;
24576 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24577 return WDI_UPD_EDCA_PRMS_RESP;
24578 case WLAN_HAL_ADD_BA_RSP:
24579 return WDI_ADD_BA_RESP;
24580 case WLAN_HAL_DEL_BA_RSP:
24581 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024582#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024583 case WLAN_HAL_TSM_STATS_RSP:
24584 return WDI_TSM_STATS_RESP;
24585#endif
24586 case WLAN_HAL_CH_SWITCH_RSP:
24587 return WDI_CH_SWITCH_RESP;
24588 case WLAN_HAL_SET_LINK_ST_RSP:
24589 return WDI_SET_LINK_ST_RESP;
24590 case WLAN_HAL_GET_STATS_RSP:
24591 return WDI_GET_STATS_RESP;
24592 case WLAN_HAL_UPDATE_CFG_RSP:
24593 return WDI_UPDATE_CFG_RESP;
24594 case WLAN_HAL_ADD_BA_SESSION_RSP:
24595 return WDI_ADD_BA_SESSION_RESP;
24596 case WLAN_HAL_TRIGGER_BA_RSP:
24597 return WDI_TRIGGER_BA_RESP;
24598 case WLAN_HAL_UPDATE_BEACON_RSP:
24599 return WDI_UPD_BCON_PRMS_RESP;
24600 case WLAN_HAL_SEND_BEACON_RSP:
24601 return WDI_SND_BCON_RESP;
24602 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24603 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24604 /*Indications*/
24605 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24606 return WDI_HAL_RSSI_NOTIFICATION_IND;
24607 case WLAN_HAL_MISSED_BEACON_IND:
24608 return WDI_HAL_MISSED_BEACON_IND;
24609 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24610 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24611 case WLAN_HAL_MIC_FAILURE_IND:
24612 return WDI_HAL_MIC_FAILURE_IND;
24613 case WLAN_HAL_FATAL_ERROR_IND:
24614 return WDI_HAL_FATAL_ERROR_IND;
24615 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24616 return WDI_HAL_DEL_STA_IND;
24617 case WLAN_HAL_COEX_IND:
24618 return WDI_HAL_COEX_IND;
24619 case WLAN_HAL_OTA_TX_COMPL_IND:
24620 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024621 case WLAN_HAL_P2P_NOA_ATTR_IND:
24622 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024623 case WLAN_HAL_P2P_NOA_START_IND:
24624 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024625 case WLAN_HAL_DEL_BA_IND:
24626 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024627 case WLAN_HAL_TX_PER_HIT_IND:
24628 return WDI_HAL_TX_PER_HIT_IND;
24629 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24630 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024631 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24632 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024633 case WLAN_HAL_SET_TX_POWER_RSP:
24634 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024635 case WLAN_HAL_SET_P2P_GONOA_RSP:
24636 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024637#ifdef FEATURE_WLAN_TDLS
24638 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24639 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024640 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24641 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024642 case WLAN_HAL_TDLS_IND:
24643 return WDI_HAL_TDLS_IND;
24644#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024645 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024646 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024647 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024648 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024649 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024650 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024651 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024652 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024653 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024655 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024656 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024657 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024658 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024659 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024660 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024661 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024662 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024663 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24664 return WDI_SET_BEACON_FILTER_RESP;
24665 case WLAN_HAL_REM_BCN_FILTER_RSP:
24666 return WDI_REM_BEACON_FILTER_RESP;
24667 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24668 return WDI_SET_RSSI_THRESHOLDS_RESP;
24669 case WLAN_HAL_HOST_OFFLOAD_RSP:
24670 return WDI_HOST_OFFLOAD_RESP;
24671 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24672 return WDI_WOWL_ADD_BC_PTRN_RESP;
24673 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24674 return WDI_WOWL_DEL_BC_PTRN_RESP;
24675 case WLAN_HAL_ENTER_WOWL_RSP:
24676 return WDI_WOWL_ENTER_RESP;
24677 case WLAN_HAL_EXIT_WOWL_RSP:
24678 return WDI_WOWL_EXIT_RESP;
24679 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24680 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24681 case WLAN_HAL_DOWNLOAD_NV_RSP:
24682 return WDI_NV_DOWNLOAD_RESP;
24683 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24684 return WDI_FLUSH_AC_RESP;
24685 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24686 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024687 case WLAN_HAL_PROCESS_PTT_RSP:
24688 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024689 case WLAN_HAL_ADD_STA_SELF_RSP:
24690 return WDI_ADD_STA_SELF_RESP;
24691case WLAN_HAL_DEL_STA_SELF_RSP:
24692 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024693#ifdef FEATURE_OEM_DATA_SUPPORT
24694 case WLAN_HAL_START_OEM_DATA_RSP:
24695 return WDI_START_OEM_DATA_RESP;
24696#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024697 case WLAN_HAL_HOST_RESUME_RSP:
24698 return WDI_HOST_RESUME_RESP;
24699 case WLAN_HAL_KEEP_ALIVE_RSP:
24700 return WDI_KEEP_ALIVE_RESP;
24701#ifdef FEATURE_WLAN_SCAN_PNO
24702 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24703 return WDI_SET_PREF_NETWORK_RESP;
24704 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024705 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024706 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24707 return WDI_UPDATE_SCAN_PARAMS_RESP;
24708 case WLAN_HAL_PREF_NETW_FOUND_IND:
24709 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24710#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024711#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024712 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24713 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024714#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024715 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24716 return WDI_SET_TX_PER_TRACKING_RESP;
24717#ifdef WLAN_FEATURE_PACKET_FILTERING
24718 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24719 return WDI_8023_MULTICAST_LIST_RESP;
24720 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24721 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24722 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24723 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24724 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24725 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24726#endif // WLAN_FEATURE_PACKET_FILTERING
24727
24728 case WLAN_HAL_DUMP_COMMAND_RSP:
24729 return WDI_HAL_DUMP_CMD_RESP;
24730 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24731 return WDI_SET_POWER_PARAMS_RESP;
24732#ifdef WLAN_FEATURE_VOWIFI_11R
24733 case WLAN_HAL_AGGR_ADD_TS_RSP:
24734 return WDI_AGGR_ADD_TS_RESP;
24735#endif
24736
24737#ifdef WLAN_FEATURE_GTK_OFFLOAD
24738 case WLAN_HAL_GTK_OFFLOAD_RSP:
24739 return WDI_GTK_OFFLOAD_RESP;
24740 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24741 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24742#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24743#ifdef WLAN_WAKEUP_EVENTS
24744 case WLAN_HAL_WAKE_REASON_IND:
24745 return WDI_HAL_WAKE_REASON_IND;
24746#endif // WLAN_WAKEUP_EVENTS
24747
24748 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24749 return WDI_SET_TM_LEVEL_RESP;
24750 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24751 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024752#ifdef WLAN_FEATURE_11AC
24753 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24754 return WDI_UPDATE_VHT_OP_MODE_RESP;
24755#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024756#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024757 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24758 return WDI_GET_ROAM_RSSI_RESP;
24759#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024760
Leo Chang9056f462013-08-01 19:21:11 -070024761#ifdef FEATURE_WLAN_LPHB
24762 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024763 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024764 case WLAN_HAL_LPHB_CFG_RSP:
24765 return WDI_LPHB_CFG_RESP;
24766#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024767
24768 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24769 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024770 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24771 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024772
Rajeev79dbe4c2013-10-05 11:03:42 +053024773#ifdef FEATURE_WLAN_BATCH_SCAN
24774 case WLAN_HAL_BATCHSCAN_SET_RSP:
24775 return WDI_SET_BATCH_SCAN_RESP;
24776 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24777 return WDI_BATCHSCAN_RESULT_IND;
24778#endif // FEATURE_WLAN_BATCH_SCAN
24779
Leo Chang0b0e45a2013-12-15 15:18:55 -080024780#ifdef FEATURE_WLAN_CH_AVOID
24781 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24782 return WDI_HAL_CH_AVOID_IND;
24783#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024784 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24785 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024786 case WLAN_HAL_PRINT_REG_INFO_IND:
24787 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024788 case WLAN_HAL_CH_SWITCH_V1_RSP:
24789 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024790 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24791 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024792#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24793 case WLAN_HAL_LL_SET_STATS_RSP:
24794 return WDI_LL_STATS_SET_RSP;
24795 case WLAN_HAL_LL_GET_STATS_RSP:
24796 return WDI_LL_STATS_GET_RSP;
24797 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24798 return WDI_LL_STATS_CLEAR_RSP;
24799 case WLAN_HAL_LL_NOTIFY_STATS:
24800 return WDI_HAL_LL_STATS_RESULTS_IND;
24801#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024802#ifdef WLAN_FEATURE_EXTSCAN
24803 case WLAN_HAL_EXT_SCAN_START_RSP:
24804 return WDI_EXTSCAN_START_RSP;
24805 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24806 return WDI_EXTSCAN_STOP_RSP;
24807 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24808 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24809 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24810 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24811 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24812 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24813 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24814 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024815 case WLAN_HAL_SSID_HOTLIST_SET_RSP:
24816 return WDI_EXTSCAN_SET_HOTLIST_SSID_RSP;
24817 case WLAN_HAL_SSID_HOTLIST_RESET_RSP:
24818 return WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053024819 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24820 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24821 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24822 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24823 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24824 return WDI_HAL_EXTSCAN_RESULT_IND;
24825 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24826 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024827 case WLAN_HAL_SSID_HOTLIST_RESULT_IND:
24828 return WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND;
Dino Mycle41bdc942014-06-10 11:30:24 +053024829#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024830 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24831 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024832 case WLAN_HAL_FW_STATS_RSP:
24833 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024834 case WLAN_HAL_ENCRYPT_DATA_RSP:
24835 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024836 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24837 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024838 case WLAN_HAL_GET_FRAME_LOG_RSP:
24839 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024840 case WLAN_HAL_NAN_RSP:
24841 return WDI_NAN_RESPONSE;
24842 case WLAN_HAL_NAN_EVT:
24843 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053024844 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
24845 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024846 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24847 return WDI_MON_START_RSP;
24848 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24849 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024850 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24851 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053024852 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
24853 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024854 case WLAN_HAL_START_RSSI_MONITORING_RSP:
24855 return WDI_START_RSSI_MONITOR_RSP;
24856 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
24857 return WDI_STOP_RSSI_MONITOR_RSP;
24858 case WLAN_HAL_RSSI_MONITORING_IND:
24859 return WDI_HAL_RSSI_BREACHED_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024860 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024861 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024862 }
24863
24864}/*HAL_2_WDI_RSP_TYPE*/
24865
24866
24867/*Convert WDI driver type into HAL driver type*/
24868WPT_STATIC WPT_INLINE tDriverType
24869WDI_2_HAL_DRV_TYPE
24870(
24871 WDI_DriverType wdiDriverType
24872)
24873{
Jeff Johnsone7245742012-09-05 17:12:55 -070024874 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024875 the chances of getting inlined*/
24876 switch( wdiDriverType )
24877 {
24878 case WDI_DRIVER_TYPE_PRODUCTION:
24879 return eDRIVER_TYPE_PRODUCTION;
24880 case WDI_DRIVER_TYPE_MFG:
24881 return eDRIVER_TYPE_MFG;
24882 case WDI_DRIVER_TYPE_DVT:
24883 return eDRIVER_TYPE_DVT;
24884 }
24885
Jeff Johnsone7245742012-09-05 17:12:55 -070024886 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024887}/*WDI_2_HAL_DRV_TYPE*/
24888
24889
24890/*Convert WDI stop reason into HAL stop reason*/
24891WPT_STATIC WPT_INLINE tHalStopType
24892WDI_2_HAL_STOP_REASON
24893(
24894 WDI_StopType wdiDriverType
24895)
24896{
Jeff Johnsone7245742012-09-05 17:12:55 -070024897 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024898 the chances of getting inlined*/
24899 switch( wdiDriverType )
24900 {
24901 case WDI_STOP_TYPE_SYS_RESET:
24902 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024903 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24904 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024905 case WDI_STOP_TYPE_RF_KILL:
24906 return HAL_STOP_TYPE_RF_KILL;
24907 }
24908
Jeff Johnsone7245742012-09-05 17:12:55 -070024909 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024910}/*WDI_2_HAL_STOP_REASON*/
24911
24912
24913/*Convert WDI scan mode type into HAL scan mode type*/
24914WPT_STATIC WPT_INLINE eHalSysMode
24915WDI_2_HAL_SCAN_MODE
24916(
24917 WDI_ScanMode wdiScanMode
24918)
24919{
Jeff Johnsone7245742012-09-05 17:12:55 -070024920 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024921 the chances of getting inlined*/
24922 switch( wdiScanMode )
24923 {
24924 case WDI_SCAN_MODE_NORMAL:
24925 return eHAL_SYS_MODE_NORMAL;
24926 case WDI_SCAN_MODE_LEARN:
24927 return eHAL_SYS_MODE_LEARN;
24928 case WDI_SCAN_MODE_SCAN:
24929 return eHAL_SYS_MODE_SCAN;
24930 case WDI_SCAN_MODE_PROMISC:
24931 return eHAL_SYS_MODE_PROMISC;
24932 case WDI_SCAN_MODE_SUSPEND_LINK:
24933 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024934 case WDI_SCAN_MODE_ROAM_SCAN:
24935 return eHAL_SYS_MODE_ROAM_SCAN;
24936 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24937 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024938 }
24939
Jeff Johnsone7245742012-09-05 17:12:55 -070024940 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024941}/*WDI_2_HAL_SCAN_MODE*/
24942
24943/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024944WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024945WDI_2_HAL_SEC_CH_OFFSET
24946(
24947 WDI_HTSecondaryChannelOffset wdiSecChOffset
24948)
24949{
Jeff Johnsone7245742012-09-05 17:12:55 -070024950 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024951 the chances of getting inlined*/
24952 switch( wdiSecChOffset )
24953 {
24954 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024955 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024956 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024957 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024958 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024959 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24960#ifdef WLAN_FEATURE_11AC
24961 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24962 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24963 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24964 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24965 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24966 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24967 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24968 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24969 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24970 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24971 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24972 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24973 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24974 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24975#endif
24976 default:
24977 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024978 }
24979
Jeff Johnsone7245742012-09-05 17:12:55 -070024980 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024981}/*WDI_2_HAL_SEC_CH_OFFSET*/
24982
24983/*Convert WDI BSS type into HAL BSS type*/
24984WPT_STATIC WPT_INLINE tSirBssType
24985WDI_2_HAL_BSS_TYPE
24986(
24987 WDI_BssType wdiBSSType
24988)
24989{
Jeff Johnsone7245742012-09-05 17:12:55 -070024990 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024991 the chances of getting inlined*/
24992 switch( wdiBSSType )
24993 {
24994 case WDI_INFRASTRUCTURE_MODE:
24995 return eSIR_INFRASTRUCTURE_MODE;
24996 case WDI_INFRA_AP_MODE:
24997 return eSIR_INFRA_AP_MODE;
24998 case WDI_IBSS_MODE:
24999 return eSIR_IBSS_MODE;
25000 case WDI_BTAMP_STA_MODE:
25001 return eSIR_BTAMP_STA_MODE;
25002 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025003 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025004 case WDI_BSS_AUTO_MODE:
25005 return eSIR_AUTO_MODE;
25006 }
25007
Jeff Johnsone7245742012-09-05 17:12:55 -070025008 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025009}/*WDI_2_HAL_BSS_TYPE*/
25010
25011/*Convert WDI NW type into HAL NW type*/
25012WPT_STATIC WPT_INLINE tSirNwType
25013WDI_2_HAL_NW_TYPE
25014(
25015 WDI_NwType wdiNWType
25016)
25017{
Jeff Johnsone7245742012-09-05 17:12:55 -070025018 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025019 the chances of getting inlined*/
25020 switch( wdiNWType )
25021 {
25022 case WDI_11A_NW_TYPE:
25023 return eSIR_11A_NW_TYPE;
25024 case WDI_11B_NW_TYPE:
25025 return eSIR_11B_NW_TYPE;
25026 case WDI_11G_NW_TYPE:
25027 return eSIR_11G_NW_TYPE;
25028 case WDI_11N_NW_TYPE:
25029 return eSIR_11N_NW_TYPE;
25030 }
25031
Jeff Johnsone7245742012-09-05 17:12:55 -070025032 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025033}/*WDI_2_HAL_NW_TYPE*/
25034
25035/*Convert WDI chanel bonding type into HAL cb type*/
25036WPT_STATIC WPT_INLINE ePhyChanBondState
25037WDI_2_HAL_CB_STATE
25038(
25039 WDI_PhyChanBondState wdiCbState
25040)
25041{
Jeff Johnsone7245742012-09-05 17:12:55 -070025042 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025043 the chances of getting inlined*/
25044 switch ( wdiCbState )
25045 {
25046 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25047 return PHY_SINGLE_CHANNEL_CENTERED;
25048 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25049 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25050 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25051 return PHY_DOUBLE_CHANNEL_CENTERED;
25052 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25053 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025054#ifdef WLAN_FEATURE_11AC
25055 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25056 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25057 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25058 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25059 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25060 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25061 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25062 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25063 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25064 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25065 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25066 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25067 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25068 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25069#endif
25070 case WDI_MAX_CB_STATE:
25071 default:
25072 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025073 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025074
Jeff Johnson295189b2012-06-20 16:38:30 -070025075 return PHY_CHANNEL_BONDING_STATE_MAX;
25076}/*WDI_2_HAL_CB_STATE*/
25077
25078/*Convert WDI chanel bonding type into HAL cb type*/
25079WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
25080WDI_2_HAL_HT_OPER_MODE
25081(
25082 WDI_HTOperatingMode wdiHTOperMode
25083)
25084{
Jeff Johnsone7245742012-09-05 17:12:55 -070025085 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025086 the chances of getting inlined*/
25087 switch ( wdiHTOperMode )
25088 {
25089 case WDI_HT_OP_MODE_PURE:
25090 return eSIR_HT_OP_MODE_PURE;
25091 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
25092 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
25093 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
25094 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
25095 case WDI_HT_OP_MODE_MIXED:
25096 return eSIR_HT_OP_MODE_MIXED;
25097 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025098
Jeff Johnson295189b2012-06-20 16:38:30 -070025099 return eSIR_HT_OP_MODE_MAX;
25100}/*WDI_2_HAL_HT_OPER_MODE*/
25101
25102/*Convert WDI mimo PS type into HAL mimo PS type*/
25103WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
25104WDI_2_HAL_MIMO_PS
25105(
25106 WDI_HTMIMOPowerSaveState wdiHTOperMode
25107)
25108{
Jeff Johnsone7245742012-09-05 17:12:55 -070025109 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025110 the chances of getting inlined*/
25111 switch ( wdiHTOperMode )
25112 {
25113 case WDI_HT_MIMO_PS_STATIC:
25114 return eSIR_HT_MIMO_PS_STATIC;
25115 case WDI_HT_MIMO_PS_DYNAMIC:
25116 return eSIR_HT_MIMO_PS_DYNAMIC;
25117 case WDI_HT_MIMO_PS_NA:
25118 return eSIR_HT_MIMO_PS_NA;
25119 case WDI_HT_MIMO_PS_NO_LIMIT:
25120 return eSIR_HT_MIMO_PS_NO_LIMIT;
25121 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025122
Jeff Johnson295189b2012-06-20 16:38:30 -070025123 return eSIR_HT_MIMO_PS_MAX;
25124}/*WDI_2_HAL_MIMO_PS*/
25125
25126/*Convert WDI ENC type into HAL ENC type*/
25127WPT_STATIC WPT_INLINE tAniEdType
25128WDI_2_HAL_ENC_TYPE
25129(
25130 WDI_EncryptType wdiEncType
25131)
25132{
Jeff Johnsone7245742012-09-05 17:12:55 -070025133 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025134 the chances of getting inlined*/
25135 switch ( wdiEncType )
25136 {
25137 case WDI_ENCR_NONE:
25138 return eSIR_ED_NONE;
25139
25140 case WDI_ENCR_WEP40:
25141 return eSIR_ED_WEP40;
25142
25143 case WDI_ENCR_WEP104:
25144 return eSIR_ED_WEP104;
25145
25146 case WDI_ENCR_TKIP:
25147 return eSIR_ED_TKIP;
25148
25149 case WDI_ENCR_CCMP:
25150 return eSIR_ED_CCMP;
25151
25152 case WDI_ENCR_AES_128_CMAC:
25153 return eSIR_ED_AES_128_CMAC;
25154#if defined(FEATURE_WLAN_WAPI)
25155 case WDI_ENCR_WPI:
25156 return eSIR_ED_WPI;
25157#endif
25158 default:
25159 return eSIR_ED_NOT_IMPLEMENTED;
25160 }
25161
25162}/*WDI_2_HAL_ENC_TYPE*/
25163
25164/*Convert WDI WEP type into HAL WEP type*/
25165WPT_STATIC WPT_INLINE tAniWepType
25166WDI_2_HAL_WEP_TYPE
25167(
25168 WDI_WepType wdiWEPType
25169)
25170{
Jeff Johnsone7245742012-09-05 17:12:55 -070025171 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025172 the chances of getting inlined*/
25173 switch ( wdiWEPType )
25174 {
25175 case WDI_WEP_STATIC:
25176 return eSIR_WEP_STATIC;
25177
25178 case WDI_WEP_DYNAMIC:
25179 return eSIR_WEP_DYNAMIC;
25180 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025181
Jeff Johnson295189b2012-06-20 16:38:30 -070025182 return eSIR_WEP_MAX;
25183}/*WDI_2_HAL_WEP_TYPE*/
25184
25185WPT_STATIC WPT_INLINE tSirLinkState
25186WDI_2_HAL_LINK_STATE
25187(
25188 WDI_LinkStateType wdiLinkState
25189)
25190{
Jeff Johnsone7245742012-09-05 17:12:55 -070025191 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025192 the chances of getting inlined*/
25193 switch ( wdiLinkState )
25194 {
25195 case WDI_LINK_IDLE_STATE:
25196 return eSIR_LINK_IDLE_STATE;
25197
25198 case WDI_LINK_PREASSOC_STATE:
25199 return eSIR_LINK_PREASSOC_STATE;
25200
25201 case WDI_LINK_POSTASSOC_STATE:
25202 return eSIR_LINK_POSTASSOC_STATE;
25203
25204 case WDI_LINK_AP_STATE:
25205 return eSIR_LINK_AP_STATE;
25206
25207 case WDI_LINK_IBSS_STATE:
25208 return eSIR_LINK_IBSS_STATE;
25209
25210 case WDI_LINK_BTAMP_PREASSOC_STATE:
25211 return eSIR_LINK_BTAMP_PREASSOC_STATE;
25212
25213 case WDI_LINK_BTAMP_POSTASSOC_STATE:
25214 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
25215
25216 case WDI_LINK_BTAMP_AP_STATE:
25217 return eSIR_LINK_BTAMP_AP_STATE;
25218
25219 case WDI_LINK_BTAMP_STA_STATE:
25220 return eSIR_LINK_BTAMP_STA_STATE;
25221
25222 case WDI_LINK_LEARN_STATE:
25223 return eSIR_LINK_LEARN_STATE;
25224
25225 case WDI_LINK_SCAN_STATE:
25226 return eSIR_LINK_SCAN_STATE;
25227
25228 case WDI_LINK_FINISH_SCAN_STATE:
25229 return eSIR_LINK_FINISH_SCAN_STATE;
25230
25231 case WDI_LINK_INIT_CAL_STATE:
25232 return eSIR_LINK_INIT_CAL_STATE;
25233
25234 case WDI_LINK_FINISH_CAL_STATE:
25235 return eSIR_LINK_FINISH_CAL_STATE;
25236
Jeff Johnson295189b2012-06-20 16:38:30 -070025237 case WDI_LINK_LISTEN_STATE:
25238 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025239
Gopichand Nakkala924e4552013-05-08 19:18:14 +053025240 case WDI_LINK_SEND_ACTION_STATE:
25241 return eSIR_LINK_SEND_ACTION_STATE;
25242
Jeff Johnson295189b2012-06-20 16:38:30 -070025243 default:
25244 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070025245 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025246}
25247
Jeff Johnsone7245742012-09-05 17:12:55 -070025248/*Translate a STA Context from WDI into HAL*/
25249WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025250void
25251WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025252(
Jeff Johnson295189b2012-06-20 16:38:30 -070025253 tConfigStaParams* phalConfigSta,
25254 WDI_ConfigStaReqInfoType* pwdiConfigSta
25255)
25256{
25257 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025258#ifdef WLAN_FEATURE_11AC
25259 /* Get the Version 1 Handler */
25260 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25261 if (WDI_getFwWlanFeatCaps(DOT11AC))
25262 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025263 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025264 }
25265#endif
25266 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025267 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025268
Jeff Johnsone7245742012-09-05 17:12:55 -070025269 wpalMemoryCopy(phalConfigSta->bssId,
25270 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25271
25272 wpalMemoryCopy(phalConfigSta->staMac,
25273 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025274
25275 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25276 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25277 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25278 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25279 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25280 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25281 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25282 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25283 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25284 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25285 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25286 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25287 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25288 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25289 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25290 phalConfigSta->action = pwdiConfigSta->wdiAction;
25291 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25292 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25293 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25294 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25295 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25296 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25297 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025298
Jeff Johnson295189b2012-06-20 16:38:30 -070025299 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25300
Jeff Johnsone7245742012-09-05 17:12:55 -070025301 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025302 pwdiConfigSta->wdiSupportedRates.opRateMode;
25303 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25304 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025305 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025306 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25307 }
25308 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25309 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025310 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025311 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25312 }
25313 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25314 {
25315 phalConfigSta->supportedRates.aniLegacyRates[i] =
25316 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25317 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025318 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025319 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25320 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25321 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025322 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025323 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25324 }
25325 phalConfigSta->supportedRates.rxHighestDataRate =
25326 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25327
Jeff Johnsone7245742012-09-05 17:12:55 -070025328#ifdef WLAN_FEATURE_11AC
25329 if(phalConfigSta_V1 != NULL)
25330 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025331 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25332 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25333 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25334 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025335 }
25336#endif
25337
Jeff Johnson295189b2012-06-20 16:38:30 -070025338 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025339
Jeff Johnsone7245742012-09-05 17:12:55 -070025340#ifdef WLAN_FEATURE_11AC
25341 if(phalConfigSta_V1 != NULL)
25342 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025343 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25344 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025345 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025346 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025347 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25348 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25349
Jeff Johnsone7245742012-09-05 17:12:55 -070025350 }
25351#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025352}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025353
25354/*Translate a Rate set info from WDI into HAL*/
25355WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025356WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025357(
Jeff Johnson295189b2012-06-20 16:38:30 -070025358 tSirMacRateSet* pHalRateSet,
25359 WDI_RateSet* pwdiRateSet
25360)
25361{
Jeff Johnsone7245742012-09-05 17:12:55 -070025362 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25364
25365 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25366 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25367
25368 for ( i = 0; i < pHalRateSet->numRates; i++ )
25369 {
25370 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25371 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025372
Jeff Johnson295189b2012-06-20 16:38:30 -070025373}/*WDI_CopyWDIRateSetToHALRateSet*/
25374
25375
25376/*Translate an EDCA Parameter Record from WDI into HAL*/
25377WPT_STATIC WPT_INLINE void
25378WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025379(
Jeff Johnson295189b2012-06-20 16:38:30 -070025380 tSirMacEdcaParamRecord* phalEdcaParam,
25381 WDI_EdcaParamRecord* pWDIEdcaParam
25382)
25383{
Jeff Johnsone7245742012-09-05 17:12:55 -070025384 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025385 the chances of getting inlined*/
25386
25387 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25388 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25389 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25390 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25391
25392 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25393 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25394 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25395}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25396
25397
25398/*Copy a management frame header from WDI fmt into HAL fmt*/
25399WPT_STATIC WPT_INLINE void
25400WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25401(
25402 tSirMacMgmtHdr* pmacMgmtHdr,
25403 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25404)
25405{
25406 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25407 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25408 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25409 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25410 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25411 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25412 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25413 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25414 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25415 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25416 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25417
25418 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25419 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25420
Jeff Johnsone7245742012-09-05 17:12:55 -070025421 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025422 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025423 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025424 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025425 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025426 pwdiMacMgmtHdr->bssId, 6);
25427
25428 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25429 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25430 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25431
25432}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25433
25434
25435/*Copy config bss parameters from WDI fmt into HAL fmt*/
25436WPT_STATIC WPT_INLINE void
25437WDI_CopyWDIConfigBSSToHALConfigBSS
25438(
25439 tConfigBssParams* phalConfigBSS,
25440 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25441)
25442{
25443
25444 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025445#ifdef WLAN_FEATURE_11AC
25446 /* Get the Version 1 Handler */
25447 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25448 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025449 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025450#endif
25451
Jeff Johnson295189b2012-06-20 16:38:30 -070025452 wpalMemoryCopy( phalConfigBSS->bssId,
25453 pwdiConfigBSS->macBSSID,
25454 WDI_MAC_ADDR_LEN);
25455
25456#ifdef HAL_SELF_STA_PER_BSS
25457 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25458 pwdiConfigBSS->macSelfAddr,
25459 WDI_MAC_ADDR_LEN);
25460#endif
25461
25462 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25463
25464 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25465 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25466
Jeff Johnsone7245742012-09-05 17:12:55 -070025467 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025468 pwdiConfigBSS->ucShortSlotTimeSupported;
25469 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25470 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25471 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25472 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25473 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025474 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025475 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25476 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25477 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25478 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25479 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25480 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25481 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25482 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25483 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25484 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25485 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25486
Jeff Johnsone7245742012-09-05 17:12:55 -070025487 phalConfigBSS->htOperMode =
25488 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025489
25490 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25491 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25492 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25493 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25494
25495#ifdef WLAN_FEATURE_VOWIFI
25496 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25497#endif
25498
25499 /*! Used 32 as magic number because that is how the ssid is declared inside the
25500 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025501 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025502 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25503 pwdiConfigBSS->wdiSSID.ucLength : 32;
25504 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025505 pwdiConfigBSS->wdiSSID.sSSID,
25506 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025507
25508 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25509 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025510
Jeff Johnson295189b2012-06-20 16:38:30 -070025511 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25512 &pwdiConfigBSS->wdiRateSet);
25513
25514 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25515
25516 if(phalConfigBSS->edcaParamsValid)
25517 {
25518 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25519 &pwdiConfigBSS->wdiBEEDCAParams);
25520 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25521 &pwdiConfigBSS->wdiBKEDCAParams);
25522 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25523 &pwdiConfigBSS->wdiVIEDCAParams);
25524 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25525 &pwdiConfigBSS->wdiVOEDCAParams);
25526 }
25527
Jeff Johnsone7245742012-09-05 17:12:55 -070025528 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025529
25530 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25531
25532#ifdef WLAN_FEATURE_VOWIFI_11R
25533
Jeff Johnsone7245742012-09-05 17:12:55 -070025534 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025535 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025536
Jeff Johnson295189b2012-06-20 16:38:30 -070025537 if( phalConfigBSS->extSetStaKeyParamValid )
25538 {
25539 /*-----------------------------------------------------------------------
25540 Copy the STA Key parameters into the HAL message
25541 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025542 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025543 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25544
Jeff Johnsone7245742012-09-05 17:12:55 -070025545 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025546 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25547
25548 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25549
25550 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25551
25552 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25553
Jeff Johnson295189b2012-06-20 16:38:30 -070025554 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25555 keyIndex++)
25556 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25559 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25560 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25561 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25562 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25563 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025566 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025568 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025569 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25570 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025571 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025572 WDI_MAX_KEY_LENGTH);
25573 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 }
25575 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25576 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025577 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025578 sizeof(phalConfigBSS->extSetStaKeyParam) );
25579 }
25580
25581#endif /*WLAN_FEATURE_VOWIFI_11R*/
25582
Jeff Johnsone7245742012-09-05 17:12:55 -070025583#ifdef WLAN_FEATURE_11AC
25584 if(phalConfigBSS_V1 != NULL)
25585 {
25586 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25587 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25588 }
25589#endif
25590
Jeff Johnson295189b2012-06-20 16:38:30 -070025591}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25592
25593
Jeff Johnsone7245742012-09-05 17:12:55 -070025594/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025595 pointed to by user data */
25596WPT_STATIC WPT_INLINE void
25597WDI_ExtractRequestCBFromEvent
25598(
25599 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025600 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025601 void** ppUserData
25602)
25603{
25604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25605 switch ( pEvent->wdiRequest )
25606 {
25607 case WDI_START_REQ:
25608 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25609 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25610 break;
25611 case WDI_STOP_REQ:
25612 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25613 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25614 break;
25615 case WDI_INIT_SCAN_REQ:
25616 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25617 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25618 break;
25619 case WDI_START_SCAN_REQ:
25620 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25621 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25622 break;
25623 case WDI_END_SCAN_REQ:
25624 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25625 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25626 break;
25627 case WDI_FINISH_SCAN_REQ:
25628 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25629 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25630 break;
25631 case WDI_JOIN_REQ:
25632 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25633 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25634 break;
25635 case WDI_CONFIG_BSS_REQ:
25636 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25637 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25638 break;
25639 case WDI_DEL_BSS_REQ:
25640 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25641 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25642 break;
25643 case WDI_POST_ASSOC_REQ:
25644 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25645 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25646 break;
25647 case WDI_DEL_STA_REQ:
25648 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25649 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25650 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025651
25652 case WDI_ADD_STA_SELF_REQ:
25653 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25654 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25655 break;
25656
Jeff Johnson295189b2012-06-20 16:38:30 -070025657 case WDI_DEL_STA_SELF_REQ:
25658 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25659 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25660 break;
25661
25662 case WDI_SET_BSS_KEY_REQ:
25663 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25664 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25665 break;
25666 case WDI_RMV_BSS_KEY_REQ:
25667 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25668 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25669 break;
25670 case WDI_SET_STA_KEY_REQ:
25671 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25672 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25673 break;
25674 case WDI_RMV_STA_KEY_REQ:
25675 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25676 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25677 break;
25678 case WDI_ADD_TS_REQ:
25679 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25680 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25681 break;
25682 case WDI_DEL_TS_REQ:
25683 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25684 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25685 break;
25686 case WDI_UPD_EDCA_PRMS_REQ:
25687 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25688 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25689 break;
25690 case WDI_ADD_BA_SESSION_REQ:
25691 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25692 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25693 break;
25694 case WDI_DEL_BA_REQ:
25695 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25696 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25697 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025698#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025699 case WDI_TSM_STATS_REQ:
25700 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25701 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25702 break;
25703#endif
25704 case WDI_CH_SWITCH_REQ:
25705 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25706 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25707 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025708 case WDI_CH_SWITCH_REQ_V1:
25709 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25710 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25711 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025712 case WDI_CONFIG_STA_REQ:
25713 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25714 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25715 break;
25716 case WDI_SET_LINK_ST_REQ:
25717 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25718 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25719 break;
25720 case WDI_GET_STATS_REQ:
25721 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25722 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25723 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025724#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025725 case WDI_GET_ROAM_RSSI_REQ:
25726 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25727 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25728 break;
25729#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025730 case WDI_UPDATE_CFG_REQ:
25731 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25732 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25733 break;
25734 case WDI_ADD_BA_REQ:
25735 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25736 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25737 break;
25738 case WDI_TRIGGER_BA_REQ:
25739 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25740 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25741 break;
25742 case WDI_UPD_BCON_PRMS_REQ:
25743 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25744 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25745 break;
25746 case WDI_SND_BCON_REQ:
25747 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25748 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25749 break;
25750 case WDI_ENTER_BMPS_REQ:
25751 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25752 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25753 break;
25754 case WDI_EXIT_BMPS_REQ:
25755 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25756 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25757 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025758 case WDI_ENTER_IMPS_REQ:
25759 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25760 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25761 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025762 case WDI_ENTER_UAPSD_REQ:
25763 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25764 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25765 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025766 case WDI_EXIT_UAPSD_REQ:
25767 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25768 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25769 break;
25770 case WDI_SET_UAPSD_PARAM_REQ:
25771 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25772 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25773 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025774 case WDI_UPDATE_UAPSD_PARAM_REQ:
25775 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25776 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25777 break;
25778 case WDI_CONFIGURE_RXP_FILTER_REQ:
25779 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25780 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25781 break;
25782 case WDI_SET_BEACON_FILTER_REQ:
25783 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25784 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25785 break;
25786 case WDI_REM_BEACON_FILTER_REQ:
25787 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25788 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025789 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025790 case WDI_SET_RSSI_THRESHOLDS_REQ:
25791 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25792 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25793 break;
25794 case WDI_HOST_OFFLOAD_REQ:
25795 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25796 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25797 break;
25798 case WDI_WOWL_ADD_BC_PTRN_REQ:
25799 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25800 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25801 break;
25802 case WDI_WOWL_DEL_BC_PTRN_REQ:
25803 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25804 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25805 break;
25806 case WDI_WOWL_ENTER_REQ:
25807 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25808 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25809 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025810 case WDI_WOWL_EXIT_REQ:
25811 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25812 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25813 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025814 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25815 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25816 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25817 break;
25818 case WDI_FLUSH_AC_REQ:
25819 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25820 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25821 break;
25822 case WDI_BTAMP_EVENT_REQ:
25823 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25824 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25825 break;
25826 case WDI_KEEP_ALIVE_REQ:
25827 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25828 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25829 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025830#if defined FEATURE_WLAN_SCAN_PNO
25831 case WDI_SET_PREF_NETWORK_REQ:
25832 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25833 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25834 break;
25835 case WDI_SET_RSSI_FILTER_REQ:
25836 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25837 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25838 break;
25839 case WDI_UPDATE_SCAN_PARAMS_REQ:
25840 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25841 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25842 break;
25843#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025844 case WDI_SET_TX_PER_TRACKING_REQ:
25845 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25846 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025847 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025848#if defined WLAN_FEATURE_PACKET_FILTERING
25849 case WDI_8023_MULTICAST_LIST_REQ:
25850 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25851 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25852 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025853 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25854 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25855 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25856 break;
25857 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25858 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25859 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25860 break;
25861 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25862 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25863 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25864 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025865#endif
25866 case WDI_SET_POWER_PARAMS_REQ:
25867 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25868 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25869 break;
25870#if defined WLAN_FEATURE_GTK_OFFLOAD
25871 case WDI_GTK_OFFLOAD_REQ:
25872 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25873 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25874 break;
25875 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25876 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25877 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25878 break;
25879#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025880
Jeff Johnson295189b2012-06-20 16:38:30 -070025881 default:
25882 *ppfnReqCB = NULL;
25883 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025884 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 }
25886}/*WDI_ExtractRequestCBFromEvent*/
25887
25888
25889/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025890 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 frame xtl is enabled for a particular STA.
25892
25893 WDI_PostAssocReq must have been called.
25894
Jeff Johnsone7245742012-09-05 17:12:55 -070025895 @param uSTAIdx: STA index
25896
Jeff Johnson295189b2012-06-20 16:38:30 -070025897 @see WDI_PostAssocReq
25898 @return Result of the function call
25899*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025900wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025901WDI_IsHwFrameTxTranslationCapable
25902(
25903 wpt_uint8 uSTAIdx
25904)
25905{
Jeff Johnsone7245742012-09-05 17:12:55 -070025906 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025907 uma value*/
25908 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025909 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 ------------------------------------------------------------------------*/
25911 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25912 {
25913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25914 "WDI API call before module is initialized - Fail request");
25915
Jeff Johnsone7245742012-09-05 17:12:55 -070025916 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025917 }
25918
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025919#ifdef WLAN_SOFTAP_VSTA_FEATURE
25920 if (IS_VSTA_IDX(uSTAIdx))
25921 {
25922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25923 "STA %d is a Virtual STA, "
25924 "HW frame translation disabled", uSTAIdx);
25925 return eWLAN_PAL_FALSE;
25926 }
25927#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025928
Jeff Johnson295189b2012-06-20 16:38:30 -070025929 return gWDICb.bFrameTransEnabled;
25930}/*WDI_IsHwFrameTxTranslationCapable*/
25931
Katya Nigam6201c3e2014-05-27 17:51:42 +053025932
25933/**
25934 @brief WDI_IsSelfSTA - check if staid is self sta index
25935
25936
25937 @param pWDICtx: pointer to the WLAN DAL context
25938 ucSTAIdx: station index
25939
25940 @return Result of the function call
25941*/
25942wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25943{
25944 wpt_uint8 ucSTAType;
25945
25946 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25947 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25948 {
25949 if( ucSTAType == WDI_STA_ENTRY_SELF )
25950 return eWLAN_PAL_TRUE;
25951 }
25952
25953 return eWLAN_PAL_FALSE;
25954}
25955
25956
25957
Jeff Johnson295189b2012-06-20 16:38:30 -070025958#ifdef FEATURE_WLAN_SCAN_PNO
25959/**
25960 @brief WDI_SetPreferredNetworkList
25961
Jeff Johnsone7245742012-09-05 17:12:55 -070025962 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025963 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025964
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 wdiPNOScanCb: callback for passing back the response
25966 of the Set PNO operation received from the
25967 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025968
Jeff Johnson295189b2012-06-20 16:38:30 -070025969 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025970 callback
25971
Jeff Johnson295189b2012-06-20 16:38:30 -070025972 @return Result of the function call
25973*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025974WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025975WDI_SetPreferredNetworkReq
25976(
25977 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25978 WDI_PNOScanCb wdiPNOScanCb,
25979 void* pUserData
25980)
25981{
25982 WDI_EventInfoType wdiEventData = {{0}};
25983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25984
25985 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025986 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025987 ------------------------------------------------------------------------*/
25988 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25989 {
25990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25991 "WDI API call before module is initialized - Fail request");
25992
Jeff Johnsone7245742012-09-05 17:12:55 -070025993 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025994 }
25995
25996 /*------------------------------------------------------------------------
25997 Fill in Event data and post to the Main FSM
25998 ------------------------------------------------------------------------*/
25999 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026000 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026001 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026002 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026003 wdiEventData.pUserData = pUserData;
26004
26005 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26006}
26007
26008
26009/**
26010 @brief WDI_SetRssiFilterReq
26011
Jeff Johnsone7245742012-09-05 17:12:55 -070026012 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026013 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026014
Jeff Johnson295189b2012-06-20 16:38:30 -070026015 wdiRssiFilterCb: callback for passing back the response
26016 of the Set RSSI Filter operation received from the
26017 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026018
Jeff Johnson295189b2012-06-20 16:38:30 -070026019 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026020 callback
26021
Jeff Johnson295189b2012-06-20 16:38:30 -070026022 @return Result of the function call
26023*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026024WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026025WDI_SetRssiFilterReq
26026(
26027 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26028 WDI_RssiFilterCb wdiRssiFilterCb,
26029 void* pUserData
26030)
26031{
26032 WDI_EventInfoType wdiEventData = {{0}};
26033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26034
26035 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026036 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026037 ------------------------------------------------------------------------*/
26038 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26039 {
26040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26041 "WDI API call before module is initialized - Fail request");
26042
Jeff Johnsone7245742012-09-05 17:12:55 -070026043 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026044 }
26045
26046 /*------------------------------------------------------------------------
26047 Fill in Event data and post to the Main FSM
26048 ------------------------------------------------------------------------*/
26049 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026050 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026051 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026052 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026053 wdiEventData.pUserData = pUserData;
26054
26055 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26056}/*WDI_SetRssiFilterReq*/
26057
26058/**
26059 @brief WDI_UpdateScanParamsReq
26060
Jeff Johnsone7245742012-09-05 17:12:55 -070026061 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026063
Jeff Johnson295189b2012-06-20 16:38:30 -070026064 wdiUpdateScanParamsCb: callback for passing back the response
26065 of the Set PNO operation received from the
26066 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026067
Jeff Johnson295189b2012-06-20 16:38:30 -070026068 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026069 callback
26070
Jeff Johnson295189b2012-06-20 16:38:30 -070026071 @return Result of the function call
26072*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026073WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026074WDI_UpdateScanParamsReq
26075(
26076 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
26077 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
26078 void* pUserData
26079)
26080{
26081 WDI_EventInfoType wdiEventData = {{0}};
26082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26083
26084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026085 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026086 ------------------------------------------------------------------------*/
26087 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26088 {
26089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26090 "WDI API call before module is initialized - Fail request");
26091
Jeff Johnsone7245742012-09-05 17:12:55 -070026092 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026093 }
26094
26095 /*------------------------------------------------------------------------
26096 Fill in Event data and post to the Main FSM
26097 ------------------------------------------------------------------------*/
26098 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026099 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026100 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026101 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026102 wdiEventData.pUserData = pUserData;
26103
26104 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26105}
26106
26107/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026108 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026109 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026110
26111 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026112 pwdiPNOScanReqParams: pointer to the info received
26113 from upper layers
26114 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026115 and its size
26116
Jeff Johnson295189b2012-06-20 16:38:30 -070026117 @return Result of the function call
26118*/
26119
26120WDI_Status
26121WDI_PackPreferredNetworkList
26122(
26123 WDI_ControlBlockType* pWDICtx,
26124 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26125 wpt_uint8** ppSendBuffer,
26126 wpt_uint16* pSize
26127)
26128{
Jeff Johnsone7245742012-09-05 17:12:55 -070026129 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026130 wpt_uint16 usDataOffset = 0;
26131 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026132 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026133 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026134 /*-----------------------------------------------------------------------
26135 Get message buffer
26136 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026137 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026138 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026140 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026141 {
26142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026143 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026144 pwdiPNOScanReqParams);
26145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026147 }
26148
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026149 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
26150
Jeff Johnson295189b2012-06-20 16:38:30 -070026151 /*-------------------------------------------------------------------------
26152 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26153 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026154 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026155 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026156 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026157 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26158
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026159 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026160 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026161 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026162 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026163 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26164
26165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026166 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026167 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26168 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26169 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26170
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026171 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 {
26173 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026174 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26176
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026177 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026179 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026180
26181 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026182 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026183 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026184
26185 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026186 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026187 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026188
Jeff Johnsone7245742012-09-05 17:12:55 -070026189 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026190 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026191 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070026192 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
26193 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26194 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
26195 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026196
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026197 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026198 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026199 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026200
26201 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026202 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026203 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26204
26205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026206 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026207 pPrefNetwListParams->aNetworks[i].ssId.length,
26208 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026209 }
26210
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026211 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026212 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026213 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26214 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26215 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26216
26217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026218 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026219 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026220 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26221 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26222
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026223 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026224 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026225 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026226 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026227 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026228 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26229 }
26230
26231 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026232 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026233 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26234 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26235 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026236 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026237
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026238 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026239 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026240 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026241
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026242 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026243 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26244 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26245 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026246 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026247
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026248 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026249 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026250 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026251
26252 /*Set the output values*/
26253 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026254 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026255
26256 return WDI_STATUS_SUCCESS;
26257}/*WDI_PackPreferredNetworkList*/
26258
26259/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026260 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026261 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026262
26263 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026264 pwdiPNOScanReqParams: pointer to the info received
26265 from upper layers
26266 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026267 and its size
26268
Jeff Johnson295189b2012-06-20 16:38:30 -070026269 @return Result of the function call
26270*/
26271
26272WDI_Status
26273WDI_PackPreferredNetworkListNew
26274(
26275 WDI_ControlBlockType* pWDICtx,
26276 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26277 wpt_uint8** ppSendBuffer,
26278 wpt_uint16* pSize
26279)
26280{
Jeff Johnsone7245742012-09-05 17:12:55 -070026281 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026282 wpt_uint16 usDataOffset = 0;
26283 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026284 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026285 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026286
26287 /*-----------------------------------------------------------------------
26288 Get message buffer
26289 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026290 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026291 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026292 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026293 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026294 {
26295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026296 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026297 pwdiPNOScanReqParams);
26298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026300 }
26301
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026302 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26303
Jeff Johnson295189b2012-06-20 16:38:30 -070026304 /*-------------------------------------------------------------------------
26305 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26306 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026307 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026308 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026309 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026310 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26311
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026312 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026313 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026314 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026315 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026316 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26317
26318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026319 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026320 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26321 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26322 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26323
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026324 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026325 {
26326 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026327 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026328 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26329
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026330 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026331 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026332 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026333
26334 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026335 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026336 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026337
26338 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026339 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026340 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026341
26342 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026343 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026344 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026345
Jeff Johnsone7245742012-09-05 17:12:55 -070026346 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026347 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026348 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026349 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26350
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026351 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026352 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026353 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026354
26355 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026356 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026357 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26358
26359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026360 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026361 pPrefNetwListParams->aNetworks[i].ssId.length,
26362 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026363 }
26364
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026365 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026366 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026367 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26368 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26369 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26370
26371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026372 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026373 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026374 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26375 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26376
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026377 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026378 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026379 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026380 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026381 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026382 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26383 }
26384
26385 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026386 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026387 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26388 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26389 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026390 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026391
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026392 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026393 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026394 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026395
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026396 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026397 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26398 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26399 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026400 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026401
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026402 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026403 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026404 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026405
Jeff Johnson295189b2012-06-20 16:38:30 -070026406
26407 /*Set the output values*/
26408 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026409 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026410
26411 return WDI_STATUS_SUCCESS;
26412}/*WDI_PackPreferredNetworkListNew*/
26413
26414/**
26415 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026416
26417 @param pWDICtx: pointer to the WLAN DAL context
26418 pEventData: pointer to the event information structure
26419
Jeff Johnson295189b2012-06-20 16:38:30 -070026420 @return Result of the function call
26421*/
26422WDI_Status
26423WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026424(
Jeff Johnson295189b2012-06-20 16:38:30 -070026425 WDI_ControlBlockType* pWDICtx,
26426 WDI_EventInfoType* pEventData
26427)
26428{
26429 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26430 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026431 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026432 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026433 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026434
26435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026437 -------------------------------------------------------------------------*/
26438 if (( NULL == pEventData ) ||
26439 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26440 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26441 {
26442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026446 }
26447
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026448 /*----------------------------------------------------------------------
26449 Avoid Enable PNO during any active session or an ongoing session
26450 ----------------------------------------------------------------------*/
26451 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26452 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26453 {
26454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26455 "%s:(Active/Ongoing Session) - Fail request", __func__);
26456
26457 return WDI_STATUS_E_FAILURE;
26458 }
26459
Jeff Johnson295189b2012-06-20 16:38:30 -070026460 /*-------------------------------------------------------------------------
26461 Pack the PNO request structure based on version
26462 -------------------------------------------------------------------------*/
26463 if ( pWDICtx->wdiPNOVersion > 0 )
26464 {
26465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026466 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026467 pWDICtx->wdiPNOVersion);
26468
26469 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26470 &pSendBuffer, &usSendSize);
26471 }
26472 else
26473 {
26474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026475 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026476 pWDICtx->wdiPNOVersion);
26477
26478 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26479 &pSendBuffer, &usSendSize);
26480 }
26481
26482 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26483 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26484 {
26485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026486 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026487 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026488 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026489 }
26490
26491 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026492 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026493
26494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026495 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026496 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026497 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26498 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026499}
26500
26501/**
26502 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026503
26504 @param pWDICtx: pointer to the WLAN DAL context
26505 pEventData: pointer to the event information structure
26506
Jeff Johnson295189b2012-06-20 16:38:30 -070026507 @see
26508 @return Result of the function call
26509*/
26510WDI_Status
26511WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026512(
Jeff Johnson295189b2012-06-20 16:38:30 -070026513 WDI_ControlBlockType* pWDICtx,
26514 WDI_EventInfoType* pEventData
26515)
26516{
26517 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26518 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026519 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026520 wpt_uint16 usDataOffset = 0;
26521 wpt_uint16 usSendSize = 0;
26522 wpt_uint8 ucRssiThreshold;
26523
26524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026526 -------------------------------------------------------------------------*/
26527 if (( NULL == pEventData ) ||
26528 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26529 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26530 {
26531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026535 }
26536
26537 /*-----------------------------------------------------------------------
26538 Get message buffer
26539 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026541 sizeof(ucRssiThreshold),
26542 &pSendBuffer, &usDataOffset, &usSendSize))||
26543 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26544 {
26545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026546 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026547 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026550 }
26551
26552 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26553
Jeff Johnsone7245742012-09-05 17:12:55 -070026554 wpalMemoryCopy( pSendBuffer+usDataOffset,
26555 &ucRssiThreshold,
26556 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026557
26558 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026559 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026560
26561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026562 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026563 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026564 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26565 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026566}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026567#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26568/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026569 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026570
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026571 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026572 by the Device Interface
26573
26574 wdiRoamOffloadScancb: callback for passing back the response
26575 of the Roam Candidate Lookup Req operation received from the
26576 device
26577
26578 pUserData: user data will be passed back with the
26579 callback
26580 @return Result of the function call
26581*/
26582WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026583WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026584(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026585 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026586 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26587 void* pUserData
26588)
26589{
26590 WDI_EventInfoType wdiEventData = {{0}};
26591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26592
26593 /*------------------------------------------------------------------------
26594 Sanity Check
26595 ------------------------------------------------------------------------*/
26596 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26597 {
26598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26599 "WDI API call before module is initialized - Fail request");
26600
26601 return WDI_STATUS_E_NOT_ALLOWED;
26602 }
26603
26604 /*------------------------------------------------------------------------
26605 Fill in Event data and post to the Main FSM
26606 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026607 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26608 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26609 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026610 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26611 wdiEventData.pUserData = pUserData;
26612
26613 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26614}
26615
26616void
26617WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26618{
26619 switch (wdiEdType)
26620 {
26621 case WDI_ED_NONE:
26622 *EdType = eED_NONE;
26623 break;
26624 case WDI_ED_WEP40:
26625 case WDI_ED_WEP104:
26626 *EdType = eED_WEP;
26627 break;
26628 case WDI_ED_TKIP:
26629 *EdType = eED_TKIP;
26630 break;
26631 case WDI_ED_CCMP:
26632#ifdef WLAN_FEATURE_11W
26633 case WDI_ED_AES_128_CMAC:
26634#endif
26635 *EdType = eED_CCMP;
26636 break;
26637#ifdef FEATURE_WLAN_WAPI
26638 case WDI_ED_WPI:
26639 *EdType = eED_WPI;
26640 break;
26641#endif
26642 case WDI_ED_ANY:
26643 *EdType = eED_ANY;
26644 break;
26645
26646 default:
26647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26648 "%s: Unknown Encryption Type", __func__);
26649 break;
26650 }
26651}
26652
26653/**
26654 @brief Helper function to pack Start Roam Candidate Lookup
26655 Request parameters
26656
26657 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026658 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026659 from upper layers
26660 ppSendBuffer, pSize - out pointers of the packed buffer
26661 and its size
26662
26663 @return Result of the function call
26664*/
26665
26666WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026667WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026668(
26669 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026670 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026671 wpt_uint8** ppSendBuffer,
26672 wpt_uint16* pSize
26673)
26674{
26675 wpt_uint8* pSendBuffer = NULL;
26676 wpt_uint16 usDataOffset = 0;
26677 wpt_uint16 usSendSize = 0;
26678 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26679 wpt_uint8 i;
26680 /*-----------------------------------------------------------------------
26681 Get message buffer
26682 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026684 sizeof(tRoamCandidateListParams),
26685 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026686 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026687 {
26688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026689 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026690 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026691 WDI_ASSERT(0);
26692 return WDI_STATUS_E_FAILURE;
26693 }
26694 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026695 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026696 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026697 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026698 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026699 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026700 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026701 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026702 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026703 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026704 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026705
26706 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026707 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026708 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026709 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026710 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26711 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026712 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26713 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26714 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26715 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26716 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026717 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026718 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026719 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026720 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26721 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26722 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26723 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26724 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26725 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26726 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026727 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026728 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026729 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26730 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26731 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026732
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26734 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26735 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26736 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26737 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26738 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026739 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026740 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26741 pRoamCandidateListParams->RoamScanOffloadEnabled,
26742 pRoamCandidateListParams->Command,
26743 pRoamCandidateListParams->StartScanReason,
26744 pRoamCandidateListParams->NeighborScanTimerPeriod,
26745 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26746 pRoamCandidateListParams->NeighborScanChannelMinTime,
26747 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26748 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26749 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26750 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26751 pRoamCandidateListParams->ConnectedNetwork.authentication,
26752 pRoamCandidateListParams->ConnectedNetwork.encryption,
26753 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26754 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26755 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026756 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026757 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026758 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026759 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026760 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26761 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026762 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026763 pRoamCandidateListParams->us24GProbeSize);
26764 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026765 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026766 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026767 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026768 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26769 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026770 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026771 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026772 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26773 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26774 pRoamCandidateListParams->nProbes =
26775 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26776 pRoamCandidateListParams->HomeAwayTime =
26777 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026779 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26780 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026782 }
26783
26784
26785 /*Set the output values*/
26786 *ppSendBuffer = pSendBuffer;
26787 *pSize = usSendSize;
26788 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026789}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026790
26791/**
26792 @brief Process Start Roam Candidate Lookup Request function
26793
26794 @param pWDICtx: pointer to the WLAN DAL context
26795 pEventData: pointer to the event information structure
26796
26797 @return Result of the function call
26798*/
26799WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026800WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026801(
26802 WDI_ControlBlockType* pWDICtx,
26803 WDI_EventInfoType* pEventData
26804)
26805{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026806 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026807 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26808 wpt_uint8* pSendBuffer = NULL;
26809 wpt_uint16 usSendSize = 0;
26810 WDI_Status wdiStatus;
26811 /*-------------------------------------------------------------------------
26812 Sanity check
26813 -------------------------------------------------------------------------*/
26814 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026815 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026816 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26817 {
26818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26819 "%s: Invalid parameters", __func__);
26820 WDI_ASSERT(0);
26821 return WDI_STATUS_E_FAILURE;
26822 }
26823
26824 /*-------------------------------------------------------------------------
26825 Pack the Start Roam Candidate Lookup request structure based on version
26826 -------------------------------------------------------------------------*/
26827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26828 "%s: Packing Roam Candidate Lookup request ", __func__);
26829
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026830 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026831 &pSendBuffer, &usSendSize);
26832
26833 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26834 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26835 {
26836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26837 "%s: failed to pack request parameters", __func__);
26838 WDI_ASSERT(0);
26839 return wdiStatus;
26840 }
26841
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026842 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26843 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026844
26845 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026846 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026847 -------------------------------------------------------------------------*/
26848 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026849 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026850}
26851
26852/**
26853 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26854 response is being received over the bus from HAL)
26855
26856 @param pWDICtx: pointer to the WLAN DAL context
26857 pEventData: pointer to the event information structure
26858
26859 @see
26860 @return Result of the function call
26861*/
26862WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026863WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026864(
26865 WDI_ControlBlockType* pWDICtx,
26866 WDI_EventInfoType* pEventData
26867)
26868{
26869 WDI_Status wdiStatus;
26870 eHalStatus halStatus;
26871 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26872
26873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26874
26875 /*-------------------------------------------------------------------------
26876 Sanity check
26877 -------------------------------------------------------------------------*/
26878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26879 ( NULL == pEventData->pEventData ))
26880 {
26881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26882 "%s: Invalid parameters", __func__);
26883 WDI_ASSERT(0);
26884 return WDI_STATUS_E_FAILURE;
26885 }
26886
26887 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26888
26889 /*-------------------------------------------------------------------------
26890 Extract response and send it to UMAC
26891 -------------------------------------------------------------------------*/
26892 halStatus = *((eHalStatus*)pEventData->pEventData);
26893 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26894
26895 /*Notify UMAC*/
26896 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26897
26898 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026899}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026900#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026901
26902/**
26903 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026904
26905 @param pWDICtx: pointer to the WLAN DAL context
26906 pEventData: pointer to the event information structure
26907
Jeff Johnson295189b2012-06-20 16:38:30 -070026908 @see
26909 @return Result of the function call
26910*/
26911WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026912WDI_PackUpdateScanParamsReq
26913(
26914 WDI_ControlBlockType* pWDICtx,
26915 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26916 wpt_uint8** ppSendBuffer,
26917 wpt_uint16* pSize
26918)
26919{
26920 wpt_uint8* pSendBuffer = NULL;
26921 wpt_uint16 usDataOffset = 0;
26922 wpt_uint16 usSendSize = 0;
26923 tUpdateScanParams updateScanParams = {0};
26924
26925
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026927 "Begin WDI Update Scan Parameters Old Style Params");
26928 /*-----------------------------------------------------------------------
26929 Get message buffer
26930 -----------------------------------------------------------------------*/
26931 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26932 sizeof(updateScanParams),
26933 &pSendBuffer, &usDataOffset, &usSendSize))||
26934 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26935 {
26936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026937 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026938 pwdiUpdateScanParams);
26939 WDI_ASSERT(0);
26940 return WDI_STATUS_E_FAILURE;
26941 }
26942
26943 //
26944 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26945 //
26946
26947 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26948 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26949
26950 updateScanParams.ucChannelCount =
26951 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26952 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26953 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26954 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26955
26956 wpalMemoryCopy( updateScanParams.aChannels,
26957 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26958 updateScanParams.ucChannelCount);
26959
26960
26961 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26962 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26963 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26964 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26965 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26966
26967 wpalMemoryCopy( pSendBuffer+usDataOffset,
26968 &updateScanParams,
26969 sizeof(updateScanParams));
26970
26971 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26972 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26973
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026975 "End Update Scan Parameters Old Style");
26976
26977 /*Set the output values*/
26978 *ppSendBuffer = pSendBuffer;
26979 *pSize = usSendSize;
26980
26981 return WDI_STATUS_SUCCESS;
26982}
26983
26984/**
26985 @brief Process Update Scan Params function
26986
26987 @param pWDICtx: pointer to the WLAN DAL context
26988 pEventData: pointer to the event information structure
26989
26990 @see
26991 @return Result of the function call
26992*/
26993WDI_Status
26994WDI_PackUpdateScanParamsReqEx
26995(
26996 WDI_ControlBlockType* pWDICtx,
26997 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26998 wpt_uint8** ppSendBuffer,
26999 wpt_uint16* pSize
27000)
27001{
27002 wpt_uint8* pSendBuffer = NULL;
27003 wpt_uint16 usDataOffset = 0;
27004 wpt_uint16 usSendSize = 0;
27005 tUpdateScanParamsEx updateScanParams = {0};
27006
27007
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027008 /*-----------------------------------------------------------------------
27009 Get message buffer
27010 -----------------------------------------------------------------------*/
27011 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27012 sizeof(updateScanParams),
27013 &pSendBuffer, &usDataOffset, &usSendSize))||
27014 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27015 {
27016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027017 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027018 pwdiUpdateScanParams);
27019 WDI_ASSERT(0);
27020 return WDI_STATUS_E_FAILURE;
27021 }
27022
27023 //
27024 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27025 //
27026
27027 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27028 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27029
27030 updateScanParams.ucChannelCount =
27031 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27032 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
27033 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27034 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
27035
27036 wpalMemoryCopy( updateScanParams.aChannels,
27037 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27038 updateScanParams.ucChannelCount);
27039
27040
27041 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27042 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27043 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27044 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27045 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27046
27047 wpalMemoryCopy( pSendBuffer+usDataOffset,
27048 &updateScanParams,
27049 sizeof(updateScanParams));
27050
27051 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27052 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27053
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027054 /*Set the output values*/
27055 *ppSendBuffer = pSendBuffer;
27056 *pSize = usSendSize;
27057
27058 return WDI_STATUS_SUCCESS;
27059}
27060
27061/**
27062 @brief Process Update Scan Params function
27063
27064 @param pWDICtx: pointer to the WLAN DAL context
27065 pEventData: pointer to the event information structure
27066
27067 @see
27068 @return Result of the function call
27069*/
27070WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027071WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027072(
Jeff Johnson295189b2012-06-20 16:38:30 -070027073 WDI_ControlBlockType* pWDICtx,
27074 WDI_EventInfoType* pEventData
27075)
27076{
27077 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
27078 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027079 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027080 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027081 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027082
27083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027084 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027085 -------------------------------------------------------------------------*/
27086 if (( NULL == pEventData ) ||
27087 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
27088 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
27089 {
27090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027094 }
27095
27096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27097 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070027098
27099 //
27100 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27101 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027102 if ( pWDICtx->wlanVersion.revision < 1 )
27103 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027104 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027105 &pSendBuffer, &usSendSize);
27106 }
27107 else
27108 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027109 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
27110 &pSendBuffer, &usSendSize);
27111 }
27112
27113 if(WDI_STATUS_SUCCESS != wdiStatus)
27114 {
27115 //memory allocation failed
27116 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027117 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027118
Jeff Johnson295189b2012-06-20 16:38:30 -070027119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027120 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027122 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027123 wdiUpdateScanParamsCb, pEventData->pUserData,
27124 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027125}
27126
27127/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027128 @brief Process Update Channel Params function
27129
27130 @param pWDICtx: pointer to the WLAN DAL context
27131 pEventData: pointer to the event information structure
27132
27133 @see
27134 @return Result of the function call
27135*/
27136WDI_Status
27137WDI_ProcessUpdateChannelParamsReq
27138(
27139 WDI_ControlBlockType* pWDICtx,
27140 WDI_EventInfoType* pEventData
27141)
27142{
27143 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
27144 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
27145 wpt_uint8* pSendBuffer = NULL;
27146 wpt_uint16 usDataOffset = 0;
27147 wpt_uint16 usSendSize = 0;
27148 tUpdateChannelReqType *updateChannelParams;
27149 wpt_uint32 usUpdateChanParamSize;
27150 wpt_uint8 num_channels = 0;
27151
27152 /*-------------------------------------------------------------------------
27153 Sanity check
27154 -------------------------------------------------------------------------*/
27155 if (( NULL == pEventData ) ||
27156 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
27157 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
27158 {
27159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27160 "%s: Invalid parameters", __func__);
27161 WDI_ASSERT(0);
27162 return WDI_STATUS_E_FAILURE;
27163 }
27164 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053027165 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027166
27167 /*-----------------------------------------------------------------------
27168 Get message buffer
27169 -----------------------------------------------------------------------*/
27170 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27171 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
27172 &pSendBuffer, &usDataOffset, &usSendSize))||
27173 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
27174 {
27175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27176 "Unable to get send buffer in Update Channel Params req %p",
27177 pwdiUpdateChanListParams);
27178 WDI_ASSERT(0);
27179 return WDI_STATUS_E_FAILURE;
27180 }
27181 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
27182
27183 updateChannelParams->numChan = num_channels;
27184 wpalMemoryCopy(&updateChannelParams->chanParam,
27185 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
27186 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
27187
27188 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
27189 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
27190
27191 /*-------------------------------------------------------------------------
27192 Send Update channel request to fw
27193 -------------------------------------------------------------------------*/
27194 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27195 wdiUpdateChanParamsCb, pEventData->pUserData,
27196 WDI_UPDATE_CHAN_RESP);
27197}
27198
27199/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027200 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070027201
27202 @param pWDICtx: pointer to the WLAN DAL context
27203 pEventData: pointer to the event information structure
27204
Jeff Johnson295189b2012-06-20 16:38:30 -070027205 @see
27206 @return Result of the function call
27207*/
27208WDI_Status
27209WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070027210(
Jeff Johnson295189b2012-06-20 16:38:30 -070027211 WDI_ControlBlockType* pWDICtx,
27212 WDI_EventInfoType* pEventData
27213)
27214{
Srikant Kuppa066904f2013-05-07 13:56:02 -070027215 WDI_LowLevelIndType wdiInd;
27216 tpPrefNetwFoundParams pNetwFoundParams;
27217 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027218
27219
27220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027222 -------------------------------------------------------------------------*/
27223 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27224 ( NULL == pEventData->pEventData ))
27225 {
27226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027228 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070027229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027230 }
27231
27232 /*-------------------------------------------------------------------------
27233 Extract indication and send it to UMAC
27234 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070027235 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
27236
27237 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
27238 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
27239 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
27240
27241 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
27242 {
27243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27244 "%s: fail to allocate memory", __func__);
27245 return WDI_STATUS_MEM_FAILURE;
27246 }
27247
27248 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27249 (pNetwFoundParams->ssId.length < 32 )?
27250 pNetwFoundParams->ssId.length : 32;
27251 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27252 pNetwFoundParams->ssId.ssId,
27253 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27254 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27255 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27256 pNetwFoundParams->frameLength;
27257 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27258 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27259 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027260
27261 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027262 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027263
Jeff Johnson295189b2012-06-20 16:38:30 -070027264 // DEBUG
27265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027266 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027267 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027268 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027269 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027270 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027271 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27272
ltimariub77f24b2013-01-24 18:54:33 -080027273 if ( pWDICtx->wdiLowLevelIndCB )
27274 {
27275 /*Notify UMAC*/
27276 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27277 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027278
27279 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027280}
27281
27282/**
27283 @brief Process PNO Rsp function (called when a
27284 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027285
27286 @param pWDICtx: pointer to the WLAN DAL context
27287 pEventData: pointer to the event information structure
27288
Jeff Johnson295189b2012-06-20 16:38:30 -070027289 @see
27290 @return Result of the function call
27291*/
27292WDI_Status
27293WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027294(
Jeff Johnson295189b2012-06-20 16:38:30 -070027295 WDI_ControlBlockType* pWDICtx,
27296 WDI_EventInfoType* pEventData
27297)
27298{
27299 WDI_Status wdiStatus;
27300 eHalStatus halStatus;
27301 WDI_PNOScanCb wdiPNOScanCb = NULL;
27302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27303
27304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027306 -------------------------------------------------------------------------*/
27307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27308 ( NULL == pEventData->pEventData ))
27309 {
27310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027314 }
27315
27316
Jeff Johnsone7245742012-09-05 17:12:55 -070027317 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027318
27319 /*-------------------------------------------------------------------------
27320 Extract response and send it to UMAC
27321 -------------------------------------------------------------------------*/
27322 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027323 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027324
27325 /*Notify UMAC*/
27326 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27327
Jeff Johnsone7245742012-09-05 17:12:55 -070027328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027329}/*WDI_ProcessSetPreferredNetworkRsp*/
27330
27331/**
27332 @brief Process RSSI Filter Rsp function (called when a
27333 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027334
27335 @param pWDICtx: pointer to the WLAN DAL context
27336 pEventData: pointer to the event information structure
27337
Jeff Johnson295189b2012-06-20 16:38:30 -070027338 @see
27339 @return Result of the function call
27340*/
27341WDI_Status
27342WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027343(
Jeff Johnson295189b2012-06-20 16:38:30 -070027344 WDI_ControlBlockType* pWDICtx,
27345 WDI_EventInfoType* pEventData
27346)
27347{
27348 WDI_Status wdiStatus;
27349 eHalStatus halStatus;
27350 WDI_RssiFilterCb wdiRssiFilterCb;
27351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27352
27353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027355 -------------------------------------------------------------------------*/
27356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27357 ( NULL == pEventData->pEventData ))
27358 {
27359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027363 }
27364
Jeff Johnsone7245742012-09-05 17:12:55 -070027365 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027366
27367 /*-------------------------------------------------------------------------
27368 Extract response and send it to UMAC
27369 -------------------------------------------------------------------------*/
27370 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027371 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027372
27373 /*Notify UMAC*/
27374 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27375
Jeff Johnsone7245742012-09-05 17:12:55 -070027376 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027377}/*WDI_ProcessSetRssiFilterRsp*/
27378
27379/**
27380 @brief Process Update Scan Params Rsp function (called when a
27381 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027382
27383 @param pWDICtx: pointer to the WLAN DAL context
27384 pEventData: pointer to the event information structure
27385
Jeff Johnson295189b2012-06-20 16:38:30 -070027386 @see
27387 @return Result of the function call
27388*/
27389WDI_Status
27390WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027391(
Jeff Johnson295189b2012-06-20 16:38:30 -070027392 WDI_ControlBlockType* pWDICtx,
27393 WDI_EventInfoType* pEventData
27394)
27395{
27396 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027397 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027398 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027399 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27401
27402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027404 -------------------------------------------------------------------------*/
27405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27406 ( NULL == pEventData->pEventData ))
27407 {
27408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027412 }
27413
27414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027415 "%s: Process UPD scan params ptr : %p",
27416 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027417
Jeff Johnsone7245742012-09-05 17:12:55 -070027418 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027419
27420 /*-------------------------------------------------------------------------
27421 Extract response and send it to UMAC
27422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027423 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27424 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027425 sizeof(halUpdScanParams.status));
27426
27427 uStatus = halUpdScanParams.status;
27428
27429 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027430 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027431
27432 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027433 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027434
Jeff Johnsone7245742012-09-05 17:12:55 -070027435 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027436
27437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027438 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027439 halUpdScanParams.status);
27440
27441 /*Notify UMAC*/
27442 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27443
Jeff Johnsone7245742012-09-05 17:12:55 -070027444 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027445}
27446#endif // FEATURE_WLAN_SCAN_PNO
27447
27448#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027449WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027450WDI_8023MulticastListReq
27451(
27452 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27453 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27454 void* pUserData
27455)
27456{
27457 WDI_EventInfoType wdiEventData;
27458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27459
27460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027461 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027462
27463 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027464 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027465 ------------------------------------------------------------------------*/
27466 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27467 {
27468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27469 "WDI API call before module is initialized - Fail request");
27470
Jeff Johnsone7245742012-09-05 17:12:55 -070027471 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027472 }
27473
27474 /*------------------------------------------------------------------------
27475 Fill in Event data and post to the Main FSM
27476 ------------------------------------------------------------------------*/
27477 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027478 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027479 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027480 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027481 wdiEventData.pUserData = pUserData;
27482
27483 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27484}
27485
Jeff Johnsone7245742012-09-05 17:12:55 -070027486WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027487WDI_ReceiveFilterSetFilterReq
27488(
27489 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27490 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27491 void* pUserData
27492)
27493{
27494 WDI_EventInfoType wdiEventData;
27495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27496
27497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027498 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027499
27500 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027501 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027502 ------------------------------------------------------------------------*/
27503 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27504 {
27505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27506 "WDI API call before module is initialized - Fail request");
27507
Jeff Johnsone7245742012-09-05 17:12:55 -070027508 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027509 }
27510
27511 /*------------------------------------------------------------------------
27512 Fill in Event data and post to the Main FSM
27513 ------------------------------------------------------------------------*/
27514 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027515 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27516 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027517 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27518 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027519 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027520 wdiEventData.pUserData = pUserData;
27521
27522
27523 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27524}
27525
Jeff Johnsone7245742012-09-05 17:12:55 -070027526WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027527WDI_FilterMatchCountReq
27528(
27529 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27530 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27531 void* pUserData
27532)
27533{
27534 WDI_EventInfoType wdiEventData;
27535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27536
27537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027538 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027539
27540 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027541 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027542 ------------------------------------------------------------------------*/
27543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27544 {
27545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27546 "WDI API call before module is initialized - Fail request");
27547
Jeff Johnsone7245742012-09-05 17:12:55 -070027548 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027549 }
27550
27551 /*------------------------------------------------------------------------
27552 Fill in Event data and post to the Main FSM
27553 ------------------------------------------------------------------------*/
27554 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027555 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027556 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027557 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027558 wdiEventData.pUserData = pUserData;
27559
27560
27561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27562}
27563
Jeff Johnsone7245742012-09-05 17:12:55 -070027564WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027565WDI_ReceiveFilterClearFilterReq
27566(
27567 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27568 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27569 void* pUserData
27570)
27571{
27572 WDI_EventInfoType wdiEventData;
27573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27574
27575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027576 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027577
27578 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027579 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027580 ------------------------------------------------------------------------*/
27581 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27582 {
27583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27584 "WDI API call before module is initialized - Fail request");
27585
Jeff Johnsone7245742012-09-05 17:12:55 -070027586 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027587 }
27588
27589 /*------------------------------------------------------------------------
27590 Fill in Event data and post to the Main FSM
27591 ------------------------------------------------------------------------*/
27592 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027593 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027594 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027595 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027596 wdiEventData.pUserData = pUserData;
27597
27598
27599 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27600}
27601
27602/**
27603 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027604
27605 @param pWDICtx: pointer to the WLAN DAL context
27606 pEventData: pointer to the event information structure
27607
Jeff Johnson295189b2012-06-20 16:38:30 -070027608 @see
27609 @return Result of the function call
27610*/
27611WDI_Status
27612WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027613(
Jeff Johnson295189b2012-06-20 16:38:30 -070027614 WDI_ControlBlockType* pWDICtx,
27615 WDI_EventInfoType* pEventData
27616)
27617{
27618 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27619 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027620 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027621 wpt_uint16 usDataOffset = 0;
27622 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027623 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027624 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027625 wpt_uint8 ucCurrentBSSSesIdx = 0;
27626 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027627
27628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027629 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027630
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027631 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27632 if( NULL == pRcvFltMcAddrListType )
27633 {
27634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27635 "Failed to alloc in WDI_Process8023MulticastListReq");
27636 return WDI_STATUS_E_FAILURE;
27637 }
27638
Jeff Johnson295189b2012-06-20 16:38:30 -070027639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027641 -------------------------------------------------------------------------*/
27642 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027643 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027644 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027645 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027646 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27647 {
27648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027649 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027650 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027652 return WDI_STATUS_E_FAILURE;
27653 }
27654
27655 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27656 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27657 &pBSSSes);
27658 if ( NULL == pBSSSes )
27659 {
27660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027661 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027662 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027664 }
27665
27666 /*-----------------------------------------------------------------------
27667 Get message buffer
27668 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027669 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27670 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027671 sizeof(tHalRcvFltMcAddrListType),
27672 &pSendBuffer, &usDataOffset, &usSendSize))||
27673 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27674 {
27675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27676 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027677 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027678 pEventData, pwdiFltPktSetMcListReqParamsType,
27679 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027680 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027683 }
27684
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027685 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027686 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027687 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027688 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027689 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027690 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27691 sizeof(tSirMacAddr));
27692 }
27693
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027694 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027695 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027696 pRcvFltMcAddrListType,
27697 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027698
27699 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027700 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027701
27702
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027703 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027705 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027706 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027707 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027708 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027709 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027710}
27711
27712/**
27713 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027714
27715 @param pWDICtx: pointer to the WLAN DAL context
27716 pEventData: pointer to the event information structure
27717
Jeff Johnson295189b2012-06-20 16:38:30 -070027718 @see
27719 @return Result of the function call
27720*/
27721WDI_Status
27722WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027723(
Jeff Johnson295189b2012-06-20 16:38:30 -070027724 WDI_ControlBlockType* pWDICtx,
27725 WDI_EventInfoType* pEventData
27726)
27727{
27728 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27729 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027730 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027731 wpt_uint16 usDataOffset = 0;
27732 wpt_uint16 usSendSize = 0;
27733 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027734 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027735 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027736 wpt_uint8 ucCurrentBSSSesIdx = 0;
27737 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027738 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27739 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027740
27741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027742 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027743
27744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027746 -------------------------------------------------------------------------*/
27747 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027748 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027749 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027750 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027751 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27752 {
27753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027756 return WDI_STATUS_E_FAILURE;
27757 }
27758
27759 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27760 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27761 &pBSSSes);
27762 if ( NULL == pBSSSes )
27763 {
27764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027765 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027767 }
27768
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027769 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27770 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027771
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027772 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27773 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27774 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27775
27776 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27777 usSessRcvPktFilterCfgSize);
27778
27779 if(NULL == pSessRcvPktFilterCfg)
27780 {
27781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27782 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027783 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027784 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027785 WDI_ASSERT(0);
27786 return WDI_STATUS_E_FAILURE;
27787 }
27788
27789 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27790
27791 /*-----------------------------------------------------------------------
27792 Get message buffer
27793 -----------------------------------------------------------------------*/
27794
27795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27796 usSessRcvPktFilterCfgSize,
27797 &pSendBuffer, &usDataOffset, &usSendSize))||
27798 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27799 {
27800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27801 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027802 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027803 pEventData, pwdiSetRcvPktFilterReqInfo,
27804 wdiReceiveFilterSetFilterCb);
27805 WDI_ASSERT(0);
27806 wpalMemoryFree(pSessRcvPktFilterCfg);
27807 return WDI_STATUS_E_FAILURE;
27808 }
27809
27810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027811 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027812 usSendSize,pSessRcvPktFilterCfg);
27813
27814 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27815 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27816 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27817 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27818
27819 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27820
27821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27822 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27823 pSessRcvPktFilterCfg->filterType);
27824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27825 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27826 pSessRcvPktFilterCfg->coleasceTime);
27827
27828 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27829 {
27830 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27831 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27832 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27833 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27834 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27835 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27836 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27837 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27838
27839 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27840 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27841 8);
27842 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27843 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27844 8);
27845
27846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027847 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027848 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27849 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27850
27851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027852 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027853 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27854 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27855
27856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027857 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027858 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27859 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27860 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27861 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27862 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27863 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27864
27865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027866 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027867 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27868 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27869 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27870 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27871 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27872 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27873 }
27874
27875 wpalMemoryCopy( pSendBuffer+usDataOffset,
27876 pSessRcvPktFilterCfg,
27877 usSessRcvPktFilterCfgSize);
27878
27879
27880 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27881 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27882
27883 wpalMemoryFree(pSessRcvPktFilterCfg);
27884
27885 }
27886 /*If SLM_SESSIONIZATION is not supported then do this */
27887 else
27888 {
27889 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27890 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27891 * sizeof(tHalRcvPktFilterParams));
27892
27893 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027894 usRcvPktFilterCfgSize);
27895
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027896 if(NULL == pRcvPktFilterCfg)
27897 {
27898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27899 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027900 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027901 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027902 WDI_ASSERT(0);
27903 return WDI_STATUS_E_FAILURE;
27904 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027905
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027906 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027907
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027908 /*-----------------------------------------------------------------------
27909 Get message buffer
27910 -----------------------------------------------------------------------*/
27911 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027912 usRcvPktFilterCfgSize,
27913 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027914 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27915 {
27916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027917 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027918 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027919 pEventData, pwdiSetRcvPktFilterReqInfo,
27920 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027921 WDI_ASSERT(0);
27922 wpalMemoryFree(pRcvPktFilterCfg);
27923 return WDI_STATUS_E_FAILURE;
27924 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027925
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027927 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027928 usSendSize,usRcvPktFilterCfgSize);
27929
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027930 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27931 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27932 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27933 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027934
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027936 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027937 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027939 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027940 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027941
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027942 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27943 {
27944 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27945 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27946 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27947 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27948 pRcvPktFilterCfg->paramsData[i].dataOffset =
27949 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27950 pRcvPktFilterCfg->paramsData[i].dataLength =
27951 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027952
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027953 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027954 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27955 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027956 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027957 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27958 8);
27959
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027961 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027962 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027963 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27964
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027966 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027967 pRcvPktFilterCfg->paramsData[i].dataOffset,
27968 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027969
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027971 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027972 pRcvPktFilterCfg->paramsData[i].compareData[0],
27973 pRcvPktFilterCfg->paramsData[i].compareData[1],
27974 pRcvPktFilterCfg->paramsData[i].compareData[2],
27975 pRcvPktFilterCfg->paramsData[i].compareData[3],
27976 pRcvPktFilterCfg->paramsData[i].compareData[4],
27977 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027978
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027980 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027981 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27982 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27983 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27984 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27985 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27986 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27987 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027988
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027989 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027990 pRcvPktFilterCfg,
27991 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027992
27993
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027994 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27995 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027996
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027998 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027999 wpalMemoryFree(pRcvPktFilterCfg);
28000 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028002 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028003 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028004 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028005 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028006 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028007}
28008
28009/**
28010 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028011
28012 @param pWDICtx: pointer to the WLAN DAL context
28013 pEventData: pointer to the event information structure
28014
Jeff Johnson295189b2012-06-20 16:38:30 -070028015 @see
28016 @return Result of the function call
28017*/
28018WDI_Status
28019WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028020(
Jeff Johnson295189b2012-06-20 16:38:30 -070028021 WDI_ControlBlockType* pWDICtx,
28022 WDI_EventInfoType* pEventData
28023)
28024{
28025 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
28026 NULL;
28027 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
28028 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028029 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028030 wpt_uint16 usDataOffset = 0;
28031 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028032 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
28033 wpt_uint8 ucCurrentBSSSesIdx = 0;
28034 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028035
28036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028037 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028038
28039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028040 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028041 -------------------------------------------------------------------------*/
28042 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028043 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028044 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028045 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028046 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
28047 {
28048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028052 }
28053
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028054 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28055 pwdiRcvFltPktMatchCntReqParamsType->bssId,
28056 &pBSSSes);
28057 if ( NULL == pBSSSes )
28058 {
28059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028060 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028061 return WDI_STATUS_E_FAILURE;
28062 }
28063
Jeff Johnson295189b2012-06-20 16:38:30 -070028064 /*-----------------------------------------------------------------------
28065 Get message buffer
28066 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028067 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28068 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028069 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028070 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028071 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028072 {
28073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28074 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028075 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028076 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
28077 wdiFilterMatchCountCb);
28078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028080 }
28081
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028082 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
28083 wpalMemoryCopy( pSendBuffer+usDataOffset,
28084 &rcvFltPktMatchCntReqParam,
28085 sizeof(rcvFltPktMatchCntReqParam));
28086
Jeff Johnson295189b2012-06-20 16:38:30 -070028087 //
28088 // Don't need to fill send buffer other than header
28089 //
28090 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028091 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028092
28093
28094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028095 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028096 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028097 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28098 wdiFilterMatchCountCb,
28099 pEventData->pUserData,
28100 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028101}
28102
28103/**
28104 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028105
28106 @param pWDICtx: pointer to the WLAN DAL context
28107 pEventData: pointer to the event information structure
28108
Jeff Johnson295189b2012-06-20 16:38:30 -070028109 @see
28110 @return Result of the function call
28111*/
28112WDI_Status
28113WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028114(
Jeff Johnson295189b2012-06-20 16:38:30 -070028115 WDI_ControlBlockType* pWDICtx,
28116 WDI_EventInfoType* pEventData
28117)
Jeff Johnsone7245742012-09-05 17:12:55 -070028118{
Jeff Johnson295189b2012-06-20 16:38:30 -070028119 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
28120 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028121 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028122 wpt_uint16 usDataOffset = 0;
28123 wpt_uint16 usSendSize = 0;
28124 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028125 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070028126 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028127
28128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028129 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028130
28131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028133 -------------------------------------------------------------------------*/
28134 if (( NULL == pEventData ) ||
28135 ( NULL == (pwdiRcvFltPktClearReqParamsType =
28136 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028137 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028138 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
28139 {
28140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028143 return WDI_STATUS_E_FAILURE;
28144 }
28145
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028146 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028147 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
28148 &pBSSSes);
28149 if ( NULL == pBSSSes )
28150 {
28151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028152 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028154 }
28155
28156 /*-----------------------------------------------------------------------
28157 Get message buffer
28158 -----------------------------------------------------------------------*/
28159 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028160 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028161 sizeof(tHalRcvFltPktClearParam),
28162 &pSendBuffer, &usDataOffset, &usSendSize))||
28163 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
28164 {
28165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28166 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028167 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028168 pEventData, pwdiRcvFltPktClearReqParamsType,
28169 wdiRcvFltPktClearFilterCb);
28170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028172 }
28173
28174
28175 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028176 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070028177 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028178 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070028179
Jeff Johnsone7245742012-09-05 17:12:55 -070028180 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
28181 wpalMemoryCopy( pSendBuffer+usDataOffset,
28182 &rcvFltPktClearParam,
28183 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070028184
28185 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028186 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028187
28188
28189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028190 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028191 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028192 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028193 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028194 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028195}
28196
28197/**
28198 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028199
28200 @param pWDICtx: pointer to the WLAN DAL context
28201 pEventData: pointer to the event information structure
28202
Jeff Johnson295189b2012-06-20 16:38:30 -070028203 @see
28204 @return Result of the function call
28205*/
28206WDI_Status
28207WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028208(
Jeff Johnson295189b2012-06-20 16:38:30 -070028209 WDI_ControlBlockType* pWDICtx,
28210 WDI_EventInfoType* pEventData
28211)
28212{
Jeff Johnson295189b2012-06-20 16:38:30 -070028213 eHalStatus halStatus;
28214 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028215 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
28216 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28218
28219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028220 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028221
28222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028224 -------------------------------------------------------------------------*/
28225 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28226 ( NULL == pEventData->pEventData ))
28227 {
28228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028232 }
28233
Jeff Johnsone7245742012-09-05 17:12:55 -070028234 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028235
28236 /*-------------------------------------------------------------------------
28237 Extract response and send it to UMAC
28238 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028239 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28240 {
28241 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
28242 pEventData->pEventData,
28243 sizeof(halRcvFltPktSetMcListRsp));
28244
28245 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
28246 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
28247 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28248 halRcvFltPktSetMcListRsp.bssIdx;
28249 }
28250 else
28251 {
28252 halStatus = *((eHalStatus*)pEventData->pEventData);
28253 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28254 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028255
28256 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028257 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028258
Jeff Johnsone7245742012-09-05 17:12:55 -070028259 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028260}
28261
28262/**
28263 @brief Process Set Rsp function (called when a
28264 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028265
28266 @param pWDICtx: pointer to the WLAN DAL context
28267 pEventData: pointer to the event information structure
28268
Jeff Johnson295189b2012-06-20 16:38:30 -070028269 @see
28270 @return Result of the function call
28271*/
28272WDI_Status
28273WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028274(
Jeff Johnson295189b2012-06-20 16:38:30 -070028275 WDI_ControlBlockType* pWDICtx,
28276 WDI_EventInfoType* pEventData
28277)
28278{
Jeff Johnson295189b2012-06-20 16:38:30 -070028279 eHalStatus halStatus;
28280 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028281 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28282 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28284
28285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028286 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028287
28288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028290 -------------------------------------------------------------------------*/
28291 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28292 ( NULL == pEventData->pEventData ))
28293 {
28294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028298 }
28299
28300 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028301 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028302
28303 /*-------------------------------------------------------------------------
28304 Extract response and send it to UMAC
28305 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028306 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28307 {
28308 wpalMemoryCopy( &halSetPktFilterRspParams,
28309 pEventData->pEventData,
28310 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028311
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028312 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28313 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28314 }
28315 else
28316 {
28317 halStatus = *((eHalStatus*)pEventData->pEventData);
28318 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28319 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028320 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028321 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028322
Jeff Johnsone7245742012-09-05 17:12:55 -070028323 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028324}
28325
28326/**
28327 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028328
28329 @param pWDICtx: pointer to the WLAN DAL context
28330 pEventData: pointer to the event information structure
28331
Jeff Johnson295189b2012-06-20 16:38:30 -070028332 @see
28333 @return Result of the function call
28334*/
28335WDI_Status
28336WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028337(
Jeff Johnson295189b2012-06-20 16:38:30 -070028338 WDI_ControlBlockType* pWDICtx,
28339 WDI_EventInfoType* pEventData
28340)
28341{
Jeff Johnson295189b2012-06-20 16:38:30 -070028342 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028343 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028344 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28345 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028346
28347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28348
28349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028350 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028351
28352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028354 -------------------------------------------------------------------------*/
28355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28356 ( NULL == pEventData->pEventData ))
28357 {
28358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028362 }
28363
Jeff Johnsone7245742012-09-05 17:12:55 -070028364 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028365
28366 /*-------------------------------------------------------------------------
28367 Extract response and send it to UMAC
28368 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028369 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28370 {
28371 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28372 pEventData->pEventData,
28373 sizeof(halRcvFltrPktMatachRsp));
28374
28375 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28376 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28377 }
28378 else
28379 {
28380 halStatus = *((eHalStatus*)pEventData->pEventData);
28381 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28382 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028383
28384 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028385 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028386
Jeff Johnsone7245742012-09-05 17:12:55 -070028387 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028388}
28389
28390/**
28391 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028392
28393 @param pWDICtx: pointer to the WLAN DAL context
28394 pEventData: pointer to the event information structure
28395
Jeff Johnson295189b2012-06-20 16:38:30 -070028396 @see
28397 @return Result of the function call
28398*/
28399WDI_Status
28400WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028401(
Jeff Johnson295189b2012-06-20 16:38:30 -070028402 WDI_ControlBlockType* pWDICtx,
28403 WDI_EventInfoType* pEventData
28404)
28405{
Jeff Johnson295189b2012-06-20 16:38:30 -070028406 eHalStatus halStatus;
28407 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028408 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28409 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28411
28412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028413 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028414
28415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028417 -------------------------------------------------------------------------*/
28418 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28419 ( NULL == pEventData->pEventData ))
28420 {
28421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028425 }
28426
28427 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028428 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028429
28430 /*-------------------------------------------------------------------------
28431 Extract response and send it to UMAC
28432 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028433 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28434 {
28435 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28436 pEventData->pEventData,
28437 sizeof(halRcvFltPktClearRspMsg));
28438
28439 wdiRcvFltPktClearRspParamsType.wdiStatus =
28440 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28441 wdiRcvFltPktClearRspParamsType.bssIdx =
28442 halRcvFltPktClearRspMsg.bssIdx;
28443 }
28444 else
28445 {
28446 halStatus = *((eHalStatus*)pEventData->pEventData);
28447 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28448 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028449
28450 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028451 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028452
Jeff Johnsone7245742012-09-05 17:12:55 -070028453 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028454}
28455#endif // WLAN_FEATURE_PACKET_FILTERING
28456
28457/**
28458 @brief Process Shutdown Rsp function
28459 There is no shutdown response comming from HAL
28460 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028461
Jeff Johnson295189b2012-06-20 16:38:30 -070028462 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028463 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028464
28465 @see
28466 @return Result of the function call
28467*/
28468WDI_Status
28469WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028470(
Jeff Johnson295189b2012-06-20 16:38:30 -070028471 WDI_ControlBlockType* pWDICtx,
28472 WDI_EventInfoType* pEventData
28473)
28474{
28475 /*There is no shutdown response comming from HAL - function just kept for
28476 simmetry */
28477 WDI_ASSERT(0);
28478 return WDI_STATUS_SUCCESS;
28479}/*WDI_ProcessShutdownRsp*/
28480
28481/**
28482 @brief WDI_SetPowerParamsReq
28483
Jeff Johnsone7245742012-09-05 17:12:55 -070028484 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028485 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028486
Jeff Johnson295189b2012-06-20 16:38:30 -070028487 wdiPowerParamsCb: callback for passing back the response
28488 of the Set Power Params operation received from the
28489 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028490
Jeff Johnson295189b2012-06-20 16:38:30 -070028491 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028492 callback
28493
Jeff Johnson295189b2012-06-20 16:38:30 -070028494 @return Result of the function call
28495*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028497WDI_SetPowerParamsReq
28498(
28499 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28500 WDI_SetPowerParamsCb wdiPowerParamsCb,
28501 void* pUserData
28502)
28503{
28504 WDI_EventInfoType wdiEventData;
28505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28506
28507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028509 ------------------------------------------------------------------------*/
28510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28511 {
28512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28513 "WDI API call before module is initialized - Fail request");
28514
Jeff Johnsone7245742012-09-05 17:12:55 -070028515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028516 }
28517
28518 /*------------------------------------------------------------------------
28519 Fill in Event data and post to the Main FSM
28520 ------------------------------------------------------------------------*/
28521 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028522 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028523 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028524 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028525 wdiEventData.pUserData = pUserData;
28526
28527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28528}/*WDI_SetPowerParamsReq*/
28529
28530/**
28531 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028532
28533 @param pWDICtx: pointer to the WLAN DAL context
28534 pEventData: pointer to the event information structure
28535
Jeff Johnson295189b2012-06-20 16:38:30 -070028536 @see
28537 @return Result of the function call
28538*/
28539WDI_Status
28540WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028541(
Jeff Johnson295189b2012-06-20 16:38:30 -070028542 WDI_ControlBlockType* pWDICtx,
28543 WDI_EventInfoType* pEventData
28544)
28545{
28546 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28547 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028548 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028549 wpt_uint16 usDataOffset = 0;
28550 wpt_uint16 usSendSize = 0;
28551 tSetPowerParamsType powerParams;
28552
28553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028555 -------------------------------------------------------------------------*/
28556 if (( NULL == pEventData ) ||
28557 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28558 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28559 {
28560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028561 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028564 }
28565
28566 /*-----------------------------------------------------------------------
28567 Get message buffer
28568 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028569 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028570 sizeof(powerParams),
28571 &pSendBuffer, &usDataOffset, &usSendSize))||
28572 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28573 {
28574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028575 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028576 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028579 }
28580
28581 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028582 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028583 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28584
28585 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028586 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028587 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28588
28589 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028590 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028591 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28592
28593 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028594 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028595 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28596
28597 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028598 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028599 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28600
28601 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028602 powerParams.uBETInterval =
28603 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028604
Yue Mac24062f2013-05-13 17:01:29 -070028605 /* MAX LI for modulated DTIM */
28606 powerParams.uMaxLIModulatedDTIM =
28607 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028608
28609 wpalMemoryCopy( pSendBuffer+usDataOffset,
28610 &powerParams,
28611 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028612
28613 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028614 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028615
28616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028617 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28620 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028621}
28622
28623/**
28624 @brief Process Power Params Rsp function (called when a
28625 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028626
28627 @param pWDICtx: pointer to the WLAN DAL context
28628 pEventData: pointer to the event information structure
28629
Jeff Johnson295189b2012-06-20 16:38:30 -070028630 @see
28631 @return Result of the function call
28632*/
28633WDI_Status
28634WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028635(
Jeff Johnson295189b2012-06-20 16:38:30 -070028636 WDI_ControlBlockType* pWDICtx,
28637 WDI_EventInfoType* pEventData
28638)
28639{
28640 WDI_Status wdiStatus;
28641 eHalStatus halStatus;
28642 WDI_SetPowerParamsCb wdiPowerParamsCb;
28643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28644
28645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028647 -------------------------------------------------------------------------*/
28648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28649 ( NULL == pEventData->pEventData ))
28650 {
28651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028655 }
28656
Jeff Johnsone7245742012-09-05 17:12:55 -070028657 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028658
28659 /*-------------------------------------------------------------------------
28660 Extract response and send it to UMAC
28661 -------------------------------------------------------------------------*/
28662 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028663 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028664
28665 /*Notify UMAC*/
28666 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28667
Jeff Johnsone7245742012-09-05 17:12:55 -070028668 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028669}/*WDI_ProcessSetPowerParamsRsp*/
28670
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028671/**
28672 @brief WDI_dhcpStartInd
28673 Host will send an event to the FW when DHCP is initiated
28674
28675 @param
28676 WDI_DHCPInd: DHCP Indication
28677 @see
28678 @return Result of the function call
28679*/
28680WDI_Status
28681WDI_dhcpStartInd
28682(
28683 WDI_DHCPInd *wdiDHCPInd
28684)
28685{
28686 WDI_EventInfoType wdiEventData;
28687
28688 /*------------------------------------------------------------------------
28689 Sanity Check
28690 ------------------------------------------------------------------------*/
28691 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28692 {
28693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28694 "WDI API call before module is initialized - Fail request");
28695
28696 return WDI_STATUS_E_NOT_ALLOWED;
28697 }
28698
28699 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28700 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028701 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028702 wdiEventData.pCBfnc = NULL;
28703 wdiEventData.pUserData = NULL;
28704
28705 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28706}
28707
28708
28709/**
28710 @brief WDI_dhcpStopInd
28711 Host will send an event to the FW when DHCP is completed
28712
28713 @param
28714 WDI_DHCPInd: DHCP Indication
28715 @see
28716 @return Result of the function call
28717*/
28718WDI_Status
28719WDI_dhcpStopInd
28720(
28721 WDI_DHCPInd *wdiDHCPInd
28722)
28723{
28724 WDI_EventInfoType wdiEventData;
28725
28726 /*------------------------------------------------------------------------
28727 Sanity Check
28728 ------------------------------------------------------------------------*/
28729 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28730 {
28731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28732 "WDI API call before module is initialized - Fail request");
28733
28734 return WDI_STATUS_E_NOT_ALLOWED;
28735 }
28736
28737 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28738 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028739 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028740 wdiEventData.pCBfnc = NULL;
28741 wdiEventData.pUserData = NULL;
28742
28743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28744}
28745
28746
28747/**
28748 @brief Process DHCP Start Indication message and post it to HAL
28749
28750 @param pWDICtx: pointer to the WLAN DAL context
28751 pEventData: pointer to the event information structure
28752
28753 @see
28754 @return Result of the function call
28755*/
28756WDI_Status
28757WDI_ProcessDHCPStartInd
28758(
28759 WDI_ControlBlockType* pWDICtx,
28760 WDI_EventInfoType* pEventData
28761)
28762{
28763 wpt_uint8* pSendBuffer = NULL;
28764 wpt_uint16 usDataOffset = 0;
28765 wpt_uint16 usSendSize = 0;
28766 wpt_uint16 usLen = 0;
28767 WDI_DHCPInd* pwdiDHCPInd = NULL;
28768 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028769 WDI_Status wdiStatus;
28770
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028771
28772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28773
28774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28775 "%s", __func__);
28776
28777 /*-------------------------------------------------------------------------
28778 Sanity check
28779 -------------------------------------------------------------------------*/
28780 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28781 {
28782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28783 "%s: Invalid parameters", __func__);
28784 WDI_ASSERT(0);
28785 return WDI_STATUS_E_FAILURE;
28786 }
28787 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28788 /*-----------------------------------------------------------------------
28789 Get message buffer
28790 -----------------------------------------------------------------------*/
28791
28792 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28793 WDI_DHCP_START_IND,
28794 sizeof(tDHCPInfo),
28795 &pSendBuffer, &usDataOffset, &usSendSize))||
28796 ( usSendSize < (usDataOffset + usLen )))
28797 {
28798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28799 "Unable to get send buffer in DHCP Start req %p ",
28800 pEventData);
28801 WDI_ASSERT(0);
28802 return WDI_STATUS_E_FAILURE;
28803 }
28804
Sandeep Puligillaee789512014-02-13 19:14:52 +053028805 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028806 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28807 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28808 WDI_MAC_ADDR_LEN);
28809
28810 pWDICtx->pReqStatusUserData = NULL;
28811 pWDICtx->pfncRspCB = NULL;
28812
28813 /*-------------------------------------------------------------------------
28814 Send DHCP Start Indication to HAL
28815 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028816 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28817 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028818}/*WDI_ProcessDHCPStartInd*/
28819
28820/**
28821 @brief Process DHCP Stop indication message and post it to HAL
28822
28823 @param pWDICtx: pointer to the WLAN DAL context
28824 pEventData: pointer to the event information structure
28825
28826 @see
28827 @return Result of the function call
28828*/
28829WDI_Status
28830WDI_ProcessDHCPStopInd
28831(
28832 WDI_ControlBlockType* pWDICtx,
28833 WDI_EventInfoType* pEventData
28834)
28835{
28836 wpt_uint8* pSendBuffer = NULL;
28837 wpt_uint16 usDataOffset = 0;
28838 wpt_uint16 usSendSize = 0;
28839 wpt_uint16 usLen = 0;
28840 WDI_DHCPInd* pwdiDHCPInd = NULL;
28841 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028842 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028843
28844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28845
28846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28847 "%s", __func__);
28848
28849 /*-------------------------------------------------------------------------
28850 Sanity check
28851 -------------------------------------------------------------------------*/
28852
28853 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28854 {
28855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28856 "%s: Invalid parameters", __func__);
28857 WDI_ASSERT(0);
28858 return WDI_STATUS_E_FAILURE;
28859 }
28860 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28861 /*-----------------------------------------------------------------------
28862 Get message buffer
28863 -----------------------------------------------------------------------*/
28864
28865 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28866 WDI_DHCP_STOP_IND,
28867 sizeof(tDHCPInfo),
28868 &pSendBuffer, &usDataOffset, &usSendSize))||
28869 ( usSendSize < (usDataOffset + usLen )))
28870 {
28871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28872 "Unable to get send buffer in DHCP Start req %p ",
28873 pEventData);
28874 WDI_ASSERT(0);
28875 return WDI_STATUS_E_FAILURE;
28876 }
28877
Sandeep Puligillaee789512014-02-13 19:14:52 +053028878 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028879 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28880 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28881 WDI_MAC_ADDR_LEN);
28882
28883 pWDICtx->pReqStatusUserData = NULL;
28884 pWDICtx->pfncRspCB = NULL;
28885 /*-------------------------------------------------------------------------
28886 Send DHCP Stop indication to HAL
28887 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028888 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28889 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028890
28891}/*WDI_ProcessDHCPStopInd*/
28892
28893
Jeff Johnson295189b2012-06-20 16:38:30 -070028894#ifdef WLAN_FEATURE_GTK_OFFLOAD
28895/**
28896 @brief WDI_GTKOffloadReq will be called when the upper MAC
28897 wants to set GTK Rekey Counter while in power save. Upon
28898 the call of this API the WLAN DAL will pack and send a
28899 HAL GTK offload request message to the lower RIVA
28900 sub-system if DAL is in state STARTED.
28901
28902 In state BUSY this request will be queued. Request won't
28903 be allowed in any other state.
28904
28905 WDI_PostAssocReq must have been called.
28906
28907 @param pwdiGtkOffloadParams: the GTK offload as specified
28908 by the Device Interface
28909
28910 wdiGtkOffloadCb: callback for passing back the response
28911 of the GTK offload operation received from the device
28912
28913 pUserData: user data will be passed back with the
28914 callback
28915
28916 @see WDI_PostAssocReq
28917 @return Result of the function call
28918*/
28919WDI_Status
28920WDI_GTKOffloadReq
28921(
28922 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28923 WDI_GtkOffloadCb wdiGtkOffloadCb,
28924 void* pUserData
28925)
28926{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028927 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28929
28930 /*------------------------------------------------------------------------
28931 Sanity Check
28932 ------------------------------------------------------------------------*/
28933 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28934 {
28935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28936 "WDI API call before module is initialized - Fail request");
28937
28938 return WDI_STATUS_E_NOT_ALLOWED;
28939 }
28940
28941 /*------------------------------------------------------------------------
28942 Fill in Event data and post to the Main FSM
28943 ------------------------------------------------------------------------*/
28944 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28945 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028946 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028947 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28948 wdiEventData.pUserData = pUserData;
28949
28950 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28951}
28952
28953
28954/**
28955 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28956 MAC wants to get GTK Rekey Counter while in power save.
28957 Upon the call of this API the WLAN DAL will pack and
28958 send a HAL GTK offload request message to the lower RIVA
28959 sub-system if DAL is in state STARTED.
28960
28961 In state BUSY this request will be queued. Request won't
28962 be allowed in any other state.
28963
28964 WDI_PostAssocReq must have been called.
28965
28966 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28967 Information Message as specified by the
28968 Device Interface
28969
28970 wdiGtkOffloadGetInfoCb: callback for passing back the
28971 response of the GTK offload operation received from the
28972 device
28973
28974 pUserData: user data will be passed back with the
28975 callback
28976
28977 @see WDI_PostAssocReq
28978 @return Result of the function call
28979*/
28980WDI_Status
28981WDI_GTKOffloadGetInfoReq
28982(
28983 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28984 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28985 void* pUserData
28986)
28987{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028988 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28990
28991 /*------------------------------------------------------------------------
28992 Sanity Check
28993 ------------------------------------------------------------------------*/
28994 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28995 {
28996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28997 "WDI API call before module is initialized - Fail request");
28998
28999 return WDI_STATUS_E_NOT_ALLOWED;
29000 }
29001
29002 /*------------------------------------------------------------------------
29003 Fill in Event data and post to the Main FSM
29004 ------------------------------------------------------------------------*/
29005 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
29006 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
29007 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
29008 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
29009 wdiEventData.pUserData = pUserData;
29010
29011 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29012}
29013
29014
29015/**
29016 @brief Process set GTK Offload Request function
29017
29018 @param pWDICtx: pointer to the WLAN DAL context
29019 pEventData: pointer to the event information structure
29020
29021 @see
29022 @return Result of the function call
29023*/
29024WDI_Status
29025WDI_ProcessGTKOffloadReq
29026(
29027 WDI_ControlBlockType* pWDICtx,
29028 WDI_EventInfoType* pEventData
29029)
29030{
29031 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
29032 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
29033 wpt_uint8* pSendBuffer = NULL;
29034 wpt_uint16 usDataOffset = 0;
29035 wpt_uint16 usSendSize = 0;
29036 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029037 wpt_uint8 ucCurrentSessionId = 0;
29038 WDI_BSSSessionType* pBSSSes = NULL;
29039
Jeff Johnson295189b2012-06-20 16:38:30 -070029040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29041
29042 /*-------------------------------------------------------------------------
29043 Sanity check
29044 -------------------------------------------------------------------------*/
29045 if (( NULL == pEventData ) ||
29046 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
29047 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
29048 {
29049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029050 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029051 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029052 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029053 }
29054
29055 /*-----------------------------------------------------------------------
29056 Get message buffer
29057 -----------------------------------------------------------------------*/
29058 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
29059 sizeof(gtkOffloadReqParams),
29060 &pSendBuffer, &usDataOffset, &usSendSize))||
29061 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
29062 {
29063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029064 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029065 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
29066 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029067 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029068 }
29069
29070 //
29071 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
29072 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029073 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29074 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
29075 &pBSSSes);
29076 if ( NULL == pBSSSes )
29077 {
29078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029079 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029080 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029081 }
29082
29083 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
29084
Jeff Johnson295189b2012-06-20 16:38:30 -070029085 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
29086 // Copy KCK
29087 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
29088 // Copy KEK
29089 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
29090 // Copy KeyReplayCounter
29091 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
29092
29093 wpalMemoryCopy( pSendBuffer+usDataOffset,
29094 &gtkOffloadReqParams,
29095 sizeof(gtkOffloadReqParams));
29096
29097 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
29098 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
29099
29100 /*-------------------------------------------------------------------------
29101 Send Get STA Request to HAL
29102 -------------------------------------------------------------------------*/
29103 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29104 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029105
29106fail:
29107 // Release the message buffer so we don't leak
29108 wpalMemoryFree(pSendBuffer);
29109
29110failRequest:
29111 //WDA should have failure check to avoid the memory leak
29112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029113}
29114
29115
29116/**
29117 @brief Process GTK Offload Get Information Request function
29118
29119 @param pWDICtx: pointer to the WLAN DAL context
29120 pEventData: pointer to the event information structure
29121
29122 @see
29123 @return Result of the function call
29124*/
29125WDI_Status
29126WDI_ProcessGTKOffloadGetInfoReq
29127(
29128 WDI_ControlBlockType* pWDICtx,
29129 WDI_EventInfoType* pEventData
29130)
29131{
29132 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
29133 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
29134 wpt_uint8* pSendBuffer = NULL;
29135 wpt_uint16 usDataOffset = 0;
29136 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029137 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
29138 wpt_uint8 ucCurrentSessionId = 0;
29139 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029140
29141 /*-------------------------------------------------------------------------
29142 Sanity check
29143 -------------------------------------------------------------------------*/
29144 if (( NULL == pEventData ) ||
29145 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
29146 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
29147 {
29148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029149 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029150 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029151 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029152 }
29153
29154 /*-----------------------------------------------------------------------
29155 Get message buffer
29156 -----------------------------------------------------------------------*/
29157 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029158 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029159 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029160 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029161 {
29162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029163 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029164 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
29165 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029166 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029167 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029168 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29169 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
29170 &pBSSSes);
29171 if ( NULL == pBSSSes )
29172 {
29173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029174 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029175 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029176 }
29177 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070029178
29179 //
29180 // Don't need to fill send buffer other than header
29181 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029182 wpalMemoryCopy( pSendBuffer+usDataOffset,
29183 &halGtkOffloadGetInfoReqParams,
29184 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029185
29186 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
29187 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
29188
29189 /*-------------------------------------------------------------------------
29190 Send Get STA Request to HAL
29191 -------------------------------------------------------------------------*/
29192 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29193 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029194fail:
29195 // Release the message buffer so we don't leak
29196 wpalMemoryFree(pSendBuffer);
29197
29198failRequest:
29199 //WDA should have failure check to avoid the memory leak
29200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029201}
29202
29203/**
29204 @brief Process host offload Rsp function (called when a
29205 response is being received over the bus from HAL)
29206
29207 @param pWDICtx: pointer to the WLAN DAL context
29208 pEventData: pointer to the event information structure
29209
29210 @see
29211 @return Result of the function call
29212*/
29213WDI_Status
29214WDI_ProcessGtkOffloadRsp
29215(
29216 WDI_ControlBlockType* pWDICtx,
29217 WDI_EventInfoType* pEventData
29218)
29219{
Jeff Johnson295189b2012-06-20 16:38:30 -070029220 eHalStatus halStatus;
29221 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029222 tHalGtkOffloadRspParams halGtkOffloadRspParams;
29223 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029224
29225 /*-------------------------------------------------------------------------
29226 Sanity check
29227 -------------------------------------------------------------------------*/
29228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29229 ( NULL == pEventData->pEventData))
29230 {
29231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029233 WDI_ASSERT(0);
29234 return WDI_STATUS_E_FAILURE;
29235 }
29236
Wilson Yang00256342013-10-10 23:13:38 -070029237 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
29238
Jeff Johnson295189b2012-06-20 16:38:30 -070029239 /*-------------------------------------------------------------------------
29240 Extract response and send it to UMAC
29241 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029242 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29243 {
29244 wpalMemoryCopy( &halGtkOffloadRspParams,
29245 pEventData->pEventData,
29246 sizeof(halGtkOffloadRspParams));
29247
29248 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029249 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029250 wdiGtkOffloadRsparams.bssIdx =
29251 halGtkOffloadRspParams.bssIdx;
29252 }
29253 else
29254 {
29255 halStatus = *((eHalStatus*)pEventData->pEventData);
29256 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29257 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029258
29259 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029260 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029261
29262 return WDI_STATUS_SUCCESS;
29263}
29264
29265/**
29266 @brief Process GTK Offload Get Information Response function
29267
29268 @param pWDICtx: pointer to the WLAN DAL context
29269 pEventData: pointer to the event information structure
29270
29271 @see
29272 @return Result of the function call
29273*/
29274WDI_Status
29275WDI_ProcessGTKOffloadGetInfoRsp
29276(
29277 WDI_ControlBlockType* pWDICtx,
29278 WDI_EventInfoType* pEventData
29279)
29280{
Jeff Johnson295189b2012-06-20 16:38:30 -070029281 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029282 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029283 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29284 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029285 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029286
Jeff Johnson295189b2012-06-20 16:38:30 -070029287
29288 /*-------------------------------------------------------------------------
29289 Sanity check
29290 -------------------------------------------------------------------------*/
29291 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29292 ( NULL == pEventData->pEventData ))
29293 {
29294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029296 WDI_ASSERT(0);
29297 return WDI_STATUS_E_FAILURE;
29298 }
29299
Wilson Yang00256342013-10-10 23:13:38 -070029300 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29301
29302 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029303 Extract response and send it to UMAC
29304 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029305 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29306 {
29307 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29308 pEventData->pEventData,
29309 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029310
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029311 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029312 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029313 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29314 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29315 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29316 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29317 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29318 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29319 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29320 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029321
29322 wpalMutexAcquire(&pWDICtx->wptMutex);
29323 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29324 &pBSSSes);
29325
29326 if ( NULL == pBSSSes )
29327 {
29328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29329 "Association sequence for this BSS does not exist or "
29330 "association no longer in progress - mysterious HAL response");
29331 wpalMutexRelease(&pWDICtx->wptMutex);
29332 return WDI_STATUS_E_NOT_ALLOWED;
29333 }
29334
29335 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29336 sizeof (wpt_macAddr));
29337 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029338 }
29339 else
29340 {
29341 halStatus = *((eHalStatus*)pEventData->pEventData);
29342 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29343 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029344 /*Notify UMAC*/
29345 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29346 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029347 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029348
29349 return WDI_STATUS_SUCCESS;
29350}
29351#endif // WLAN_FEATURE_GTK_OFFLOAD
29352
29353#ifdef WLAN_WAKEUP_EVENTS
29354WDI_Status
29355WDI_ProcessWakeReasonInd
29356(
29357 WDI_ControlBlockType* pWDICtx,
29358 WDI_EventInfoType* pEventData
29359)
29360{
29361 WDI_LowLevelIndType *pWdiInd;
29362 tpWakeReasonParams pWakeReasonParams;
29363 wpt_uint32 allocSize = 0;
29364
29365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029366 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029367
29368 /*-------------------------------------------------------------------------
29369 Sanity check
29370 -------------------------------------------------------------------------*/
29371 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29372 ( NULL == pEventData->pEventData ))
29373 {
29374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029376 WDI_ASSERT( 0 );
29377 return WDI_STATUS_E_FAILURE;
29378 }
29379
29380 /*-------------------------------------------------------------------------
29381 Extract indication and send it to UMAC
29382 -------------------------------------------------------------------------*/
29383 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29384
29385 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29386
29387 //Allocate memory for WDI_WakeReasonIndType structure
29388 pWdiInd = wpalMemoryAllocate(allocSize) ;
29389
29390 if(NULL == pWdiInd)
29391 {
29392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029393 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029394 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029395 WDI_ASSERT(0);
29396 return WDI_STATUS_E_FAILURE;
29397 }
29398
29399 wpalMemoryZero(pWdiInd, allocSize);
29400
29401 /* Fill in the indication parameters*/
29402 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29403 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29404 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29405 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29406 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29407 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29408 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29409 &(pWakeReasonParams->aDataStart[0]),
29410 pWakeReasonParams->ulStoredDataLen);
29411
ltimariub77f24b2013-01-24 18:54:33 -080029412
29413 if ( pWDICtx->wdiLowLevelIndCB )
29414 {
29415 /*Notify UMAC*/
29416 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29417 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029418
29419 //Free memory allocated for WDI_WakeReasonIndType structure
29420 wpalMemoryFree(pWdiInd);
29421
29422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029423 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029424
29425 return WDI_STATUS_SUCCESS;
29426}
29427#endif // WLAN_WAKEUP_EVENTS
29428
29429void WDI_GetWcnssCompiledApiVersion
29430(
29431 WDI_WlanVersionType *pWcnssApiVersion
29432)
29433{
29434 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29435 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29436 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29437 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29438}
29439
29440/**
29441 @brief Process Set TM Level Rsp function (called when a
29442 response is being received over the bus from HAL)
29443
29444 @param pWDICtx: pointer to the WLAN DAL context
29445 pEventData: pointer to the event information structure
29446
29447 @see
29448 @return Result of the function call
29449*/
29450WDI_Status
29451WDI_ProcessSetTmLevelRsp
29452(
29453 WDI_ControlBlockType* pWDICtx,
29454 WDI_EventInfoType* pEventData
29455)
29456{
29457 WDI_Status wdiStatus;
29458 eHalStatus halStatus;
29459 WDI_SetTmLevelCb wdiSetTmLevelCb;
29460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29461
29462 /*-------------------------------------------------------------------------
29463 Sanity check
29464 -------------------------------------------------------------------------*/
29465 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29466 ( NULL == pEventData->pEventData ))
29467 {
29468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029470 WDI_ASSERT(0);
29471 return WDI_STATUS_E_FAILURE;
29472 }
29473
29474 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29475
29476 /*-------------------------------------------------------------------------
29477 Extract response and send it to UMAC
29478 -------------------------------------------------------------------------*/
29479 halStatus = *((eHalStatus*)pEventData->pEventData);
29480 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29481
29482 /*Notify UMAC*/
29483 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29484
29485 return WDI_STATUS_SUCCESS;
29486}/*WDI_ProcessSetTmLevelRsp*/
29487
29488/**
29489 @brief Process Set Thermal Mitigation level Changed request
29490
29491 @param pWDICtx: pointer to the WLAN DAL context
29492 pEventData: pointer to the event information structure
29493
29494 @see
29495 @return Result of the function call
29496*/
29497WDI_Status
29498WDI_ProcessSetTmLevelReq
29499(
29500 WDI_ControlBlockType* pWDICtx,
29501 WDI_EventInfoType* pEventData
29502)
29503{
29504 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29505 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29506 wpt_uint8* pSendBuffer = NULL;
29507 wpt_uint16 usDataOffset = 0;
29508 wpt_uint16 usSendSize = 0;
29509 tSetThermalMitgationType halTmMsg;
29510
29511 /*-------------------------------------------------------------------------
29512 Sanity check
29513 -------------------------------------------------------------------------*/
29514 if (( NULL == pEventData ) ||
29515 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29516 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29517 {
29518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029520 WDI_ASSERT(0);
29521 return WDI_STATUS_E_FAILURE;
29522 }
29523
29524 /*-----------------------------------------------------------------------
29525 Get message buffer
29526 -----------------------------------------------------------------------*/
29527 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29528 sizeof(halTmMsg),
29529 &pSendBuffer, &usDataOffset, &usSendSize))||
29530 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29531 {
29532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029533 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029534 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29535 WDI_ASSERT(0);
29536 return WDI_STATUS_E_FAILURE;
29537 }
29538
29539 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29540 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29541
29542 wpalMemoryCopy( pSendBuffer+usDataOffset,
29543 &halTmMsg,
29544 sizeof(halTmMsg));
29545
29546 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29547 pWDICtx->pfncRspCB = NULL;
29548 /*-------------------------------------------------------------------------
29549 Send Get STA Request to HAL
29550 -------------------------------------------------------------------------*/
29551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29552 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29553}
29554
29555/* Fill the value from the global features enabled array to the global capabilities
29556 * bitmap struct
29557 */
29558static void
29559FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29560{
29561 wpt_int8 i;
29562 for (i=0; i<len; i++)
29563 {
29564 setFeatCaps(fCaps, enabledFeat[i]);
29565 }
29566}
29567
29568/**
29569 @brief WDI_featureCapsExchangeReq
29570 Post feature capability bitmap exchange event.
29571 Host will send its own capability to FW in this req and
29572 expect FW to send its capability back as a bitmap in Response
29573
29574 @param
29575
29576 wdiFeatureCapsExchangeCb: callback called on getting the response.
29577 It is kept to mantain similarity between WDI reqs and if needed, can
29578 be used in future. Currently, It is set to NULL
29579
29580 pUserData: user data will be passed back with the
29581 callback
29582
29583 @see
29584 @return Result of the function call
29585*/
29586WDI_Status
29587WDI_featureCapsExchangeReq
29588(
29589 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29590 void* pUserData
29591)
29592{
29593 WDI_EventInfoType wdiEventData;
29594 wpt_int32 fCapsStructSize;
29595
29596 /*------------------------------------------------------------------------
29597 Sanity Check
29598 ------------------------------------------------------------------------*/
29599 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29600 {
29601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29602 "WDI API call before module is initialized - Fail request");
29603
29604 return WDI_STATUS_E_NOT_ALLOWED;
29605 }
29606
29607 /* Allocate memory separately for global variable carrying FW caps */
29608 fCapsStructSize = sizeof(tWlanFeatCaps);
29609 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29610 if ( NULL == gpHostWlanFeatCaps )
29611 {
29612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029613 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029614 WDI_ASSERT(0);
29615 return WDI_STATUS_MEM_FAILURE;
29616 }
29617
29618 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29619
29620 /*------------------------------------------------------------------------
29621 Fill in Event data and post to the Main FSM
29622 ------------------------------------------------------------------------*/
29623 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29624 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029626 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029627 gpHostWlanFeatCaps->featCaps[0],
29628 gpHostWlanFeatCaps->featCaps[1],
29629 gpHostWlanFeatCaps->featCaps[2],
29630 gpHostWlanFeatCaps->featCaps[3]
29631 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029633 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029634 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29635 wdiEventData.pEventData = gpHostWlanFeatCaps;
29636 wdiEventData.uEventDataSize = fCapsStructSize;
29637 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29638 wdiEventData.pUserData = pUserData;
29639
29640 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29641}
29642
29643/**
Yathish9f22e662012-12-10 14:21:35 -080029644 @brief Disable Active mode offload in Host
29645
29646 @param void
29647 @see
29648 @return void
29649*/
29650void
29651WDI_disableCapablityFeature(wpt_uint8 feature_index)
29652{
29653 supportEnabledFeatures[feature_index] = 0;
29654 return;
29655}
29656
29657/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029658 @brief Process Host-FW Capability Exchange Request function
29659
29660 @param pWDICtx: pointer to the WLAN DAL context
29661 pEventData: pointer to the event information structure
29662
29663 @see
29664 @return Result of the function call
29665*/
29666WDI_Status
29667WDI_ProcessFeatureCapsExchangeReq
29668(
29669 WDI_ControlBlockType* pWDICtx,
29670 WDI_EventInfoType* pEventData
29671)
29672{
29673 wpt_uint8* pSendBuffer = NULL;
29674 wpt_uint16 usDataOffset = 0;
29675 wpt_uint16 usSendSize = 0;
29676 wpt_uint16 usLen = 0;
29677
29678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29679
29680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029681 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029682
29683 /*-------------------------------------------------------------------------
29684 Sanity check
29685 -------------------------------------------------------------------------*/
29686 /* Call back function is NULL since not required for cap exchange req */
29687 if (( NULL == pEventData ) ||
29688 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29689 {
29690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029692 WDI_ASSERT(0);
29693 return WDI_STATUS_E_FAILURE;
29694 }
29695
29696 /*-----------------------------------------------------------------------
29697 Get message buffer
29698 -----------------------------------------------------------------------*/
29699 usLen = sizeof(tWlanFeatCaps);
29700
29701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29702 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29703 usLen,
29704 &pSendBuffer, &usDataOffset, &usSendSize))||
29705 ( usSendSize < (usDataOffset + usLen )))
29706 {
29707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029708 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029709 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29710 WDI_ASSERT(0);
29711 return WDI_STATUS_E_FAILURE;
29712 }
29713
29714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029715 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029716 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29717 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29718 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29719 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29720 );
29721
29722 /* Copy host caps after the offset in the send buffer */
29723 wpalMemoryCopy( pSendBuffer+usDataOffset,
29724 (tWlanFeatCaps *)pEventData->pEventData,
29725 usLen);
29726
29727 /*-------------------------------------------------------------------------
29728 Send Start Request to HAL
29729 -------------------------------------------------------------------------*/
29730 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29731 (WDI_StartRspCb)pEventData->pCBfnc,
29732 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29733
29734}/*WDI_ProcessFeatureCapsExchangeReq*/
29735
29736/**
29737 @brief Process Host-FW Capability Exchange Response function
29738
29739 @param pWDICtx: pointer to the WLAN DAL context
29740 pEventData: pointer to the event information structure
29741
29742 @see
29743 @return Result of the function call
29744*/
29745WDI_Status
29746WDI_ProcessFeatureCapsExchangeRsp
29747(
29748 WDI_ControlBlockType* pWDICtx,
29749 WDI_EventInfoType* pEventData
29750)
29751{
29752 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29753 wpt_int32 fCapsStructSize;
29754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29755
29756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029757 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029758
29759 /*-------------------------------------------------------------------------
29760 Sanity check
29761 -------------------------------------------------------------------------*/
29762 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29763 ( NULL == pEventData->pEventData ))
29764 {
29765 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029768 WDI_ASSERT(0);
29769 return WDI_STATUS_E_FAILURE;
29770 }
29771
29772 /* Allocate memory separately for global variable carrying FW caps */
29773 fCapsStructSize = sizeof(tWlanFeatCaps);
29774 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29775 if ( NULL == gpFwWlanFeatCaps )
29776 {
29777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029778 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029779 WDI_ASSERT(0);
29780 return WDI_STATUS_MEM_FAILURE;
29781 }
29782
29783 /*-------------------------------------------------------------------------
29784 Unpack HAL Response Message - the header was already extracted by the
29785 main Response Handling procedure
29786 -------------------------------------------------------------------------*/
29787 /*-------------------------------------------------------------------------
29788 Extract response and send it to UMAC
29789 -------------------------------------------------------------------------*/
29790
29791 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29792 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029794 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029795 gpFwWlanFeatCaps->featCaps[0],
29796 gpFwWlanFeatCaps->featCaps[1],
29797 gpFwWlanFeatCaps->featCaps[2],
29798 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029799 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029801 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029802 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29803
29804 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29805 if (wdiFeatureCapsExchangeCb != NULL)
29806 wdiFeatureCapsExchangeCb(NULL, NULL);
29807
29808 return WDI_STATUS_SUCCESS;
29809}
29810
Mohit Khanna4a70d262012-09-11 16:30:12 -070029811#ifdef WLAN_FEATURE_11AC
29812WDI_Status
29813WDI_ProcessUpdateVHTOpModeRsp
29814(
29815 WDI_ControlBlockType* pWDICtx,
29816 WDI_EventInfoType* pEventData
29817)
29818{
29819 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29820 WDI_Status wdiStatus;
29821 eHalStatus halStatus;
29822
29823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29824
29825 /*-------------------------------------------------------------------------
29826 Sanity check
29827 -------------------------------------------------------------------------*/
29828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29829 ( NULL == pEventData->pEventData))
29830 {
29831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029832 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029833 WDI_ASSERT(0);
29834 return WDI_STATUS_E_FAILURE;
29835 }
29836 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29837
29838 /*-------------------------------------------------------------------------
29839 Extract response and send it to UMAC
29840 -------------------------------------------------------------------------*/
29841 halStatus = *((eHalStatus*)pEventData->pEventData);
29842 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29843
29844 /*Notify UMAC*/
29845 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29846
29847 return WDI_STATUS_SUCCESS;
29848}
29849#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029850/**
29851 @brief WDI_getHostWlanFeatCaps
29852 WDI API that returns whether the feature passed to it as enum value in
29853 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29854 variable storing host capability bitmap to find this. This can be used by
29855 other moduels to decide certain things like call different APIs based on
29856 whether a particular feature is supported.
29857
29858 @param
29859
29860 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29861
29862 @see
29863 @return
29864 0 - if the feature is NOT supported in host
29865 any non-zero value - if the feature is SUPPORTED in host.
29866*/
29867wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29868{
29869 wpt_uint8 featSupported = 0;
29870 if (gpHostWlanFeatCaps != NULL)
29871 {
29872 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29873 }
29874 else
29875 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029877 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029878 }
29879 return featSupported;
29880}
29881
29882/**
29883 @brief WDI_getFwWlanFeatCaps
29884 WDI API that returns whether the feature passed to it as enum value in
29885 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29886 variable storing host capability bitmap to find this. This can be used by
29887 other moduels to decide certain things like call different APIs based on
29888 whether a particular feature is supported.
29889
29890 @param
29891
29892 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29893 in wlan_hal_msg.h.
29894
29895 @see
29896 @return
29897 0 - if the feature is NOT supported in FW
29898 any non-zero value - if the feature is SUPPORTED in FW.
29899*/
29900wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29901{
29902 wpt_uint8 featSupported = 0;
29903 if (gpFwWlanFeatCaps != NULL)
29904 {
29905 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29906 }
29907 else
29908 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029910 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029911 }
29912 return featSupported;
29913}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029914
Katya Nigamf0511f62015-05-05 16:40:57 +053029915wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29916{
29917 /* 5gHz Channel */
29918 if( channel >= 34 && channel <= 165 )
29919 {
29920 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29921 {
29922 if ( channel== 36 || channel == 52 || channel == 100 ||
29923 channel == 116 || channel == 149 )
29924 {
29925 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29926 }
29927 else if ( channel == 40 || channel == 56 || channel == 104 ||
29928 channel == 120 || channel == 153 )
29929 {
29930 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29931 }
29932 else if ( channel == 44 || channel == 60 || channel == 108 ||
29933 channel == 124 || channel == 157 )
29934 {
29935 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29936 }
29937 else if ( channel == 48 || channel == 64 || channel == 112 ||
29938 channel == 128 || channel == 144 || channel == 161 )
29939 {
29940 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29941 }
29942 else if ( channel == 165 )
29943 {
29944 return PHY_SINGLE_CHANNEL_CENTERED;
29945 }
29946 }
29947
29948 else
29949 {
29950 if ( channel== 40 || channel == 48 || channel == 56 ||
29951 channel == 64 || channel == 104 || channel == 112 ||
29952 channel == 120 || channel == 128 || channel == 136 ||
29953 channel == 144 || channel == 153 || channel == 161 )
29954 {
29955 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29956 }
29957 else if ( channel== 36 || channel == 44 || channel == 52 ||
29958 channel == 60 || channel == 100 || channel == 108 ||
29959 channel == 116 || channel == 124 || channel == 132 ||
29960 channel == 140 || channel == 149 || channel == 157 )
29961 {
29962 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29963 }
29964 else if ( channel == 165 )
29965 {
29966 return PHY_SINGLE_CHANNEL_CENTERED;
29967 }
29968 }
29969 }
29970
29971 /* 2.4Ghz Channel */
29972 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
29973 {
29974 if (channel >= 1 && channel <= 7)
29975 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29976 else if (channel >= 8 && channel <= 13)
29977 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29978 else if (channel ==14)
29979 return PHY_SINGLE_CHANNEL_CENTERED;
29980 }
29981 return PHY_SINGLE_CHANNEL_CENTERED;
29982}
29983
Mohit Khanna4a70d262012-09-11 16:30:12 -070029984#ifdef WLAN_FEATURE_11AC
29985WDI_Status
29986WDI_ProcessUpdateVHTOpModeReq
29987(
29988 WDI_ControlBlockType* pWDICtx,
29989 WDI_EventInfoType* pEventData
29990)
29991{
29992 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29993 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29994 wpt_uint8* pSendBuffer = NULL;
29995 wpt_uint16 usDataOffset = 0;
29996 wpt_uint16 usSendSize = 0;
29997
29998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29999
30000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030001 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030002
30003 /*-------------------------------------------------------------------------
30004 Sanity check
30005 -------------------------------------------------------------------------*/
30006 if (( NULL == pEventData ) ||
30007 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
30008 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
30009 {
30010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030011 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030012 WDI_ASSERT(0);
30013 return WDI_STATUS_E_FAILURE;
30014 }
30015
30016 /*-----------------------------------------------------------------------
30017 Get message buffer
30018 -----------------------------------------------------------------------*/
30019 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
30020 sizeof(WDI_UpdateVHTOpMode),
30021 &pSendBuffer, &usDataOffset, &usSendSize))||
30022 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
30023 {
30024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30025 "Unable to get send buffer in update vht opMode req");
30026 WDI_ASSERT(0);
30027 return WDI_STATUS_E_FAILURE;
30028 }
30029
30030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030031 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030032
30033 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
30034 sizeof(WDI_UpdateVHTOpMode));
30035
30036 /*-------------------------------------------------------------------------
30037 Send Start Request to HAL
30038 -------------------------------------------------------------------------*/
30039 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30040 wdiVHTOpModeCb,
30041 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
30042
30043}
30044
30045WDI_Status
30046WDI_UpdateVHTOpModeReq
30047(
30048 WDI_UpdateVHTOpMode *pData,
30049 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
30050 void* pUserData
30051)
30052{
30053 WDI_EventInfoType wdiEventData;
30054
30055 /*------------------------------------------------------------------------
30056 Sanity Check
30057 ------------------------------------------------------------------------*/
30058 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30059 {
30060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30061 "WDI API call before module is initialized - Fail request");
30062
30063 return WDI_STATUS_E_NOT_ALLOWED;
30064 }
30065
30066 /*------------------------------------------------------------------------
30067 Fill in Event data and post to the Main FSM
30068 ------------------------------------------------------------------------*/
30069 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
30070 wdiEventData.pEventData = pData;
30071 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
30072 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
30073 wdiEventData.pUserData = pUserData;
30074
30075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030076 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030077
30078 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30079
30080}
30081#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030082
30083/**
30084 @brief WDI_TransportChannelDebug -
30085 Display DXE Channel debugging information
30086 User may request to display DXE channel snapshot
30087 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030088
Jeff Johnsonb88db982012-12-10 13:34:59 -080030089 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053030090 @param debugFlags : Enable stall detect features
30091 defined by WPAL_DeviceDebugFlags
30092 These features may effect
30093 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030094 @see
30095 @return none
30096*/
30097void WDI_TransportChannelDebug
30098(
30099 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053030100 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030101)
30102{
Mihir Shete40a55652014-03-02 14:14:47 +053030103 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030104 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070030105}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030106/**
30107 @brief WDI_SsrTimerCB
30108 Callback function for SSR timer, if this is called then the graceful
30109 shutdown for Riva did not happen.
30110
30111 @param pUserData : user data to timer
30112
30113 @see
30114 @return none
30115*/
30116void
30117WDI_SsrTimerCB
30118(
30119 void *pUserData
30120)
30121{
30122 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
30123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30124
30125 if (NULL == pWDICtx )
30126 {
30127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030128 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030129 WDI_ASSERT(0);
30130 return;
30131 }
30132 wpalRivaSubystemRestart();
30133
30134 return;
30135
30136}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070030137
30138/**
30139 @brief WDI_SetEnableSSR -
30140 This API is called to enable/disable SSR on WDI timeout.
30141
30142 @param enableSSR : enable/disable SSR
30143
30144 @see
30145 @return none
30146*/
30147void WDI_SetEnableSSR(wpt_boolean enableSSR)
30148{
30149 gWDICb.bEnableSSR = enableSSR;
30150}
Leo Chang9056f462013-08-01 19:21:11 -070030151
30152
30153#ifdef FEATURE_WLAN_LPHB
30154/**
Leo Changd9df8aa2013-09-26 13:32:26 -070030155 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070030156 This function will be invoked when FW detects low power
30157 heart beat failure
30158
30159 @param pWDICtx : wdi context
30160 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070030161 @see
30162 @return Result of the function call
30163*/
30164WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070030165WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070030166(
30167 WDI_ControlBlockType* pWDICtx,
30168 WDI_EventInfoType* pEventData
30169)
30170{
30171 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070030172 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070030173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30174
30175 /*-------------------------------------------------------------------------
30176 Sanity check
30177 -------------------------------------------------------------------------*/
30178 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30179 (NULL == pEventData->pEventData))
30180 {
30181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30182 "%s: Invalid parameters", __func__);
30183 WDI_ASSERT(0);
30184 return WDI_STATUS_E_FAILURE;
30185 }
30186
30187 /*-------------------------------------------------------------------------
30188 Extract indication and send it to UMAC
30189 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070030190 wpalMemoryCopy(&lphbIndicationParam,
30191 pEventData->pEventData,
30192 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070030193
Leo Changd9df8aa2013-09-26 13:32:26 -070030194 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070030195 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030196 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030197 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030198 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030199 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070030200 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070030201 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070030202 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070030203 /*Notify UMAC*/
30204 if (pWDICtx->wdiLowLevelIndCB)
30205 {
30206 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30207 }
30208
30209 return WDI_STATUS_SUCCESS;
30210}
30211
30212/**
30213 @brief WDI_ProcessLphbCfgRsp -
30214 LPHB configuration response from FW
30215
30216 @param pWDICtx : wdi context
30217 pEventData : indication data
30218
30219 @see
30220 @return Result of the function call
30221*/
30222WDI_Status WDI_ProcessLphbCfgRsp
30223(
30224 WDI_ControlBlockType* pWDICtx,
30225 WDI_EventInfoType* pEventData
30226)
30227{
30228 WDI_Status wdiStatus;
30229 eHalStatus halStatus;
30230 WDI_LphbCfgCb wdiLphbCfgCb;
30231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30232
30233 /*-------------------------------------------------------------------------
30234 Sanity check
30235 -------------------------------------------------------------------------*/
30236 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30237 (NULL == pEventData->pEventData))
30238 {
30239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30240 "%s: Invalid parameters", __func__);
30241 WDI_ASSERT(0);
30242 return WDI_STATUS_E_FAILURE;
30243 }
30244
30245 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
30246
30247 /*-------------------------------------------------------------------------
30248 Extract response and send it to UMAC
30249 -------------------------------------------------------------------------*/
30250 halStatus = *((eHalStatus*)pEventData->pEventData);
30251 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30252
30253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30254 "LPHB Cfg Rsp Return status %d", wdiStatus);
30255 /*Notify UMAC*/
30256 if (NULL != wdiLphbCfgCb)
30257 {
30258 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30259 }
30260
30261 return WDI_STATUS_SUCCESS;
30262}
30263
30264/**
30265 @brief WDI_ProcessLPHBConfReq -
30266 LPHB configuration request to FW
30267
30268 @param pWDICtx : wdi context
30269 pEventData : indication data
30270
30271 @see
30272 @return none
30273*/
30274WDI_Status WDI_ProcessLPHBConfReq
30275(
30276 WDI_ControlBlockType* pWDICtx,
30277 WDI_EventInfoType* pEventData
30278)
30279{
30280 WDI_LPHBReq *pLphbReqParams;
30281 WDI_Status wdiStatus;
30282 wpt_uint8* pSendBuffer = NULL;
30283 wpt_uint16 usDataOffset = 0;
30284 wpt_uint16 usSendSize = 0;
30285 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30287
30288 /*-------------------------------------------------------------------------
30289 Sanity check
30290 -------------------------------------------------------------------------*/
30291 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30292 {
30293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30294 "%s: Invalid parameters in Suspend ind",__func__);
30295 WDI_ASSERT(0);
30296 return WDI_STATUS_E_FAILURE;
30297 }
30298
30299 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30300
30301 /*-----------------------------------------------------------------------
30302 Get message buffer
30303 -----------------------------------------------------------------------*/
30304 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30305 WDI_LPHB_CFG_REQ,
30306 sizeof(tHalLowPowerHeartBeatReqMsg),
30307 &pSendBuffer, &usDataOffset, &usSendSize))||
30308 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30309 {
30310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30311 "Unable to get send buffer in LPHB Ind ");
30312 WDI_ASSERT(0);
30313 return WDI_STATUS_E_FAILURE;
30314 }
30315
30316 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30317 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30318
30319 halLphbReqRarams->lowPowerHeartBeatCmdType =
30320 (tANI_U16)(++pLphbReqParams->cmd);
30321 switch ((tANI_U16)pLphbReqParams->cmd)
30322 {
30323 case WDI_LPHB_SET_EN_PARAMS_INDID:
30324 halLphbReqRarams->sessionIdx =
30325 pLphbReqParams->params.lphbEnableReq.session;
30326 halLphbReqRarams->options.control.heartBeatEnable =
30327 pLphbReqParams->params.lphbEnableReq.enable;
30328 halLphbReqRarams->options.control.heartBeatType =
30329 pLphbReqParams->params.lphbEnableReq.item;
30330 break;
30331
30332 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30333 halLphbReqRarams->sessionIdx =
30334 pLphbReqParams->params.lphbTcpParamReq.session;
30335 halLphbReqRarams->options.tcpParams.timeOutSec =
30336 pLphbReqParams->params.lphbTcpParamReq.timeout;
30337 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30338 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30339 sizeof(v_U32_t));
30340 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30341 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30342 sizeof(v_U32_t));
30343
30344 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30345 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30346 WDI_MAC_ADDR_LEN);
30347
30348 halLphbReqRarams->options.tcpParams.hostPort =
30349 pLphbReqParams->params.lphbTcpParamReq.src_port;
30350 halLphbReqRarams->options.tcpParams.destPort =
30351 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030352 halLphbReqRarams->options.tcpParams.timePeriodSec =
30353 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30354 halLphbReqRarams->options.tcpParams.tcpSn =
30355 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030356 break;
30357
30358 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30359 halLphbReqRarams->sessionIdx =
30360 pLphbReqParams->params.lphbTcpFilterReq.session;
30361 halLphbReqRarams->options.tcpUdpFilter.offset =
30362 pLphbReqParams->params.lphbTcpFilterReq.offset;
30363 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30364 pLphbReqParams->params.lphbTcpFilterReq.length;
30365 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30366 pLphbReqParams->params.lphbTcpFilterReq.filter,
30367 WDI_LPHB_FILTER_LEN);
30368 break;
30369
30370 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30371 halLphbReqRarams->sessionIdx =
30372 pLphbReqParams->params.lphbUdpParamReq.session;
30373 halLphbReqRarams->options.udpParams.timeOutSec =
30374 pLphbReqParams->params.lphbUdpParamReq.timeout;
30375 halLphbReqRarams->options.udpParams.timePeriodSec =
30376 pLphbReqParams->params.lphbUdpParamReq.interval;
30377 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30378 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30379 sizeof(v_U32_t));
30380 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30381 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30382 sizeof(v_U32_t));
30383
30384 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30385 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30386 WDI_MAC_ADDR_LEN);
30387
30388 halLphbReqRarams->options.udpParams.hostPort =
30389 pLphbReqParams->params.lphbUdpParamReq.src_port;
30390 halLphbReqRarams->options.udpParams.destPort =
30391 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30392 break;
30393
30394 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30395 halLphbReqRarams->sessionIdx =
30396 pLphbReqParams->params.lphbUdpFilterReq.session;
30397 halLphbReqRarams->options.tcpUdpFilter.offset =
30398 pLphbReqParams->params.lphbUdpFilterReq.offset;
30399 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30400 pLphbReqParams->params.lphbUdpFilterReq.length;
30401 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30402 pLphbReqParams->params.lphbUdpFilterReq.filter,
30403 WDI_LPHB_FILTER_LEN);
30404 break;
30405
30406 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30407 /* NA */
30408 break;
30409
30410 default:
30411 break;
30412 }
30413
30414 /*-------------------------------------------------------------------------
30415 Send Suspend Request to HAL
30416 -------------------------------------------------------------------------*/
30417 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30418 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30419
30420 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30421 usSendSize, pWDICtx->pfncRspCB,
30422 pWDICtx->pReqStatusUserData,
30423 WDI_LPHB_CFG_RESP);
30424
30425 return wdiStatus;
30426}
30427
30428/**
30429 @brief WDI_LPHBConfReq -
30430 LPHB configuration request API
30431
30432 @param lphbconfParam : configuration parameter
30433 usrData : client context
30434 lphbCfgCb : callback function pointer
30435
30436 @see
30437 @return Success or fail status code
30438*/
30439WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30440 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30441{
30442 WDI_EventInfoType wdiEventData;
30443
30444 /*------------------------------------------------------------------------
30445 Sanity Check
30446 ------------------------------------------------------------------------*/
30447 if (eWLAN_PAL_FALSE == gWDIInitialized)
30448 {
30449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30450 "WDI API call before module is initialized - Fail request");
30451
30452 return WDI_STATUS_E_NOT_ALLOWED;
30453 }
30454
30455 /*------------------------------------------------------------------------
30456 Fill in Event data and post to the Main FSM
30457 ------------------------------------------------------------------------*/
30458 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30459 wdiEventData.pEventData = lphbconfParam;
30460 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30461 wdiEventData.pCBfnc = lphbCfgCb;
30462 wdiEventData.pUserData = usrData;
30463
30464 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30465}
30466#endif /* FEATURE_WLAN_LPHB */
30467
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030468/**
30469 @brief WDI_ProcessIbssPeerInactivityInd
30470 Process peer inactivity indication coming from HAL
30471
30472 @param pWDICtx: pointer to the WLAN DAL context
30473 pEventData: pointer to the event information structure
30474 @see
30475 @return Result of the function call
30476*/
30477WDI_Status
30478WDI_ProcessIbssPeerInactivityInd
30479(
30480 WDI_ControlBlockType* pWDICtx,
30481 WDI_EventInfoType* pEventData
30482)
30483{
30484 WDI_LowLevelIndType wdiInd;
30485 tIbssPeerInactivityIndMsg halIbssIndMsg;
30486
30487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30488
30489 /*-------------------------------------------------------------------------
30490 Sanity check
30491 -------------------------------------------------------------------------*/
30492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30493 ( NULL == pEventData->pEventData ))
30494 {
30495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30496 "%s: Invalid parameters", __func__);
30497 WDI_ASSERT( 0 );
30498 return WDI_STATUS_E_FAILURE;
30499 }
30500
30501 /*-------------------------------------------------------------------------
30502 Extract indication and send it to UMAC
30503 -------------------------------------------------------------------------*/
30504 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30505 pEventData->pEventData,
30506 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30507
30508 /*Fill in the indication parameters*/
30509 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30510
30511 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30512 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30513
30514 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30515 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30516
30517 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30518 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30519 sizeof(tSirMacAddr));
30520
30521 /*Notify UMAC*/
30522 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30523
30524 return WDI_STATUS_SUCCESS;
30525
30526} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030527
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030528/**
30529*@brief WDI_RateUpdateInd will be called when the upper MAC
30530 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030531
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030532
30533 @param wdiRateUpdateIndParams:
30534
30535
30536 @see
30537 @return Result of the function call
30538*/
30539WDI_Status
30540WDI_RateUpdateInd
30541(
30542 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30543)
30544{
30545 WDI_EventInfoType wdiEventData;
30546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30547
30548 /*------------------------------------------------------------------------
30549 Sanity Check
30550 ------------------------------------------------------------------------*/
30551 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30552 {
30553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30554 "WDI API call before module is initialized - Fail request");
30555
30556 return WDI_STATUS_E_NOT_ALLOWED;
30557 }
30558
30559 /*------------------------------------------------------------------------
30560 Fill in Event data and post to the Main FSM
30561 ------------------------------------------------------------------------*/
30562 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30563 wdiEventData.pEventData = wdiRateUpdateIndParams;
30564 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30565 wdiEventData.pCBfnc = NULL;
30566 wdiEventData.pUserData = NULL;
30567
30568 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30569
30570}/* WDI_RateUpdateInd */
30571
30572/**
30573 @brief Process Rate Update Indication and post it to HAL
30574
30575 @param pWDICtx: pointer to the WLAN DAL context
30576 pEventData: pointer to the event information structure
30577
30578 @see
30579 @return Result of the function call
30580*/
30581WDI_Status
30582WDI_ProcessRateUpdateInd
30583(
30584 WDI_ControlBlockType* pWDICtx,
30585 WDI_EventInfoType* pEventData
30586)
30587{
30588 wpt_uint8* pSendBuffer = NULL;
30589 wpt_uint16 usDataOffset = 0;
30590 wpt_uint16 usSendSize = 0;
30591 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30592 tHalRateUpdateInd *pRateUpdateInd;
30593 WDI_Status wdiStatus;
30594
30595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30596
30597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30598 "%s", __func__);
30599
30600 /*-------------------------------------------------------------------------
30601 Sanity check
30602 -------------------------------------------------------------------------*/
30603 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30604 {
30605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30606 "%s: Invalid parameters", __func__);
30607 WDI_ASSERT(0);
30608 return WDI_STATUS_E_FAILURE;
30609 }
30610 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30611 /*-----------------------------------------------------------------------
30612 Get message buffer
30613 -----------------------------------------------------------------------*/
30614
30615 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30616 WDI_RATE_UPDATE_IND,
30617 sizeof(tHalRateUpdateParams),
30618 &pSendBuffer, &usDataOffset, &usSendSize))||
30619 ( usSendSize < (usDataOffset +
30620 sizeof(tHalRateUpdateParams) )))
30621 {
30622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30623 "Unable to get send buffer in Rate Update Indication %p ",
30624 pEventData);
30625 WDI_ASSERT(0);
30626 return WDI_STATUS_E_FAILURE;
30627 }
30628
30629 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30630
30631 /* Copy the bssid */
30632 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30633 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30634
30635 /* Copy the tx flags */
30636 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30637 pwdiRateUpdateInd->ucastDataRateTxFlag;
30638 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30639 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30640 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30641 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30642 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30643 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30644
30645 /* Copy the tx rates */
30646 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30647 pwdiRateUpdateInd->ucastDataRate;
30648 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30649 pwdiRateUpdateInd->reliableMcastDataRate;
30650 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30651 pwdiRateUpdateInd->mcastDataRate24GHz;
30652 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30653 pwdiRateUpdateInd->mcastDataRate5GHz;
30654
30655 /*-------------------------------------------------------------------------
30656 Send Rate Update Indication to HAL
30657 -------------------------------------------------------------------------*/
30658 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30659 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30660
30661 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30662
30663 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30664 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30665
30666} /* WDI_ProcessRateUpdateInd */
30667
30668#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030669/**
30670 @brief Process stop batch indication from WDA
30671
30672 @param pWDICtx: pointer to the WLAN DAL context
30673 pEventData: pointer to the event information structure
30674
30675 @see
30676 @return Result of the function call
30677*/
30678WDI_Status
30679WDI_ProcessStopBatchScanInd
30680(
30681 WDI_ControlBlockType* pWDICtx,
30682 WDI_EventInfoType* pEventData
30683)
30684{
30685 wpt_uint8* pSendBuffer = NULL;
30686 wpt_uint16 usDataOffset = 0;
30687 wpt_uint16 usSendSize = 0;
30688 WDI_Status wdiStatus;
30689 tHalBatchScanStopIndParam *pHalInd = NULL;
30690 WDI_StopBatchScanIndType *pWdiInd = NULL;
30691
30692
30693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30694
30695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30696 "%s", __func__);
30697
30698 /*-------------------------------------------------------------------------
30699 Sanity check
30700 -------------------------------------------------------------------------*/
30701
30702 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30703 {
30704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30705 "%s: Invalid parameters", __func__);
30706 WDI_ASSERT(0);
30707 return WDI_STATUS_E_FAILURE;
30708 }
30709 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30710 /*-----------------------------------------------------------------------
30711 Get message buffer
30712 -----------------------------------------------------------------------*/
30713
30714 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30715 WDI_STOP_BATCH_SCAN_IND,
30716 sizeof(tHalBatchScanStopIndParam),
30717 &pSendBuffer, &usDataOffset, &usSendSize))||
30718 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30719 {
30720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30721 "Unable to get send buffer in stop batch scan ind %p ",
30722 pEventData);
30723 WDI_ASSERT(0);
30724 return WDI_STATUS_E_FAILURE;
30725 }
30726
30727 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30728 pHalInd->param = pWdiInd->param;
30729
30730 pWDICtx->pReqStatusUserData = NULL;
30731 pWDICtx->pfncRspCB = NULL;
30732 /*-------------------------------------------------------------------------
30733 Send Stop batch scan indication to HAL
30734 -------------------------------------------------------------------------*/
30735 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30736 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30737}
30738
30739/**
30740 @brief This API is called to trigger batch scan results from FW
30741
30742 @param pWDICtx: pointer to the WLAN DAL context
30743 pEventData: pointer to the event information structure
30744
30745 @see
30746 @return Result of the function call
30747*/
30748WDI_Status
30749WDI_ProcessTriggerBatchScanResultInd
30750(
30751 WDI_ControlBlockType* pWDICtx,
30752 WDI_EventInfoType* pEventData
30753)
30754{
30755 WDI_Status wdiStatus;
30756 wpt_uint8* pSendBuffer = NULL;
30757 wpt_uint16 usDataOffset = 0;
30758 wpt_uint16 usSendSize = 0;
30759 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30760 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30761
30762
30763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30764
30765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30766 "%s", __func__);
30767
30768 /*-------------------------------------------------------------------------
30769 Sanity check
30770 -------------------------------------------------------------------------*/
30771
30772 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30773 {
30774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30775 "%s: Invalid parameters", __func__);
30776 WDI_ASSERT(0);
30777 return WDI_STATUS_E_FAILURE;
30778 }
30779 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30780 /*-----------------------------------------------------------------------
30781 Get message buffer
30782 -----------------------------------------------------------------------*/
30783
30784 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30785 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30786 sizeof(tHalBatchScanTriggerResultParam),
30787 &pSendBuffer, &usDataOffset, &usSendSize))||
30788 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30789 {
30790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30791 "Unable to get send buffer in stop batch scan ind %p ",
30792 pEventData);
30793 WDI_ASSERT(0);
30794 return WDI_STATUS_E_FAILURE;
30795 }
30796
30797 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30798 pHalInd->param = pWdiInd->param;
30799
30800 pWDICtx->pReqStatusUserData = NULL;
30801 pWDICtx->pfncRspCB = NULL;
30802 /*-------------------------------------------------------------------------
30803 Send trigger batch scan result indication to HAL
30804 -------------------------------------------------------------------------*/
30805 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30806 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30807}
30808
30809
30810/**
30811 @brief Process set batch scan response from FW
30812
30813 @param pWDICtx: pointer to the WLAN DAL context
30814 pEventData: pointer to the event information structure
30815
30816 @see
30817 @return Result of the function call
30818*/
30819WDI_Status
30820WDI_ProcessSetBatchScanRsp
30821(
30822 WDI_ControlBlockType* pWDICtx,
30823 WDI_EventInfoType* pEventData
30824)
30825{
30826 WDI_SetBatchScanCb wdiSetBatchScanCb;
30827 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30828
30829 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30831
30832 /*sanity check*/
30833 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30834 ( NULL == pEventData->pEventData))
30835 {
30836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30837 "%s: Invalid parameters", __func__);
30838 WDI_ASSERT(0);
30839 return WDI_STATUS_E_FAILURE;
30840 }
30841
30842 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30843 if ( NULL == wdiSetBatchScanCb)
30844 {
30845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30846 "%s: call back function is NULL", __func__);
30847 WDI_ASSERT(0);
30848 return WDI_STATUS_E_FAILURE;
30849 }
30850
30851 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30852
30853 if (NULL == pSetBatchScanRsp)
30854 {
30855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030856 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030857 pWDICtx, pEventData, pEventData->pEventData);
30858 WDI_ASSERT(0);
30859 return WDI_STATUS_E_FAILURE;
30860 }
30861
Sunil Duttbd736ed2014-05-26 21:19:41 +053030862 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030863 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30864
30865 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30866
Sunil Duttbd736ed2014-05-26 21:19:41 +053030867 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030868 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30869
30870 wpalMemoryFree(pSetBatchScanRsp);
30871
30872 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030873}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030874
30875/**
30876 @brief Process batch scan result indication from FW
30877
30878 @param pWDICtx: pointer to the WLAN DAL context
30879 pEventData: pointer to the event information structure
30880
30881 @see
30882 @return Result of the function call
30883*/
30884WDI_Status
30885WDI_ProcessBatchScanResultInd
30886(
30887 WDI_ControlBlockType* pWDICtx,
30888 WDI_EventInfoType* pEventData
30889)
30890{
30891 void *pBatchScanResultInd;
30892 WDI_LowLevelIndType wdiInd;
30893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30894
Sunil Duttbd736ed2014-05-26 21:19:41 +053030895 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030896 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30897 ( NULL == pEventData->pEventData))
30898 {
30899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30900 "%s: Invalid parameters", __func__);
30901 WDI_ASSERT(0);
30902 return WDI_STATUS_E_FAILURE;
30903 }
30904
Sunil Duttbd736ed2014-05-26 21:19:41 +053030905 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030906 pBatchScanResultInd = (void *)pEventData->pEventData;
30907
Sunil Duttbd736ed2014-05-26 21:19:41 +053030908 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030909 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30910
30911 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30912
Sunil Duttbd736ed2014-05-26 21:19:41 +053030913 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030914 if (pWDICtx->wdiLowLevelIndCB)
30915 {
30916 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30917 }
30918 else
30919 {
30920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30921 "%s: WDILowLevelIndCb is null", __func__);
30922 WDI_ASSERT(0);
30923 return WDI_STATUS_E_FAILURE;
30924 }
30925
30926 return WDI_STATUS_SUCCESS;
30927} /*End of WDI_ProcessBatchScanResultInd*/
30928
Sunil Duttbd736ed2014-05-26 21:19:41 +053030929#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30930/**
30931 @brief Process Link Layer Statistics Result indication from FW
30932
30933 @param pWDICtx: pointer to the WLAN DAL context
30934 pEventData: pointer to the event information structure
30935
30936 @see
30937 @return Result of the function call
30938*/
30939WDI_Status
30940WDI_ProcessLinkLayerStatsResultsInd
30941(
30942 WDI_ControlBlockType* pWDICtx,
30943 WDI_EventInfoType* pEventData
30944)
30945{
30946 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030947 WDI_LLstatsResultsType *halLLStatsResults;
30948 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030949 WDI_LowLevelIndType wdiInd;
30950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30951
30952 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30953 "%s: Event RESULTS Indication", __func__);
30954
30955 /* sanity check */
30956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30957 ( NULL == pEventData->pEventData))
30958 {
30959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30960 "%s: Invalid parameters", __func__);
30961 WDI_ASSERT(0);
30962 return WDI_STATUS_E_FAILURE;
30963 }
30964
30965 /* extract response and send it to UMAC */
30966 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30967
30968 /* Fill in the indication parameters */
30969 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30970
Dino Mycled3d50022014-07-07 12:58:25 +053030971 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30972 = pLinkLayerStatsInd;
30973
30974 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30975
30976
30977 /* Need to fill in the MAC address */
30978 if ( WDI_STATUS_SUCCESS !=
30979 WDI_STATableGetStaMacAddr(pWDICtx,
30980 halLLStatsResults->iface_id,
30981 &macAddr))
30982 {
30983 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30984 " ifaceId: %u does not exist in the WDI Station Table",
30985 halLLStatsResults->iface_id);
30986
30987 return WDI_STATUS_E_FAILURE;
30988 }
30989 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30990 macAddr, WDI_MAC_ADDR_LEN);
30991
30992 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30993 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30994 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030995
30996 /* Notify UMAC */
30997 if (pWDICtx->wdiLowLevelIndCB)
30998 {
30999 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31000 }
31001 else
31002 {
31003 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31004 "%s: WDILowLevelIndCb is null", __func__);
31005 WDI_ASSERT(0);
31006 return WDI_STATUS_E_FAILURE;
31007 }
31008
31009 return WDI_STATUS_SUCCESS;
31010} /* End of WDI_ProcessLinkLayerStatsResultsInd */
31011#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
31012
Rajeev79dbe4c2013-10-05 11:03:42 +053031013/**
31014 @brief WDI_ProcessSetBatchScanReq -
31015 Set batch scan request to FW
31016
31017 @param pWDICtx : wdi context
31018 pEventData : indication data
31019
31020 @see
31021 @return none
31022*/
31023WDI_Status WDI_ProcessSetBatchScanReq
31024(
31025 WDI_ControlBlockType* pWDICtx,
31026 WDI_EventInfoType* pEventData
31027)
31028{
31029 WDI_SetBatchScanReqType *pWdiReq;
31030 WDI_Status wdiStatus;
31031 wpt_uint8* pSendBuffer = NULL;
31032 wpt_uint16 usDataOffset = 0;
31033 wpt_uint16 usSendSize = 0;
31034 tHalBatchScanSetParams *pHalReq;
31035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31036
31037 /*sanity check*/
31038 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
31039 {
31040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31041 "%s: Invalid parameters in set batch scan request", __func__);
31042 WDI_ASSERT(0);
31043 return WDI_STATUS_E_FAILURE;
31044 }
31045
31046
31047 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
31048
31049
31050 /*get message buffer*/
31051 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
31052 WDI_SET_BATCH_SCAN_REQ,
31053 sizeof(tHalBatchScanSetParams),
31054 &pSendBuffer, &usDataOffset, &usSendSize))||
31055 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
31056 {
31057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31058 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
31059 WDI_ASSERT(0);
31060 return WDI_STATUS_E_FAILURE;
31061 }
31062
31063 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
31064
31065 pHalReq->rtt = pWdiReq->rtt;
31066 pHalReq->rfBand = pWdiReq->rfBand;
31067 pHalReq->bestNetworks = pWdiReq->bestNetwork;
31068 pHalReq->scanInterval = pWdiReq->scanFrequency;
31069 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
31070
31071 /*send set batch scan request to fw*/
31072 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31073 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31074
31075 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31076 usSendSize, pWDICtx->pfncRspCB,
31077 pWDICtx->pReqStatusUserData,
31078 WDI_SET_BATCH_SCAN_RESP);
31079
31080 return wdiStatus;
31081}
31082
31083/**
31084 @brief WDI_SetBatchScanReq
31085 This API is called to set batch scan request in FW
31086
31087 @param pBatchScanReqParam : pointer to set batch scan re param
31088 usrData : Client context
31089 setBatchScanRspCb : set batch scan resp callback
31090 @see
31091 @return SUCCESS or FAIL
31092*/
31093WDI_Status WDI_SetBatchScanReq
31094(
31095 void *pBatchScanReqParam,
31096 void *usrData,
31097 WDI_SetBatchScanCb setBatchScanRspCb
31098)
31099{
31100 WDI_EventInfoType wdiEventData;
31101
31102 /*sanity check*/
31103 if (eWLAN_PAL_FALSE == gWDIInitialized)
31104 {
31105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31106 "WDI API call before module is initialized - Fail request");
31107
31108 return WDI_STATUS_E_NOT_ALLOWED;
31109 }
31110
31111 /* fill in event data and post to the main FSM */
31112 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
31113 wdiEventData.pEventData = pBatchScanReqParam;
31114 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
31115 wdiEventData.pCBfnc = setBatchScanRspCb;
31116 wdiEventData.pUserData = usrData;
31117
31118 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31119}
31120
31121/**
31122 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
31123
31124 @param None
31125
31126 @see
31127
31128 @return Status of the request
31129*/
31130WDI_Status
31131WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
31132{
31133 WDI_EventInfoType wdiEventData;
31134
31135 /*-------------------------------------------------------------------------
31136 Sanity Check
31137 ------------------------------------------------------------------------*/
31138 if (eWLAN_PAL_FALSE == gWDIInitialized)
31139 {
31140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31141 "WDI API call before module is initialized - Fail request!");
31142
31143 return WDI_STATUS_E_NOT_ALLOWED;
31144 }
31145
31146 /*-------------------------------------------------------------------------
31147 Fill in Event data and post to the Main FSM
31148 ------------------------------------------------------------------------*/
31149 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
31150 wdiEventData.pEventData = pWdiReq;
31151 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
31152 wdiEventData.pCBfnc = NULL;
31153 wdiEventData.pUserData = NULL;
31154
31155 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31156}
31157
31158/**
31159 @brief WDI_TriggerBatchScanResultInd
31160 This API is called to pull batch scan result from FW
31161
31162 @param pWdiReq : pointer to get batch scan ind param
31163 @see
31164 @return SUCCESS or FAIL
31165*/
31166WDI_Status WDI_TriggerBatchScanResultInd
31167(
31168 WDI_TriggerBatchScanResultIndType *pWdiReq
31169)
31170{
31171 WDI_EventInfoType wdiEventData;
31172 /*-------------------------------------------------------------------------
31173 Sanity Check
31174 ------------------------------------------------------------------------*/
31175 if (eWLAN_PAL_FALSE == gWDIInitialized)
31176 {
31177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31178 "WDI API call before module is initialized - Fail request!");
31179
31180 return WDI_STATUS_E_NOT_ALLOWED;
31181 }
31182
31183 /*-------------------------------------------------------------------------
31184 Fill in Event data and post to the Main FSM
31185 ------------------------------------------------------------------------*/
31186 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
31187 wdiEventData.pEventData = pWdiReq;
31188 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
31189 wdiEventData.pCBfnc = NULL;
31190 wdiEventData.pUserData = NULL;
31191
31192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31193}
Rajeev79dbe4c2013-10-05 11:03:42 +053031194#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080031195
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080031196/**
31197 @brief Process Update Channel Rsp function (called when a response is
31198 being received over the bus from HAL)
31199
31200 @param pWDICtx: pointer to the WLAN DAL context
31201 pEventData: pointer to the event information structure
31202
31203 @see
31204 @return Result of the function call
31205*/
31206WDI_Status
31207WDI_ProcessUpdateChanRsp
31208(
31209 WDI_ControlBlockType* pWDICtx,
31210 WDI_EventInfoType* pEventData
31211)
31212{
31213 WDI_Status wdiStatus;
31214 eHalStatus halStatus;
31215 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
31216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31217
31218 /*-------------------------------------------------------------------------
31219 Sanity check
31220 -------------------------------------------------------------------------*/
31221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31222 ( NULL == pEventData->pEventData))
31223 {
31224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31225 "%s: Invalid parameters", __func__);
31226 WDI_ASSERT(0);
31227 return WDI_STATUS_E_FAILURE;
31228 }
31229
31230 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
31231
31232 /*-------------------------------------------------------------------------
31233 Extract response and send it to UMAC
31234 -------------------------------------------------------------------------*/
31235 halStatus = *((eHalStatus*)pEventData->pEventData);
31236 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31237
31238 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
31239
31240 return WDI_STATUS_SUCCESS;
31241}/*WDI_ProcessUpdateChanRsp*/
31242
Leo Chang0b0e45a2013-12-15 15:18:55 -080031243#ifdef FEATURE_WLAN_CH_AVOID
31244/**
31245 @brief v -WDI_ProcessChAvoidInd
31246
31247
31248 @param pWDICtx : wdi context
31249 pEventData : indication data
31250 @see
31251 @return Result of the function call
31252*/
31253WDI_Status
31254WDI_ProcessChAvoidInd
31255(
31256 WDI_ControlBlockType* pWDICtx,
31257 WDI_EventInfoType* pEventData
31258)
31259{
31260 WDI_LowLevelIndType wdiInd;
31261 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31262 wpt_uint16 rangeLoop;
31263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31264
31265 /*-------------------------------------------------------------------------
31266 Sanity check
31267 -------------------------------------------------------------------------*/
31268 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31269 (NULL == pEventData->pEventData))
31270 {
31271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31272 "%s: Invalid parameters", __func__);
31273 WDI_ASSERT(0);
31274 return WDI_STATUS_E_FAILURE;
31275 }
31276
31277 /*-------------------------------------------------------------------------
31278 Extract indication and send it to UMAC
31279 -------------------------------------------------------------------------*/
31280 wpalMemoryCopy(&chAvoidIndicationParam,
31281 pEventData->pEventData,
31282 sizeof(tHalAvoidFreqRangeIndParams));
31283
Abhishek Singhe34eb552015-06-18 10:12:15 +053031284 /* Avoid Over flow */
31285 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31286 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31287
Leo Chang0b0e45a2013-12-15 15:18:55 -080031288 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31289 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31290 chAvoidIndicationParam.avoidCnt;
31291 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31292 (void *)chAvoidIndicationParam.avoidRange,
31293 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31294 sizeof(WDI_ChAvoidFreqType));
31295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31296 "%s: band count %d", __func__,
31297 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31298 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31299 {
31300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31301 "%s: srart freq %d, end freq %d", __func__,
31302 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31303 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31304 }
31305
31306 /*Notify UMAC*/
31307 if (pWDICtx->wdiLowLevelIndCB)
31308 {
31309 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31310 }
31311
31312 return WDI_STATUS_SUCCESS;
31313}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031314
Leo Chang0b0e45a2013-12-15 15:18:55 -080031315#endif /* FEATURE_WLAN_CH_AVOID */
31316
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031317/**
31318 @brief Process OBSS Start scan result indication
31319
31320 @param pWDICtx: pointer to the WLAN DAL context
31321 pEventData: pointer to the event information structure
31322
31323 @see
31324 @return Result of the function call
31325*/
31326WDI_Status
31327WDI_ProcessHT40OBSSScanInd
31328(
31329 WDI_ControlBlockType* pWDICtx,
31330 WDI_EventInfoType* pEventData
31331)
31332{
31333 wpt_uint8* pSendBuffer = NULL;
31334 wpt_uint16 usDataOffset = 0;
31335 wpt_uint16 usSendSize = 0;
31336 wpt_uint16 usLen = 0;
31337 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31338 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31339 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31340 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31341
31342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31343
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031345 "%s", __func__);
31346
31347 /*-------------------------------------------------------------------------
31348 Sanity check
31349 -------------------------------------------------------------------------*/
31350 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31351 {
31352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31353 "%s: Invalid parameters", __func__);
31354 WDI_ASSERT(0);
31355 return WDI_STATUS_E_FAILURE;
31356 }
31357 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31358
31359 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31360 /*-----------------------------------------------------------------------
31361 Get message buffer
31362 -----------------------------------------------------------------------*/
31363
31364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31365 WDI_START_HT40_OBSS_SCAN_IND,
31366 sizeof(tHT40ObssScanIndType),
31367 &pSendBuffer, &usDataOffset, &usSendSize))||
31368 ( usSendSize < (usDataOffset + usLen )))
31369 {
31370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31371 "Unable to get send buffer in HT40 OBSS Start req %p ",
31372 pEventData);
31373 WDI_ASSERT(0);
31374 return WDI_STATUS_E_FAILURE;
31375 }
31376 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31377 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31378 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31379 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31380 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31381 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31382 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31383 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31384 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31385 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31386 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31387 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31388 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31389 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31390 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31391 pHT40ObssScanInd->OBSSScanActivityThreshold =
31392 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31393 pHT40ObssScanInd->selfStaIdx =
31394 pwdiHT40OBSSScanInd->selfStaIdx;
31395 pHT40ObssScanInd->bssIdx =
31396 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031397 pHT40ObssScanInd->currentOperatingClass =
31398 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031399 pHT40ObssScanInd->fortyMHZIntolerent =
31400 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31401 pHT40ObssScanInd->channelCount =
31402 pwdiHT40OBSSScanInd->channelCount;
31403
31404 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31405 WDI_ROAM_SCAN_MAX_CHANNELS);
31406 pHT40ObssScanInd->ieFieldLen =
31407 pwdiHT40OBSSScanInd->ieFieldLen;
31408
31409 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31410 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31411 pWDICtx->pReqStatusUserData = NULL;
31412 pWDICtx->pfncRspCB = NULL;
31413
31414 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31415 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31416
31417 /*-------------------------------------------------------------------------
31418 Send OBSS Start Indication to HAL
31419 -------------------------------------------------------------------------*/
31420 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31421 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31422
31423} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31424
31425
31426/**
31427 @brief wdi_HT40OBSSScanInd
31428 This API is called to start OBSS scan
31429
31430 @param pWdiReq : pointer to get ind param
31431 @see
31432 @return SUCCESS or FAIL
31433*/
31434WDI_Status WDI_HT40OBSSScanInd
31435(
31436 WDI_HT40ObssScanParamsType *pWdiReq
31437)
31438{
31439 WDI_EventInfoType wdiEventData;
31440
31441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31442 "%s", __func__);
31443 /*-------------------------------------------------------------------------
31444 Sanity Check
31445 ------------------------------------------------------------------------*/
31446 if (eWLAN_PAL_FALSE == gWDIInitialized)
31447 {
31448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31449 "WDI API call before module is initialized - Fail request!");
31450
31451 return WDI_STATUS_E_NOT_ALLOWED;
31452 }
31453
31454 /*-------------------------------------------------------------------------
31455 Fill in Event data and post to the Main FSM
31456 ------------------------------------------------------------------------*/
31457 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31458 wdiEventData.pEventData = pWdiReq;
31459 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31460 wdiEventData.pCBfnc = NULL;
31461 wdiEventData.pUserData = NULL;
31462
31463
31464 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31465}
31466
31467/**
31468 @brief Process OBSS Stop scan result
31469
31470 @param pWDICtx: pointer to the WLAN DAL context
31471 pEventData: pointer to the event information structure
31472
31473 @see
31474 @return Result of the function call
31475*/
31476WDI_Status
31477WDI_ProcessHT40OBSSStopScanInd
31478(
31479 WDI_ControlBlockType* pWDICtx,
31480 WDI_EventInfoType* pEventData
31481)
31482{
31483 wpt_uint8* pSendBuffer = NULL;
31484 wpt_uint16 usDataOffset = 0;
31485 wpt_uint16 usSendSize = 0;
31486 wpt_uint16 usLen = 0;
31487 wpt_uint8 *wdiBssIdx = 0;
31488 tANI_U8 *bssIdx = 0;
31489 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31490
31491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31492
31493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31494 "%s", __func__);
31495
31496 /*-------------------------------------------------------------------------
31497 Sanity check
31498 -------------------------------------------------------------------------*/
31499 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31500 {
31501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31502 "%s: Invalid parameters", __func__);
31503 WDI_ASSERT(0);
31504 return WDI_STATUS_E_FAILURE;
31505 }
31506 bssIdx = (wpt_uint8*)pEventData->pEventData;
31507 /*-----------------------------------------------------------------------
31508 Get message buffer
31509 -----------------------------------------------------------------------*/
31510
31511 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31512 WDI_STOP_HT40_OBSS_SCAN_IND,
31513 sizeof(tANI_U8),
31514 &pSendBuffer, &usDataOffset, &usSendSize))||
31515 ( usSendSize < (usDataOffset + usLen )))
31516 {
31517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31518 "Unable to get send buffer in HT40 OBSS Start req %p ",
31519 pEventData);
31520 WDI_ASSERT(0);
31521 return WDI_STATUS_E_FAILURE;
31522 }
31523
31524 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31525 bssIdx = wdiBssIdx;
31526
31527 pWDICtx->pReqStatusUserData = NULL;
31528 pWDICtx->pfncRspCB = NULL;
31529
31530 /*-------------------------------------------------------------------------
31531 Send DHCP Start Indication to HAL
31532 -------------------------------------------------------------------------*/
31533 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31534 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31535} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31536
31537/**
31538 @brief WDI_HT40OBSSStopScanInd
31539 This API is called to start OBSS scan
31540 @param pWdiReq : pointer to get ind param
31541 @see
31542 @return SUCCESS or FAIL
31543*/
31544WDI_Status WDI_HT40OBSSStopScanInd
31545(
31546 wpt_uint8 bssIdx
31547)
31548{
31549 WDI_EventInfoType wdiEventData;
31550
31551 /*-------------------------------------------------------------------------
31552 Sanity Check
31553 ------------------------------------------------------------------------*/
31554 if (eWLAN_PAL_FALSE == gWDIInitialized)
31555 {
31556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31557 "WDI API call before module is initialized - Fail request!");
31558
31559 return WDI_STATUS_E_NOT_ALLOWED;
31560 }
31561
31562 /*-------------------------------------------------------------------------
31563 Fill in Event data and post to the Main FSM
31564 ------------------------------------------------------------------------*/
31565 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31566 wdiEventData.pEventData = &bssIdx;
31567 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31568 wdiEventData.pCBfnc = NULL;
31569 wdiEventData.pUserData = NULL;
31570
31571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31572}
31573
c_hpothu86041002014-04-14 19:06:51 +053031574WDI_Status
31575WDI_printRegInfo
31576(
31577 WDI_ControlBlockType* pWDICtx,
31578 WDI_EventInfoType* pEventData
31579)
31580{
31581 tHalRegDebugInfo *pRegTable;
31582 tHalRegDebugInfoParams *pRegParams;
31583 uint32 cnt=0;
31584
31585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31586 "%s: ", __func__);
31587 /*-------------------------------------------------------------------------
31588 Sanity check
31589 -------------------------------------------------------------------------*/
31590 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31591 ( NULL == pEventData->pEventData))
31592 {
31593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31594 "%s: Invalid parameters", __func__);
31595 WDI_ASSERT(0);
31596 return WDI_STATUS_E_FAILURE;
31597 }
31598
31599 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31600
31601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31602 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31603 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31604
31605 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31606
31607 if (pRegParams->regCount <= 0)
31608 {
31609 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31610 "%s incorrect parameters passed", __func__);
31611 return WDI_STATUS_E_FAILURE;
31612 }
31613
31614 while(pRegParams->regCount--)
31615 {
31616 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31617 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31618 cnt++;
31619 }
31620
31621 return WDI_STATUS_SUCCESS;
31622}
c_hpothu92367912014-05-01 15:18:17 +053031623
31624/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031625 * FUNCTION: WDI_delBaInd
31626 * send the delBA to peer.
31627 */
31628
31629WDI_Status
31630WDI_delBaInd
31631(
31632 WDI_ControlBlockType* pWDICtx,
31633 WDI_EventInfoType* pEventData
31634
31635)
31636{
31637 tHalWlanDelBaIndMsg halDelBaInd;
31638 WDI_LowLevelIndType wdiInd;
31639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31640
31641 /*-------------------------------------------------------------------------
31642 Sanity check
31643 -------------------------------------------------------------------------*/
31644 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31645 ( NULL == pEventData->pEventData))
31646 {
31647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31648 "%s: Invalid parameters", __func__);
31649 WDI_ASSERT(0);
31650 return WDI_STATUS_E_FAILURE;
31651 }
31652
31653 /*-------------------------------------------------------------------------
31654 Extract indication and send it to UMAC
31655 -------------------------------------------------------------------------*/
31656
31657 /* Parameters need to be unpacked according to HAL struct*/
31658 wpalMemoryCopy( &halDelBaInd,
31659 pEventData->pEventData,
31660 sizeof(halDelBaInd));
31661
31662 /*Fill in the indication parameters*/
31663 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31664
31665 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31666 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31667 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31668
31669 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31670 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31671 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31672
31673 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31674 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31675 if ( pWDICtx->wdiLowLevelIndCB )
31676 {
31677 /*Notify UMAC*/
31678 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31679 }
31680
31681 return WDI_STATUS_SUCCESS;
31682
31683
31684}
31685
31686/*
c_hpothu92367912014-05-01 15:18:17 +053031687 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31688 * send the response to PE with beacon miss count
31689 * received from WDI.
31690 */
31691WDI_Status
31692WDI_ProcessGetBcnMissRateRsp
31693(
31694 WDI_ControlBlockType* pWDICtx,
31695 WDI_EventInfoType* pEventData
31696)
31697{
31698 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31699 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31700
31701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31702 "In %s",__func__);
31703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31704
31705 /*-------------------------------------------------------------------------
31706 Sanity check
31707 -------------------------------------------------------------------------*/
31708 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31709 ( NULL == pEventData->pEventData))
31710 {
31711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31712 "%s: Invalid parameters", __func__);
31713 WDI_ASSERT(0);
31714 return WDI_STATUS_E_FAILURE;
31715 }
31716
31717 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31718 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31719
31720 /*Notify UMAC*/
31721 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31722 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31723 return WDI_STATUS_SUCCESS;
31724}
31725
31726/*
31727 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31728 * Request to WDI to get missed beacon rate.
31729 */
31730WDI_Status
31731WDI_ProcessGetBcnMissRateReq
31732(
31733 WDI_ControlBlockType* pWDICtx,
31734 WDI_EventInfoType* pEventData
31735)
31736{
31737 wpt_uint8* pSendBuffer = NULL;
31738 wpt_uint16 usDataOffset = 0;
31739 wpt_uint16 usSendSize = 0;
31740 wpt_uint8 ucCurrentBSSSesIdx = 0;
31741 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031742 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31743 tHalBcnMissRateReqParams halBcnMissRateReq;
31744
31745/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31746
31747 /*-------------------------------------------------------------------------
31748 Sanity check
31749 -------------------------------------------------------------------------*/
31750 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31751 ( NULL == pEventData->pCBfnc ) )
31752 {
31753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31754 "%s: Invalid parameters", __func__);
31755 WDI_ASSERT(0);
31756 return WDI_STATUS_E_FAILURE;
31757 }
31758
31759 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31760
31761 wpalMutexAcquire(&pWDICtx->wptMutex);
31762
31763 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31764 pEventData->pEventData, &pBSSSes);
31765 if ( NULL == pBSSSes )
31766 {
31767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31768 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031769 MAC_ADDRESS_STR, __func__,
31770 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031771 wpalMutexRelease(&pWDICtx->wptMutex);
31772 return WDI_STATUS_E_NOT_ALLOWED;
31773 }
31774 wpalMutexRelease(&pWDICtx->wptMutex);
31775
31776 /*-----------------------------------------------------------------------
31777 Get message buffer
31778 -----------------------------------------------------------------------*/
31779 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31780 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31781 sizeof(tHalBcnMissRateReqParams),
31782 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31783 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31784 {
31785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31786 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31787 pEventData);
31788 WDI_ASSERT(0);
31789 return WDI_STATUS_E_FAILURE;
31790 }
31791
31792 pWDICtx->wdiReqStatusCB = NULL;
31793 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31794
31795 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31796
31797 wpalMemoryCopy( pSendBuffer+usDataOffset,
31798 &halBcnMissRateReq,
31799 sizeof(tHalBcnMissRateReqParams));
31800 /*-------------------------------------------------------------------------
31801 Send Get STA Request to HAL
31802 -------------------------------------------------------------------------*/
31803 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31804 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31805}
31806
31807/**
31808 @brief WDI_GetBcnMissRate
31809
31810 @param pUserData: user data will be passed back with the
31811 callback
31812 WDI_GetBcnMissRateCb: callback for passing back the response
31813 of the get stats operation received from the device
31814 bssid: bssid, to send bssIdx to FW
31815
31816 @return SUCCESS or FAIL
31817*/
31818WDI_Status WDI_GetBcnMissRate( void *pUserData,
31819 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31820 tANI_U8 *bssid )
31821{
31822 WDI_EventInfoType wdiEventData;
31823
31824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31825
31826 /*------------------------------------------------------------------------
31827 Sanity Check
31828 ------------------------------------------------------------------------*/
31829 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31830 {
31831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31832 "WDI API call before module is initialized - Fail request");
31833
31834 return WDI_STATUS_E_NOT_ALLOWED;
31835 }
31836
31837 /*------------------------------------------------------------------------
31838 Fill in Event data and post to the Main FSM
31839 ------------------------------------------------------------------------*/
31840 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31841 wdiEventData.pEventData = bssid;
31842 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31843 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31844 wdiEventData.pUserData = pUserData;
31845
31846 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31847}
Abhishek Singh85b74712014-10-08 11:38:19 +053031848
31849/*
31850 * FUNCTION: WDI_ProcessGetFwStatsRsp
31851 * send the response with FW stats asked.
31852 */
31853WDI_Status
31854 WDI_ProcessGetFwStatsRsp
31855(
31856 WDI_ControlBlockType* pWDICtx,
31857 WDI_EventInfoType* pEventData
31858)
31859{
31860 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31861 tpHalfwStatsRspParams pHalFwstatsRsp;
31862 WDI_FWStatsResults fwStats;
31863
31864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31865
31866 /*-------------------------------------------------------------------------
31867 Sanity check
31868 -------------------------------------------------------------------------*/
31869 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31870 ( NULL == pEventData->pEventData))
31871 {
31872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31873 "%s: Invalid parameters", __func__);
31874 WDI_ASSERT(0);
31875 return WDI_STATUS_E_FAILURE;
31876 }
31877 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31878 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31879
31880 if(pHalFwstatsRsp->length)
31881 {
31882 switch( pHalFwstatsRsp->type )
31883 {
31884 case FW_UBSP_STATS:
31885 {
31886 ubspFwStats *ubspStatsfromFw;
31887
31888 fwStats.type = pHalFwstatsRsp->type;
31889 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31890 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31891 ubspStatsfromFw->ubsp_enter_cnt;
31892 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31893 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31894 }
31895 break;
31896 default:
31897 {
31898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31899 "%s: No handling for stats type %d", __func__,
31900 pHalFwstatsRsp->type);
31901 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31902 NULL, pWDICtx->pRspCBUserData);
31903 return WDI_STATUS_E_FAILURE;
31904 }
31905 }
31906 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31907 }
31908 else
31909 {
31910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31911 "%s: Length = 0 for type %d return failure ", __func__,
31912 pHalFwstatsRsp->type);
31913 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31914 NULL, pWDICtx->pRspCBUserData);
31915 return WDI_STATUS_E_FAILURE;
31916 }
31917 return WDI_STATUS_SUCCESS;
31918}
31919
31920/*
31921 * FUNCTION: WDI_ProcessGetFwStatsReq
31922 * Request to WDI to get FW Stats.
31923 */
31924WDI_Status
31925 WDI_ProcessGetFwStatsReq
31926(
31927 WDI_ControlBlockType* pWDICtx,
31928 WDI_EventInfoType* pEventData
31929)
31930{
31931 wpt_uint8* pSendBuffer = NULL;
31932 wpt_uint16 usDataOffset = 0;
31933 wpt_uint16 usSendSize = 0;
31934 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31935 tHalfwStatsReqParams halFwStatsReq;
31936
31937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31938
31939 /*-------------------------------------------------------------------------
31940 Sanity check
31941 -------------------------------------------------------------------------*/
31942 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31943 ( NULL == pEventData->pCBfnc ) )
31944 {
31945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31946 "%s: Invalid parameters", __func__);
31947 WDI_ASSERT(0);
31948 return WDI_STATUS_E_FAILURE;
31949 }
31950
31951 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31952
31953 /*-----------------------------------------------------------------------
31954 Get message buffer
31955 -----------------------------------------------------------------------*/
31956 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31957 pWDICtx, WDI_GET_FW_STATS_REQ,
31958 sizeof(tHalfwStatsReqParams),
31959 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31960 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31961 {
31962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31963 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31964 pEventData);
31965 WDI_ASSERT(0);
31966 return WDI_STATUS_E_FAILURE;
31967 }
31968
31969 pWDICtx->wdiReqStatusCB = NULL;
31970 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31971 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31972 wpalMemoryCopy( pSendBuffer+usDataOffset,
31973 &halFwStatsReq,
31974 sizeof(tHalfwStatsReqParams));
31975 /*-------------------------------------------------------------------------
31976 Send Get STA Request to HAL
31977 -------------------------------------------------------------------------*/
31978 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31979 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31980}
31981
Sunil Duttbd736ed2014-05-26 21:19:41 +053031982#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31983
31984/**
31985 @brief WDI_LLStatsSetReq
31986 This API is called to set link layer stats request in FW
31987
31988 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31989 wdiLLStatsSetRspCb : set link layer stats resp callback
31990 usrData : Client context
31991 @see
31992 @return SUCCESS or FAIL
31993*/
31994WDI_Status
31995WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31996 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31997 void* pUserData)
31998{
31999 WDI_EventInfoType wdiEventData;
32000
32001 /*------------------------------------------------------------------------
32002 Sanity Check
32003 ------------------------------------------------------------------------*/
32004 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32005 {
32006 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32007 "WDI API call before module is initialized - Fail request");
32008
32009 return WDI_STATUS_E_NOT_ALLOWED;
32010 }
32011
32012 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
32013 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
32014 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
32015 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
32016 wdiEventData.pUserData = pUserData;
32017
32018 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32019}
32020
32021/**
32022 @brief WDI_ProcessLLStatsSetReq -
32023 Set Link Layer Stats request to FW
32024
32025 @param pWDICtx : wdi context
32026 pEventData : indication data
32027
32028 @see
32029 @return none
32030*/
32031WDI_Status
32032WDI_ProcessLLStatsSetReq
32033(
32034 WDI_ControlBlockType* pWDICtx,
32035 WDI_EventInfoType* pEventData
32036)
32037{
32038 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
32039 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
32040 wpt_uint8* pSendBuffer = NULL;
32041 wpt_uint16 usSendSize = 0;
32042 wpt_uint16 usDataOffset = 0;
32043 tHalMacLlSetStatsReqParams halLLStatsSetParams;
32044
32045 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32046 ( NULL == pEventData->pCBfnc ))
32047 {
32048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32049 "%s: Invalid parameters", __func__);
32050 WDI_ASSERT(0);
32051 return WDI_STATUS_E_FAILURE;
32052 }
32053
32054 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
32055 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
32056
32057 /*-----------------------------------------------------------------------
32058 Get message buffer
32059 ! TO DO : proper conversion into the HAL Message Request Format
32060 -----------------------------------------------------------------------*/
32061 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32062 pWDICtx,
32063 WDI_LL_STATS_SET_REQ,
32064 sizeof(tHalMacLlSetStatsReqParams),
32065 &pSendBuffer, &usDataOffset,
32066 &usSendSize))||
32067 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
32068 {
32069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32070 "Unable to get send buffer in %s %p %p %p", __func__,
32071 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
32072 WDI_ASSERT(0);
32073 return WDI_STATUS_E_FAILURE;
32074 }
32075
32076
Dino Mycled3d50022014-07-07 12:58:25 +053032077 /* Need to fill in the self STA Index */
32078 if ( WDI_STATUS_SUCCESS !=
32079 WDI_STATableFindStaidByAddr(pWDICtx,
32080 pwdiLLStatsSetReqParams->macAddr,
32081 &halLLStatsSetParams.sta_id))
32082 {
32083 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32084 MAC_ADDRESS_STR
32085 ": This station does not exist in the WDI Station Table",
32086 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
32087
32088 wpalMemoryFree(pSendBuffer);
32089 return WDI_STATUS_E_FAILURE;
32090 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032091
32092 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032093 halLLStatsSetParams.mpdu_size_threshold =
32094 pwdiLLStatsSetReqParams->mpduSizeThreshold;
32095 halLLStatsSetParams.aggressive_statistics_gathering =
32096 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
32097
32098 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32099 " halLLStatsSetParams.req_id = %u",
32100 halLLStatsSetParams.req_id);
32101 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32102 " halLLStatsSetParams.sta_id = %u",
32103 halLLStatsSetParams.sta_id);
32104 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32105 " halLLStatsSetParams.mpdu_size_threshold = %u",
32106 halLLStatsSetParams.mpdu_size_threshold);
32107 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32108 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
32109 halLLStatsSetParams.aggressive_statistics_gathering);
32110
32111 wpalMemoryCopy(pSendBuffer+usDataOffset,
32112 &halLLStatsSetParams,
32113 sizeof(halLLStatsSetParams));
32114
32115 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32116
32117 /*-------------------------------------------------------------------------
32118 Send Clear Link Layer Stats Request to HAL
32119 -------------------------------------------------------------------------*/
32120 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32121 wdiLLStatsSetCb, pEventData->pUserData,
32122 WDI_LL_STATS_SET_RSP);
32123}
32124
32125/**
32126 @brief WDI_LLStatsGetReq
32127 This API is called to get link layer stats request in FW
32128
32129 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
32130 wdiLLStatsGetRspCb : get link layer stats resp callback
32131 usrData : Client context
32132 @see
32133 @return SUCCESS or FAIL
32134*/
32135WDI_Status
32136WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
32137 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
32138 void* pUserData)
32139{
32140 WDI_EventInfoType wdiEventData;
32141
32142 /*------------------------------------------------------------------------
32143 Sanity Check
32144 ------------------------------------------------------------------------*/
32145 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32146 {
32147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32148 "WDI API call before module is initialized - Fail request");
32149
32150 return WDI_STATUS_E_NOT_ALLOWED;
32151 }
32152
32153 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
32154 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
32155 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
32156 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
32157 wdiEventData.pUserData = pUserData;
32158
32159 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32160}
32161
32162/**
32163 @brief WDI_ProcessLLStatsGetReq -
32164 Get Link Layer Stats request to FW
32165
32166 @param pWDICtx : wdi context
32167 pEventData : indication data
32168
32169 @see
32170 @return none
32171*/
32172WDI_Status
32173WDI_ProcessLLStatsGetReq
32174(
32175 WDI_ControlBlockType* pWDICtx,
32176 WDI_EventInfoType* pEventData
32177)
32178{
32179 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
32180 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
32181 wpt_uint8* pSendBuffer = NULL;
32182 wpt_uint16 usSendSize = 0;
32183 wpt_uint16 usDataOffset = 0;
32184 tHalMacLlGetStatsReqParams halLLStatsGetParams;
32185
32186 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32187 ( NULL == pEventData->pCBfnc ))
32188 {
32189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32190 "%s: Invalid parameters", __func__);
32191 WDI_ASSERT(0);
32192 return WDI_STATUS_E_FAILURE;
32193 }
32194
32195 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
32196 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
32197
32198 /*-----------------------------------------------------------------------
32199 Get message buffer
32200 ! TO DO : proper conversion into the HAL Message Request Format
32201 -----------------------------------------------------------------------*/
32202 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32203 pWDICtx,
32204 WDI_LL_STATS_GET_REQ,
32205 sizeof(tHalMacLlGetStatsReqParams),
32206 &pSendBuffer, &usDataOffset,
32207 &usSendSize))||
32208 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
32209 {
32210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32211 "Unable to get send buffer in %s %p %p %p", __func__,
32212 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
32213 WDI_ASSERT(0);
32214 return WDI_STATUS_E_FAILURE;
32215 }
Dino Mycled3d50022014-07-07 12:58:25 +053032216 /* Need to fill in the self STA Index */
32217 if ( WDI_STATUS_SUCCESS !=
32218 WDI_STATableFindStaidByAddr(pWDICtx,
32219 pwdiLLStatsGetReqParams->macAddr,
32220 &halLLStatsGetParams.sta_id))
32221 {
32222 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32223 MAC_ADDRESS_STR
32224 ": This station does not exist in the WDI Station Table",
32225 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
32226
32227 wpalMemoryFree(pSendBuffer);
32228 return WDI_STATUS_E_FAILURE;
32229 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032230
32231 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032232 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
32233
32234 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32235 " halLLStatsGetParams.req_id = %u",
32236 halLLStatsGetParams.req_id);
32237 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32238 " halLLStatsGetParams.staId = %u",
32239 halLLStatsGetParams.sta_id);
32240 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32241 " halLLStatsGetParams.Mask = %u",
32242 halLLStatsGetParams.param_id_mask);
32243
32244 wpalMemoryCopy(pSendBuffer+usDataOffset,
32245 &halLLStatsGetParams,
32246 sizeof(halLLStatsGetParams));
32247
32248 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32249
32250 /*-------------------------------------------------------------------------
32251 Send Clear Link Layer Stats Request to HAL
32252 -------------------------------------------------------------------------*/
32253 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32254 wdiLLStatsGetCb, pEventData->pUserData,
32255 WDI_LL_STATS_GET_RSP);
32256}
32257
32258/**
32259 @brief WDI_LLStatsClearReq
32260 This API is called to clear link layer stats request in FW
32261
32262 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32263 wdiLLStatsSetRspCb : clear link layer stats resp callback
32264 usrData : Client context
32265 @see
32266 @return SUCCESS or FAIL
32267*/
32268WDI_Status
32269WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32270 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32271 void* pUserData)
32272{
32273 WDI_EventInfoType wdiEventData;
32274
32275 /*------------------------------------------------------------------------
32276 Sanity Check
32277 ------------------------------------------------------------------------*/
32278 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32279 {
32280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32281 "WDI API call before module is initialized - Fail request");
32282
32283 return WDI_STATUS_E_NOT_ALLOWED;
32284 }
32285
32286 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32287 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32288 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32289 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32290 wdiEventData.pUserData = pUserData;
32291
32292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32293 "%s:%d Enter", __func__, __LINE__);
32294
32295 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32296}
32297
32298/**
32299 @brief WDI_ProcessLLStatsClearReq -
32300 Clear Link Layer Stats request to FW
32301
32302 @param pWDICtx : wdi context
32303 pEventData : indication data
32304
32305 @see
32306 @return none
32307*/
32308WDI_Status
32309WDI_ProcessLLStatsClearReq
32310(
32311 WDI_ControlBlockType* pWDICtx,
32312 WDI_EventInfoType* pEventData
32313)
32314{
32315 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32316 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32317 wpt_uint8* pSendBuffer = NULL;
32318 wpt_uint16 usSendSize = 0;
32319 wpt_uint16 usDataOffset = 0;
32320 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32321
32322 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32323 ( NULL == pEventData->pCBfnc ))
32324 {
32325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32326 "%s: Invalid parameters", __func__);
32327 WDI_ASSERT(0);
32328 return WDI_STATUS_E_FAILURE;
32329 }
32330
32331 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32332 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32333
32334 /*-----------------------------------------------------------------------
32335 Get message buffer
32336 ! TO DO : proper conversion into the HAL Message Request Format
32337 -----------------------------------------------------------------------*/
32338 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32339 pWDICtx,
32340 WDI_LL_STATS_CLEAR_REQ,
32341 sizeof(tHalMacLlClearStatsReqParams),
32342 &pSendBuffer, &usDataOffset,
32343 &usSendSize))||
32344 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32345 {
32346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32347 "Unable to get send buffer in %s %p %p %p", __func__,
32348 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32349 WDI_ASSERT(0);
32350 return WDI_STATUS_E_FAILURE;
32351 }
Dino Mycled3d50022014-07-07 12:58:25 +053032352 /* Need to fill in the self STA Index */
32353 if ( WDI_STATUS_SUCCESS !=
32354 WDI_STATableFindStaidByAddr(pWDICtx,
32355 pwdiLLStatsClearReqParams->macAddr,
32356 &halLLStatsClearParams.sta_id))
32357 {
32358 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32359 MAC_ADDRESS_STR
32360 ": This station does not exist in the WDI Station Table",
32361 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32362
32363 wpalMemoryFree(pSendBuffer);
32364 return WDI_STATUS_E_FAILURE;
32365 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032366
32367 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032368 halLLStatsClearParams.stats_clear_req_mask =
32369 pwdiLLStatsClearReqParams->statsClearReqMask;
32370 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32371
32372 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32373 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32374 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32375 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32376 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32377 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32378 halLLStatsClearParams.stats_clear_req_mask);
32379 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32380 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32381
32382 wpalMemoryCopy(pSendBuffer+usDataOffset,
32383 &halLLStatsClearParams,
32384 sizeof(halLLStatsClearParams));
32385
32386 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32387
32388 /*-------------------------------------------------------------------------
32389 Send Clear Link Layer Stats Request to HAL
32390 -------------------------------------------------------------------------*/
32391 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32392 wdiLLStatsClearCb, pEventData->pUserData,
32393 WDI_LL_STATS_CLEAR_RSP);
32394}
32395#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032396
Abhishek Singh85b74712014-10-08 11:38:19 +053032397WDI_Status WDI_FWStatsGetReq( void* pUserData,
32398 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32399 wpt_uint32 stats)
32400{
32401 WDI_EventInfoType wdiEventData;
32402
32403 /*------------------------------------------------------------------------
32404 Sanity Check
32405 ------------------------------------------------------------------------*/
32406 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32407 {
32408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32409 "WDI API call before module is initialized - Fail request");
32410 return WDI_STATUS_E_NOT_ALLOWED;
32411 }
32412 /*------------------------------------------------------------------------
32413 Fill in Event data and post to the Main FSM
32414 ------------------------------------------------------------------------*/
32415 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32416 wdiEventData.pEventData = (void *)&stats;
32417 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32418 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32419 wdiEventData.pUserData = pUserData;
32420
32421 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32422
32423}
32424
Katya Nigamf0511f62015-05-05 16:40:57 +053032425WDI_Status
32426WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032427 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032428 void* pUserData)
32429{
32430 WDI_EventInfoType wdiEventData;
32431
32432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32433 "%s", __func__);
32434
32435 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32436 {
32437 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32438 "WDI API call before module is initialized - Fail request");
32439
32440 return WDI_STATUS_E_NOT_ALLOWED;
32441 }
32442
32443 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32444 wdiEventData.pEventData = pwdiMonStartReqParams;
32445 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032446 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032447 wdiEventData.pUserData = pUserData;
32448
32449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32450}
32451
32452WDI_Status
32453WDI_ProcessMonStartReq
32454(
32455 WDI_ControlBlockType* pWDICtx,
32456 WDI_EventInfoType* pEventData
32457)
32458{
32459 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032460 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032461 wpt_uint8* pSendBuffer = NULL;
32462 wpt_uint16 usSendSize = 0;
32463 wpt_uint16 usDataOffset = 0;
32464 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32465
32466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32467 "%s", __func__);
32468
32469 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32470 ( NULL == pEventData->pCBfnc ))
32471 {
32472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32473 "%s: Invalid parameters", __func__);
32474 WDI_ASSERT(0);
32475 return WDI_STATUS_E_FAILURE;
32476 }
32477
32478 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032479 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032480
32481 /*-----------------------------------------------------------------------
32482 Get message buffer
32483 ! TO DO : proper conversion into the HAL Message Request Format
32484 -----------------------------------------------------------------------*/
32485 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32486 pWDICtx,
32487 WDI_MON_START_REQ,
32488 sizeof(tHalEnableMonitorModeReqParams),
32489 &pSendBuffer, &usDataOffset,
32490 &usSendSize))||
32491 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32492 {
32493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32494 "Unable to get send buffer in %s %p %p %p", __func__,
32495 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32496 WDI_ASSERT(0);
32497 return WDI_STATUS_E_FAILURE;
32498 }
32499
32500 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32501 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32502 pwdiMonStartReqParams->ChannelBW);
32503 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32504 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32505 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32506 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32507 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32508 pwdiMonStartReqParams->mmFilters[0].macAddr,
32509 sizeof( wpt_macAddr ));
32510 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32511 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32512 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32513 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32514
32515 wpalMemoryCopy(pSendBuffer+usDataOffset,
32516 &halEnableMonitorModeParams,
32517 sizeof(halEnableMonitorModeParams));
32518
32519 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32520
32521 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32522 wdiMonStartCb, pEventData->pUserData,
32523 WDI_MON_START_RSP);
32524}
32525
32526WDI_Status
32527WDI_ProcessMonStartRsp
32528(
32529 WDI_ControlBlockType* pWDICtx,
32530 WDI_EventInfoType* pEventData
32531)
32532{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032533 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032534
32535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32536 "%s: Enter ", __func__);
32537 /*-------------------------------------------------------------------------
32538 Sanity check
32539 -------------------------------------------------------------------------*/
32540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32541 ( NULL == pEventData->pEventData))
32542 {
32543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32544 "%s: Invalid parameters", __func__);
32545 WDI_ASSERT(0);
32546 return WDI_STATUS_E_FAILURE;
32547 }
32548
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032549 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032550
32551 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32552
32553 return WDI_STATUS_SUCCESS;
32554}
32555
32556WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032557WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032558 void* pUserData)
32559{
32560 WDI_EventInfoType wdiEventData;
32561
32562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32563 "%s", __func__);
32564
32565 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32566 {
32567 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32568 "WDI API call before module is initialized - Fail request");
32569
32570 return WDI_STATUS_E_NOT_ALLOWED;
32571 }
32572
32573 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32574 wdiEventData.pEventData = NULL;
32575 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032576 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032577 wdiEventData.pUserData = pUserData;
32578
32579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32580}
32581
32582WDI_Status
32583WDI_ProcessMonStopReq
32584(
32585 WDI_ControlBlockType* pWDICtx,
32586 WDI_EventInfoType* pEventData
32587)
32588{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032589 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032590 wpt_uint8* pSendBuffer = NULL;
32591 wpt_uint16 usSendSize = 0;
32592 wpt_uint16 usDataOffset = 0;
32593 wpt_uint8 resetConfiguration;
32594
32595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32596 "%s", __func__);
32597
32598 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32599 {
32600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32601 "%s: Invalid parameters", __func__);
32602 WDI_ASSERT(0);
32603 return WDI_STATUS_E_FAILURE;
32604 }
32605
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032606 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032607
32608 /*-----------------------------------------------------------------------
32609 Get message buffer
32610 ! TO DO : proper conversion into the HAL Message Request Format
32611 -----------------------------------------------------------------------*/
32612 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32613 pWDICtx,
32614 WDI_MON_STOP_REQ,
32615 sizeof(wpt_uint8),
32616 &pSendBuffer, &usDataOffset,
32617 &usSendSize))||
32618 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32619 {
32620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32621 "Unable to get send buffer in %s %p %p", __func__,
32622 pEventData, wdiMonStopCb);
32623 WDI_ASSERT(0);
32624 return WDI_STATUS_E_FAILURE;
32625 }
32626
32627 wpalMemoryCopy(pSendBuffer+usDataOffset,
32628 &resetConfiguration,
32629 sizeof(wpt_uint8));
32630
32631 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32632
32633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32634 wdiMonStopCb, pEventData->pUserData,
32635 WDI_MON_STOP_RSP);
32636}
32637
32638WDI_Status
32639WDI_ProcessMonStopRsp
32640(
32641 WDI_ControlBlockType* pWDICtx,
32642 WDI_EventInfoType* pEventData
32643)
32644{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032645 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032646
32647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32648 "%s: Enter ", __func__);
32649 /*-------------------------------------------------------------------------
32650 Sanity check
32651 -------------------------------------------------------------------------*/
32652 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32653 {
32654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32655 "%s: Invalid parameters", __func__);
32656 WDI_ASSERT(0);
32657 return WDI_STATUS_E_FAILURE;
32658 }
32659
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032660 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032661
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032662 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053032663
32664 return WDI_STATUS_SUCCESS;
32665}
32666
Dino Mycle41bdc942014-06-10 11:30:24 +053032667#ifdef WLAN_FEATURE_EXTSCAN
32668
32669/**
32670 @brief Process EXTSCAN BUffer full indication from FW
32671
32672 @param pWDICtx: pointer to the WLAN DAL context
32673 pEventData: pointer to the event information structure
32674
32675 @see
32676 @return Result of the function call
32677*/
32678WDI_Status
32679WDI_ProcessEXTScanProgressInd
32680(
32681 WDI_ControlBlockType* pWDICtx,
32682 WDI_EventInfoType* pEventData
32683)
32684{
32685 WDI_LowLevelIndType wdiInd;
32686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32687
32688 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32689 "%s: ", __func__);
32690
32691 /* sanity check */
32692 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32693 ( NULL == pEventData->pEventData))
32694 {
32695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32696 "%s: Invalid parameters", __func__);
32697 WDI_ASSERT(0);
32698 return WDI_STATUS_E_FAILURE;
32699 }
32700
32701 /* Fill in the indication parameters */
32702 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32703
32704 /* extract response and send it to UMAC */
32705 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32706
32707 /* Notify UMAC */
32708 if (pWDICtx->wdiLowLevelIndCB)
32709 {
32710 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32711 }
32712 else
32713 {
Dino Mycled3d50022014-07-07 12:58:25 +053032714 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032715 "%s: WDILowLevelIndCb is null", __func__);
32716 WDI_ASSERT(0);
32717 return WDI_STATUS_E_FAILURE;
32718 }
32719 return WDI_STATUS_SUCCESS;
32720
32721} /* End of WDI_ProcessEXTScanProgressInd */
32722
32723
32724/**
32725 @brief Process EXTScan Scan Available indication from FW
32726
32727 @param pWDICtx: pointer to the WLAN DAL context
32728 pEventData: pointer to the event information structure
32729
32730 @see
32731 @return Result of the function call
32732*/
32733WDI_Status
32734WDI_ProcessEXTScanScanAvailableInd
32735(
32736 WDI_ControlBlockType* pWDICtx,
32737 WDI_EventInfoType* pEventData
32738)
32739{
32740 WDI_LowLevelIndType wdiInd;
32741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32742
32743 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32744 "%s: ", __func__);
32745
32746 /* sanity check */
32747 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32748 ( NULL == pEventData->pEventData))
32749 {
32750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32751 "%s: Invalid parameters", __func__);
32752 WDI_ASSERT(0);
32753 return WDI_STATUS_E_FAILURE;
32754 }
32755
32756
32757
32758 /* Fill in the indication parameters */
32759 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32760
32761 /* extract response and send it to UMAC */
32762 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32763
32764 /* Notify UMAC */
32765 if (pWDICtx->wdiLowLevelIndCB)
32766 {
32767 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32768 }
32769 else
32770 {
32771 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32772 "%s: WDILowLevelIndCb is null", __func__);
32773 WDI_ASSERT(0);
32774 return WDI_STATUS_E_FAILURE;
32775 }
32776 return WDI_STATUS_SUCCESS;
32777} /* End of WDI_ProcessEXTScanScanDoneInd */
32778
32779/**
32780 @brief Process EXTScan Result Indication indication from FW
32781
32782 @param pWDICtx: pointer to the WLAN DAL context
32783 pEventData: pointer to the event information structure
32784
32785 @see
32786 @return Result of the function call
32787*/
32788WDI_Status
32789WDI_ProcessEXTScanResultInd
32790(
32791 WDI_ControlBlockType* pWDICtx,
32792 WDI_EventInfoType* pEventData
32793)
32794{
32795 WDI_LowLevelIndType wdiInd;
32796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32797
32798 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32799 "%s: ", __func__);
32800
32801 /* sanity check */
32802 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32803 ( NULL == pEventData->pEventData))
32804 {
32805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32806 "%s: Invalid parameters", __func__);
32807 WDI_ASSERT(0);
32808 return WDI_STATUS_E_FAILURE;
32809 }
32810
32811 /* Fill in the indication parameters */
32812 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32813
32814 /* extract response and send it to UMAC */
32815 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32816
32817 /* Notify UMAC */
32818 if (pWDICtx->wdiLowLevelIndCB)
32819 {
32820 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32821 }
32822 else
32823 {
32824 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32825 "%s: WDILowLevelIndCb is null", __func__);
32826 WDI_ASSERT(0);
32827 return WDI_STATUS_E_FAILURE;
32828 }
32829 return WDI_STATUS_SUCCESS;
32830} /* End of WDI_ProcessEXTScanResultInd */
32831
32832/**
32833 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32834
32835 @param pWDICtx: pointer to the WLAN DAL context
32836 pEventData: pointer to the event information structure
32837
32838 @see
32839 @return Result of the function call
32840*/
32841WDI_Status
32842WDI_ProcessEXTScanBssidHotListResultInd
32843(
32844 WDI_ControlBlockType* pWDICtx,
32845 WDI_EventInfoType* pEventData
32846)
32847{
32848 WDI_LowLevelIndType wdiInd;
32849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32850
32851 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32852 "%s: ", __func__);
32853
32854 /* sanity check */
32855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32856 ( NULL == pEventData->pEventData))
32857 {
32858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32859 "%s: Invalid parameters", __func__);
32860 WDI_ASSERT(0);
32861 return WDI_STATUS_E_FAILURE;
32862 }
32863
32864 /* Fill in the indication parameters */
32865 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32866
32867 /* extract response and send it to UMAC */
32868 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32869
32870 /* Notify UMAC */
32871 if (pWDICtx->wdiLowLevelIndCB)
32872 {
32873 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32874 }
32875 else
32876 {
32877 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32878 "%s: WDILowLevelIndCb is null", __func__);
32879 WDI_ASSERT(0);
32880 return WDI_STATUS_E_FAILURE;
32881 }
32882 return WDI_STATUS_SUCCESS;
32883} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32884
32885/**
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053032886 @brief Process EXTScan SSID Hotlist Result Indication indication from FW
32887
32888 @param pWDICtx: pointer to the WLAN DAL context
32889 pEventData: pointer to the event information structure
32890
32891 @see
32892 @return Result of the function call
32893*/
32894WDI_Status
32895WDI_ProcessEXTScanSsidHotListResultInd
32896(
32897 WDI_ControlBlockType* pWDICtx,
32898 WDI_EventInfoType* pEventData
32899)
32900{
32901 WDI_LowLevelIndType wdiInd;
32902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32903
32904 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32905 "%s: ", __func__);
32906
32907 /* sanity check */
32908 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32909 ( NULL == pEventData->pEventData))
32910 {
32911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32912 "%s: Invalid parameters", __func__);
32913 WDI_ASSERT(0);
32914 return WDI_STATUS_E_FAILURE;
32915 }
32916
32917 /* Fill in the indication parameters */
32918 wdiInd.wdiIndicationType = WDI_EXTSCAN_SSID_HOTLIST_RESULT_IND;
32919
32920 /* extract response and send it to UMAC */
32921 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32922
32923 /* Notify UMAC */
32924 if (pWDICtx->wdiLowLevelIndCB)
32925 {
32926 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32927 }
32928 else
32929 {
32930 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32931 "%s: WDILowLevelIndCb is null", __func__);
32932 WDI_ASSERT(0);
32933 return WDI_STATUS_E_FAILURE;
32934 }
32935 return WDI_STATUS_SUCCESS;
32936} /* End of WDI_ProcessEXTScanSsidHotListResultInd */
32937
32938
32939/**
Dino Mycle41bdc942014-06-10 11:30:24 +053032940 @brief WDI_EXTScanGetCapabilitiesReq
32941
32942 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32943 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32944 of the Req operation received from the device
32945 pUserData: user data will be passed back with the callback
32946
32947 @return SUCCESS or FAIL
32948*/
32949WDI_Status
32950WDI_EXTScanGetCapabilitiesReq(
32951 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32952 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32953 void* pUserData)
32954{
32955 WDI_EventInfoType wdiEventData;
32956
32957 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32958 "%s: %d ",__func__, __LINE__);
32959 /*------------------------------------------------------------------------
32960 Sanity Check
32961 ------------------------------------------------------------------------*/
32962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32963 {
32964 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32965 "WDI API call before module is initialized - Fail request");
32966
32967 return WDI_STATUS_E_NOT_ALLOWED;
32968 }
32969
32970 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32971 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32972 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32973 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32974 wdiEventData.pUserData = pUserData;
32975
32976 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32977}
32978
32979/**
32980 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32981 Extended Scan Get Capability request to FW
32982
32983 @param pWDICtx : wdi context
32984 pEventData : indication data
32985
32986 @see
32987 @return none
32988*/
32989WDI_Status
32990WDI_ProcessEXTScanGetCapabilitiesReq
32991(
32992 WDI_ControlBlockType* pWDICtx,
32993 WDI_EventInfoType* pEventData
32994)
32995{
32996 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32997 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32998 wpt_uint8* pSendBuffer = NULL;
32999 wpt_uint16 usSendSize = 0;
33000 wpt_uint16 usDataOffset = 0;
33001 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
33002
33003 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33004 "%s: %d Enter",__func__, __LINE__);
33005
33006 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33007 ( NULL == pEventData->pCBfnc ))
33008 {
33009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33010 "%s: Invalid parameters", __func__);
33011 WDI_ASSERT(0);
33012 return WDI_STATUS_E_FAILURE;
33013 }
33014
33015 pwdiEXTScanGetCapabilitiesReqParams =
33016 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
33017 wdiEXTScanGetCapabilitiesRspCb =
33018 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
33019
33020 /*-----------------------------------------------------------------------
33021 Get message buffer
33022 ! TO DO : proper conversion into the HAL Message Request Format
33023 -----------------------------------------------------------------------*/
33024 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33025 pWDICtx,
33026 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
33027 sizeof(halEXTScanGetCapReqParams),
33028 &pSendBuffer, &usDataOffset,
33029 &usSendSize))||
33030 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
33031 {
33032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33033 "Unable to get send buffer in %s %p %p %p", __func__,
33034 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
33035 wdiEXTScanGetCapabilitiesRspCb);
33036 WDI_ASSERT(0);
33037 return WDI_STATUS_E_FAILURE;
33038 }
33039
33040 halEXTScanGetCapReqParams.requestId =
33041 pwdiEXTScanGetCapabilitiesReqParams->requestId;
33042 halEXTScanGetCapReqParams.sessionId =
33043 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
33044
33045 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33046 " requestId %u "
33047 " sessionId %u ",
33048 halEXTScanGetCapReqParams.requestId,
33049 halEXTScanGetCapReqParams.sessionId);
33050
33051 wpalMemoryCopy(pSendBuffer+usDataOffset,
33052 &halEXTScanGetCapReqParams,
33053 sizeof(halEXTScanGetCapReqParams));
33054
33055 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33056
33057
33058 /*-------------------------------------------------------------------------
33059 Send EXTScan Stop Request to HAL
33060 -------------------------------------------------------------------------*/
33061 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33062 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
33063 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
33064}
33065
33066/**
33067 @brief WDI_EXTScanGetCachedResultsReq
33068
33069 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
33070 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
33071 of the Req operation received from the device
33072 pUserData: user data will be passed back with the callback
33073
33074 @return SUCCESS or FAIL
33075*/
33076
33077WDI_Status
33078WDI_EXTScanGetCachedResultsReq(
33079 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
33080 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
33081 void* pUserData)
33082{
33083 WDI_EventInfoType wdiEventData;
33084
33085 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33086 "%s: %d Enter",__func__, __LINE__);
33087 /*------------------------------------------------------------------------
33088 Sanity Check
33089 ------------------------------------------------------------------------*/
33090 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33091 {
33092 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33093 "WDI API call before module is initialized - Fail request");
33094
33095 return WDI_STATUS_E_NOT_ALLOWED;
33096 }
33097
33098 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
33099 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
33100 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
33101 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
33102 wdiEventData.pUserData = pUserData;
33103
33104 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33105}
33106
33107/**
33108 @brief WDI_ProcessEXTScanGetCachedResultsReq -
33109 Extended Scan Get Cached Result request to FW
33110
33111 @param pWDICtx : wdi context
33112 pEventData : indication data
33113
33114 @see
33115 @return none
33116*/
33117WDI_Status
33118WDI_ProcessEXTScanGetCachedResultsReq
33119(
33120 WDI_ControlBlockType* pWDICtx,
33121 WDI_EventInfoType* pEventData
33122)
33123{
33124 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
33125 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
33126 wpt_uint8* pSendBuffer = NULL;
33127 wpt_uint16 usSendSize = 0;
33128 wpt_uint16 usDataOffset = 0;
33129 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
33130
33131 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33132 "%s: %d Enter",__func__, __LINE__);
33133
33134 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33135 ( NULL == pEventData->pCBfnc ))
33136 {
33137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33138 "%s: Invalid parameters", __func__);
33139 WDI_ASSERT(0);
33140 return WDI_STATUS_E_FAILURE;
33141 }
33142
33143 pwdiEXTScanGetCachedResultsReqParams =
33144 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
33145 wdiEXTScanGetCachedResultsCb =
33146 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
33147
33148 /*-----------------------------------------------------------------------
33149 Get message buffer
33150 ! TO DO : proper conversion into the HAL Message Request Format
33151 -----------------------------------------------------------------------*/
33152 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33153 pWDICtx,
33154 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
33155 sizeof(tHalExtScanGetScanReq),
33156 &pSendBuffer, &usDataOffset,
33157 &usSendSize))||
33158 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
33159 {
33160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33161 "Unable to get send buffer in %s %p %p %p", __func__,
33162 pEventData, pwdiEXTScanGetCachedResultsReqParams,
33163 wdiEXTScanGetCachedResultsCb);
33164 WDI_ASSERT(0);
33165 return WDI_STATUS_E_FAILURE;
33166 }
33167
33168 halEXTScanGetScanReqParams.requestId =
33169 pwdiEXTScanGetCachedResultsReqParams->requestId;
33170 halEXTScanGetScanReqParams.sessionId =
33171 pwdiEXTScanGetCachedResultsReqParams->sessionId;
33172 halEXTScanGetScanReqParams.flush =
33173 pwdiEXTScanGetCachedResultsReqParams->flush;
33174
33175 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33176 " requestId %u "
33177 " sessionId %u "
33178 " flush %u ",
33179 halEXTScanGetScanReqParams.requestId,
33180 halEXTScanGetScanReqParams.sessionId,
33181 halEXTScanGetScanReqParams.flush);
33182
33183 wpalMemoryCopy(pSendBuffer+usDataOffset,
33184 &halEXTScanGetScanReqParams,
33185 sizeof(halEXTScanGetScanReqParams));
33186
33187 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33188
33189
33190 /*-------------------------------------------------------------------------
33191 Send EXTScan Stop Request to HAL
33192 -------------------------------------------------------------------------*/
33193 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33194 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
33195 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
33196}
33197
33198/**
33199 @brief WDI_EXTScanStopReq
33200
33201 @param WDI_EXTScanStopReqParams: Req parameter for the FW
33202 WDI_EXTScanStopRspCb: callback for passing back the response
33203 of the Req operation received from the device
33204 pUserData: user data will be passed back with the callback
33205
33206 @return SUCCESS or FAIL
33207*/
33208WDI_Status
33209WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
33210 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
33211 void* pUserData)
33212{
33213 WDI_EventInfoType wdiEventData;
33214
33215 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33216 "%s: %d ",__func__, __LINE__);
33217 /*------------------------------------------------------------------------
33218 Sanity Check
33219 ------------------------------------------------------------------------*/
33220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33221 {
33222 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33223 "WDI API call before module is initialized - Fail request");
33224
33225 return WDI_STATUS_E_NOT_ALLOWED;
33226 }
33227
33228 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
33229 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
33230 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
33231 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
33232 wdiEventData.pUserData = pUserData;
33233
33234 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33235}
33236
33237/**
33238 @brief WDI_ProcessEXTScanStopReq -
33239 Extended Scan Stop request to FW
33240
33241 @param pWDICtx : wdi context
33242 pEventData : indication data
33243
33244 @see
33245 @return none
33246*/
33247WDI_Status
33248WDI_ProcessEXTScanStopReq
33249(
33250 WDI_ControlBlockType* pWDICtx,
33251 WDI_EventInfoType* pEventData
33252)
33253{
33254 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33255 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33256 wpt_uint8* pSendBuffer = NULL;
33257 wpt_uint16 usSendSize = 0;
33258 wpt_uint16 usDataOffset = 0;
33259 tHalExtScanStopReq halEXTScanStopReqParams;
33260
33261 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33262 "%s: %d ",__func__, __LINE__);
33263
33264 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33265 ( NULL == pEventData->pCBfnc ))
33266 {
33267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33268 "%s: Invalid parameters", __func__);
33269 WDI_ASSERT(0);
33270 return WDI_STATUS_E_FAILURE;
33271 }
33272
33273 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33274 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33275
33276 /*-----------------------------------------------------------------------
33277 Get message buffer
33278 ! TO DO : proper conversion into the HAL Message Request Format
33279 -----------------------------------------------------------------------*/
33280 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33281 pWDICtx,
33282 WDI_EXTSCAN_STOP_REQ,
33283 sizeof(tHalExtScanStopReq),
33284 &pSendBuffer, &usDataOffset,
33285 &usSendSize))||
33286 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33287 {
33288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33289 "Unable to get send buffer in %s %p %p %p", __func__,
33290 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33291 WDI_ASSERT(0);
33292 return WDI_STATUS_E_FAILURE;
33293 }
33294
33295 halEXTScanStopReqParams.requestId =
33296 pwdiEXTScanStopReqParams->requestId;
33297 halEXTScanStopReqParams.sessionId =
33298 pwdiEXTScanStopReqParams->sessionId;
33299
33300 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33301 " halEXTScanStopReqParams.requestId %u "
33302 " halEXTScanStopReqParams.sessionId %u ",
33303 halEXTScanStopReqParams.requestId,
33304 halEXTScanStopReqParams.sessionId);
33305
33306 wpalMemoryCopy(pSendBuffer+usDataOffset,
33307 &halEXTScanStopReqParams,
33308 sizeof(halEXTScanStopReqParams));
33309
33310 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33311
33312
33313 /*-------------------------------------------------------------------------
33314 Send EXTScan Stop Request to HAL
33315 -------------------------------------------------------------------------*/
33316 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33317 wdiEXTScanStopCb, pEventData->pUserData,
33318 WDI_EXTSCAN_STOP_RSP);
33319}
33320
33321/**
33322 @brief WDI_EXTScanStartReq
33323
33324 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33325 WDI_EXTScanStartRspCb: callback for passing back the response
33326 of the Req operation received from the device
33327 pUserData: user data will be passed back with the callback
33328
33329 @return SUCCESS or FAIL
33330*/
33331WDI_Status
33332WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33333 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33334 void* pUserData)
33335{
33336 WDI_EventInfoType wdiEventData;
33337
33338 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33339 "%s: %d Enter",__func__, __LINE__);
33340 /*------------------------------------------------------------------------
33341 Sanity Check
33342 ------------------------------------------------------------------------*/
33343 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33344 {
33345 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33346 "WDI API call before module is initialized - Fail request");
33347
33348 return WDI_STATUS_E_NOT_ALLOWED;
33349 }
33350
33351 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33352 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33353 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33354 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33355 wdiEventData.pUserData = pUserData;
33356
33357 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33358}
33359
33360/**
33361 @brief WDI_ProcessEXTScanStartReq -
33362 Extended Scan Start Request to FW
33363
33364 @param pWDICtx : wdi context
33365 pEventData : indication data
33366
33367 @see
33368 @return none
33369*/
33370WDI_Status
33371WDI_ProcessEXTScanStartReq
33372(
33373 WDI_ControlBlockType* pWDICtx,
33374 WDI_EventInfoType* pEventData
33375)
33376{
33377 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33378 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33379 wpt_uint8* pSendBuffer = NULL;
33380 wpt_uint16 usSendSize = 0;
33381 wpt_uint16 usDataOffset = 0;
33382 tpHalExtScanStartReq pHalExtScanStartReqParams;
33383 int i = 0;
33384 int j = 0;
33385
33386 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33387 "%s: %d Enter",__func__, __LINE__);
33388
33389 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33390 ( NULL == pEventData->pCBfnc ))
33391 {
33392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33393 "%s: Invalid parameters", __func__);
33394 WDI_ASSERT(0);
33395 return WDI_STATUS_E_FAILURE;
33396 }
33397
33398 pwdiEXTScanStartReqParams =
33399 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33400 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33401
33402 /*-----------------------------------------------------------------------
33403 Get message buffer
33404 ! TO DO : proper conversion into the HAL Message Request Format
33405 -----------------------------------------------------------------------*/
33406 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33407 pWDICtx,
33408 WDI_EXTSCAN_START_REQ,
33409 sizeof(tHalExtScanStartReq),
33410 &pSendBuffer, &usDataOffset,
33411 &usSendSize))||
33412 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33413 {
33414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33415 "Unable to get send buffer in %s %p %p %p", __func__,
33416 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33417 WDI_ASSERT(0);
33418 return WDI_STATUS_E_FAILURE;
33419 }
33420
33421 pHalExtScanStartReqParams =
33422 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33423
33424 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33425 pHalExtScanStartReqParams->maxApPerScan =
33426 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033427 pHalExtScanStartReqParams->reportThresholdPercent =
33428 pwdiEXTScanStartReqParams->reportThresholdPercent;
33429 pHalExtScanStartReqParams->reportThresholdNumScans =
33430 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053033431 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33432 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33433 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033434 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053033435
33436 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33437 {
33438 pHalExtScanStartReqParams->bucketData[i].bucketId =
33439 pwdiEXTScanStartReqParams->buckets[i].bucket;
33440 pHalExtScanStartReqParams->bucketData[i].channelBand =
33441 pwdiEXTScanStartReqParams->buckets[i].band;
33442 pHalExtScanStartReqParams->bucketData[i].period =
33443 pwdiEXTScanStartReqParams->buckets[i].period;
33444 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33445 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033446 pHalExtScanStartReqParams->bucketData[i].max_period =
33447 pwdiEXTScanStartReqParams->buckets[i].max_period;
33448 pHalExtScanStartReqParams->bucketData[i].exponent =
33449 pwdiEXTScanStartReqParams->buckets[i].exponent;
33450 pHalExtScanStartReqParams->bucketData[i].step_count =
33451 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053033452 pHalExtScanStartReqParams->bucketData[i].numChannels =
33453 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33454
33455 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33456 {
33457 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33458 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33459 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33460 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33461 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33462 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33463 }
33464
33465 }
33466
33467
33468 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033469 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
33470 "reportThresholdNumScans %u requestId %u"
33471 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033472 pHalExtScanStartReqParams->basePeriod,
33473 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033474 pHalExtScanStartReqParams->reportThresholdPercent,
33475 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053033476 pHalExtScanStartReqParams->requestId,
33477 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033478 pHalExtScanStartReqParams->numBuckets,
33479 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053033480
33481 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33482 {
33483 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33484 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033485 " reportEvents %u numChannels %u "
33486 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053033487 pHalExtScanStartReqParams->bucketData[i].bucketId,
33488 pHalExtScanStartReqParams->bucketData[i].channelBand,
33489 pHalExtScanStartReqParams->bucketData[i].period,
33490 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033491 pHalExtScanStartReqParams->bucketData[i].numChannels,
33492 pHalExtScanStartReqParams->bucketData[i].max_period,
33493 pHalExtScanStartReqParams->bucketData[i].exponent,
33494 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053033495
33496 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33497 {
33498 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33499 "%d) channel %u dwellTimeMs %u passive %u ",j,
33500 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33501 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33502 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33503 }
33504
33505 }
33506
Dino Mycle41bdc942014-06-10 11:30:24 +053033507 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33508
33509 /*-------------------------------------------------------------------------
33510 Send EXTSCAN Start Request to HAL
33511 -------------------------------------------------------------------------*/
33512 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33513 wdiEXTScanStartCb, pEventData->pUserData,
33514 WDI_EXTSCAN_START_RSP);
33515}
33516
33517/**
33518 @brief WDI_EXTScanSetBSSIDHotlistReq
33519
33520 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33521 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33522 of the Req operation received from the device
33523 pUserData: user data will be passed back with the callback
33524
33525 @return SUCCESS or FAIL
33526*/
33527WDI_Status
33528WDI_EXTScanSetBSSIDHotlistReq(
33529 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33530 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33531 void* pUserData)
33532{
33533 WDI_EventInfoType wdiEventData;
33534
33535 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33536 "%s: %d Enter ",__func__, __LINE__);
33537 /*------------------------------------------------------------------------
33538 Sanity Check
33539 ------------------------------------------------------------------------*/
33540 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33541 {
33542 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33543 "WDI API call before module is initialized - Fail request");
33544
33545 return WDI_STATUS_E_NOT_ALLOWED;
33546 }
33547
33548 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33549 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33550 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33551 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33552 wdiEventData.pUserData = pUserData;
33553
33554 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33555}
33556
33557/**
33558 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33559 Extended Scan Set BSSSID Hotlist Request to FW
33560
33561 @param pWDICtx : wdi context
33562 pEventData : indication data
33563
33564 @see
33565 @return none
33566*/
33567WDI_Status
33568WDI_ProcessEXTScanSetBSSIDHotlistReq
33569(
33570 WDI_ControlBlockType* pWDICtx,
33571 WDI_EventInfoType* pEventData
33572)
33573{
33574 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33575 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33576 wpt_uint8* pSendBuffer = NULL;
33577 wpt_uint16 usSendSize = 0;
33578 wpt_uint16 usDataOffset = 0;
33579 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33580 int i;
33581
33582 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33583 "%s: %d Enter",__func__, __LINE__);
33584
33585 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33586 ( NULL == pEventData->pCBfnc ))
33587 {
33588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33589 "%s: Invalid parameters", __func__);
33590 WDI_ASSERT(0);
33591 return WDI_STATUS_E_FAILURE;
33592 }
33593
33594 pwdiEXTScanSetBSSIDHotlistReqParams =
33595 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33596 wdiEXTScanSetBSSIDHotlistRspCb =
33597 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33598
33599 /*-----------------------------------------------------------------------
33600 Get message buffer
33601 ! TO DO : proper conversion into the HAL Message Request Format
33602 -----------------------------------------------------------------------*/
33603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33604 pWDICtx,
33605 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33606 sizeof(tHalBssidHotlistSetReq),
33607 &pSendBuffer, &usDataOffset,
33608 &usSendSize))||
33609 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33610 {
33611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33612 "Unable to get send buffer in %s %p %p %p", __func__,
33613 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33614 wdiEXTScanSetBSSIDHotlistRspCb);
33615 WDI_ASSERT(0);
33616 return WDI_STATUS_E_FAILURE;
33617 }
33618 pHalBssidHotlistSetReqParams =
33619 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33620
33621 pHalBssidHotlistSetReqParams->requestId =
33622 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33623
33624 pHalBssidHotlistSetReqParams->sessionId =
33625 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33626
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033627 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
33628 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
33629
33630 pHalBssidHotlistSetReqParams->numBssid =
33631 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053033632
33633 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33634
33635 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33636 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33637 WDI_MAC_ADDR_LEN);
33638
33639 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33640 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33641
33642 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33643 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33644
Dino Mycle41bdc942014-06-10 11:30:24 +053033645 }
33646
33647 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033648 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033649 pHalBssidHotlistSetReqParams->requestId,
33650 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033651 pHalBssidHotlistSetReqParams->numBssid,
33652 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053033653
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033654 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053033655
33656 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033657 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053033658 __func__, __LINE__, i,
33659 pHalBssidHotlistSetReqParams->ap[i].bssid,
33660 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033661 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053033662
33663 }
33664
33665 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33666
33667
33668 /*-------------------------------------------------------------------------
33669 Send EXTScan Stop Request to HAL
33670 -------------------------------------------------------------------------*/
33671 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33672 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33673 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33674}
33675
33676/**
33677 @brief WDI_EXTScanResetBSSIDHotlistReq
33678
33679 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33680 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33681 of the Req operation received from the device
33682 pUserData: user data will be passed back with the callback
33683
33684 @return SUCCESS or FAIL
33685*/
33686WDI_Status
33687WDI_EXTScanResetBSSIDHotlistReq(
33688 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33689 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33690 void* pUserData)
33691{
33692 WDI_EventInfoType wdiEventData;
33693
33694 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33695 "%s: %d",__func__, __LINE__);
33696 /*------------------------------------------------------------------------
33697 Sanity Check
33698 ------------------------------------------------------------------------*/
33699 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33700 {
33701 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33702 "WDI API call before module is initialized - Fail request");
33703
33704 return WDI_STATUS_E_NOT_ALLOWED;
33705 }
33706
33707 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33708 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33709 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33710 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33711 wdiEventData.pUserData = pUserData;
33712
33713 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33714}
33715
33716/**
33717 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33718 Extended Scan reset BSSID hotlist Request to FW
33719
33720 @param pWDICtx : wdi context
33721 pEventData : indication data
33722
33723 @see
33724 @return none
33725*/
33726WDI_Status
33727WDI_ProcessEXTScanResetBSSIDHotlistReq
33728(
33729 WDI_ControlBlockType* pWDICtx,
33730 WDI_EventInfoType* pEventData
33731)
33732{
33733 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33734 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33735 wpt_uint8* pSendBuffer = NULL;
33736 wpt_uint16 usSendSize = 0;
33737 wpt_uint16 usDataOffset = 0;
33738 tpHalHotlistResetReq pHalHotlistResetReqParams;
33739
33740 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33741 "%s: %d",__func__, __LINE__);
33742
33743 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33744 ( NULL == pEventData->pCBfnc ))
33745 {
33746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33747 "%s: Invalid parameters", __func__);
33748 WDI_ASSERT(0);
33749 return WDI_STATUS_E_FAILURE;
33750 }
33751
33752 pwdiEXTScanResetBSSIDHotlistReqParams =
33753 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33754 wdiEXTScanResetBSSIDHotlistRspCb =
33755 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33756
33757 /*-----------------------------------------------------------------------
33758 Get message buffer
33759 ! TO DO : proper conversion into the HAL Message Request Format
33760 -----------------------------------------------------------------------*/
33761 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33762 pWDICtx,
33763 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33764 sizeof(tHalHotlistResetReq),
33765 &pSendBuffer, &usDataOffset,
33766 &usSendSize))||
33767 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33768 {
33769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33770 "Unable to get send buffer in %s %p %p %p", __func__,
33771 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33772 wdiEXTScanResetBSSIDHotlistRspCb);
33773 WDI_ASSERT(0);
33774 return WDI_STATUS_E_FAILURE;
33775 }
33776 pHalHotlistResetReqParams =
33777 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33778
33779 pHalHotlistResetReqParams->requestId =
33780 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33781
33782 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33783
33784 /*-------------------------------------------------------------------------
33785 Send EXTScan Stop Request to HAL
33786 -------------------------------------------------------------------------*/
33787 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33788 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33789 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33790}
33791
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053033792
33793/**
33794 @brief WDI_EXTScanSetSSIDHotlistReq
33795
33796 @param WDI_EXTScanSetSSIDHotlistReqParams: Req parameter for the FW
33797 WDI_EXTScanSetSSIDHotlistRspCb: callback for passing back the response
33798 of the Req operation received from the device
33799 pUserData: user data will be passed back with the callback
33800
33801 @return SUCCESS or FAIL
33802*/
33803WDI_Status
33804WDI_EXTScanSetSSIDHotlistReq(
33805 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams,
33806 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb,
33807 void* pUserData)
33808{
33809 WDI_EventInfoType wdiEventData;
33810
33811 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33812 "%s: %d Enter ",__func__, __LINE__);
33813 /*------------------------------------------------------------------------
33814 Sanity Check
33815 ------------------------------------------------------------------------*/
33816 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33817 {
33818 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33819 "WDI API call before module is initialized - Fail request");
33820
33821 return WDI_STATUS_E_NOT_ALLOWED;
33822 }
33823
33824 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SSID_HOTLIST_REQ;
33825 wdiEventData.pEventData = pwdiEXTScanSetSSIDHotlistReqParams;
33826 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetSSIDHotlistReqParams);
33827 wdiEventData.pCBfnc = wdiEXTScanSetSSIDHotlistRspCb;
33828 wdiEventData.pUserData = pUserData;
33829
33830 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33831}
33832
33833/**
33834 @brief WDI_ProcessEXTScanSetSSIDHotlistReq -
33835 Extended Scan Set SSSID Hotlist Request to FW
33836
33837 @param pWDICtx : wdi context
33838 pEventData : indication data
33839
33840 @see
33841 @return none
33842*/
33843WDI_Status
33844WDI_ProcessEXTScanSetSSIDHotlistReq
33845(
33846 WDI_ControlBlockType* pWDICtx,
33847 WDI_EventInfoType* pEventData
33848)
33849{
33850 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams;
33851 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
33852 wpt_uint8* pSendBuffer = NULL;
33853 wpt_uint16 usSendSize = 0;
33854 wpt_uint16 usDataOffset = 0;
33855 tpHalSsidHotlistSetReq pHalSsidHotlistSetReqParams;
33856 int i;
33857
33858 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33859 "%s: %d Enter",__func__, __LINE__);
33860
33861 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33862 ( NULL == pEventData->pCBfnc ))
33863 {
33864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33865 "%s: Invalid parameters", __func__);
33866 WDI_ASSERT(0);
33867 return WDI_STATUS_E_FAILURE;
33868 }
33869
33870 pwdiEXTScanSetSSIDHotlistReqParams =
33871 (WDI_EXTScanSetSSIDHotlistReqParams *)pEventData->pEventData;
33872 wdiEXTScanSetSSIDHotlistRspCb =
33873 (WDI_EXTScanSetSSIDHotlistRspCb)pEventData->pCBfnc;
33874
33875 /*-----------------------------------------------------------------------
33876 Get message buffer
33877 ! TO DO : proper conversion into the HAL Message Request Format
33878 -----------------------------------------------------------------------*/
33879 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33880 pWDICtx,
33881 WDI_EXTSCAN_SET_SSID_HOTLIST_REQ,
33882 sizeof(tHalSsidHotlistSetReq),
33883 &pSendBuffer, &usDataOffset,
33884 &usSendSize))||
33885 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistSetReq) )))
33886 {
33887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33888 "Unable to get send buffer in %s %p %p %p", __func__,
33889 pEventData, pwdiEXTScanSetSSIDHotlistReqParams,
33890 wdiEXTScanSetSSIDHotlistRspCb);
33891 WDI_ASSERT(0);
33892 return WDI_STATUS_E_FAILURE;
33893 }
33894 pHalSsidHotlistSetReqParams =
33895 (tpHalSsidHotlistSetReq) (pSendBuffer + usDataOffset);
33896
33897 pHalSsidHotlistSetReqParams->requestId =
33898 pwdiEXTScanSetSSIDHotlistReqParams->requestId;
33899
33900 pHalSsidHotlistSetReqParams->sessionId =
33901 pwdiEXTScanSetSSIDHotlistReqParams->sessionId;
33902
33903 pHalSsidHotlistSetReqParams->lostSsidSampleSize =
33904 pwdiEXTScanSetSSIDHotlistReqParams->lostSsidSampleSize;;
33905
33906 pHalSsidHotlistSetReqParams->numSsid =
33907 pwdiEXTScanSetSSIDHotlistReqParams->numSsid;
33908
33909 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33910
33911 wpalMemoryZero(pHalSsidHotlistSetReqParams->ssid[i].ssid, 33);
33912 wpalMemoryCopy(pHalSsidHotlistSetReqParams->ssid[i].ssid,
33913 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.sSSID,
33914 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.ucLength);
33915
33916 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold =
33917 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].lowRssiThreshold;
33918
33919 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold =
33920 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].highRssiThreshold;
33921
33922 pHalSsidHotlistSetReqParams->ssid[i].band =
33923 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].band;
33924 }
33925
33926 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33927 "ReqID %u sessionId %u numSsid %u lost_ssid_sample_size: %u",
33928 pHalSsidHotlistSetReqParams->requestId,
33929 pHalSsidHotlistSetReqParams->sessionId,
33930 pHalSsidHotlistSetReqParams->numSsid,
33931 pHalSsidHotlistSetReqParams->lostSsidSampleSize);
33932
33933 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33934
33935 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33936 "%s %d %d) SSID = %s lowRssiThreshold %d highRssiThreshold %d band: %d",
33937 __func__, __LINE__, i,
33938 pHalSsidHotlistSetReqParams->ssid[i].ssid,
33939 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold,
33940 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold,
33941 pHalSsidHotlistSetReqParams->ssid[i].band);
33942 }
33943
33944 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33945
33946
33947 /*-------------------------------------------------------------------------
33948 Send EXTScan Stop Request to HAL
33949 -------------------------------------------------------------------------*/
33950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33951 wdiEXTScanSetSSIDHotlistRspCb, pEventData->pUserData,
33952 WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
33953}
33954
33955/**
33956 @brief WDI_EXTScanResetSSIDHotlistReq
33957
33958 @param WDI_EXTScanResetSSIDHotlistReqParams: Req parameter for the FW
33959 WDI_EXTScanResetSSIDHotlistRspCb: callback for passing back the response
33960 of the Req operation received from the device
33961 pUserData: user data will be passed back with the callback
33962
33963 @return SUCCESS or FAIL
33964*/
33965WDI_Status
33966WDI_EXTScanResetSSIDHotlistReq(
33967 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams,
33968 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb,
33969 void* pUserData)
33970{
33971 WDI_EventInfoType wdiEventData;
33972
33973 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33974 "%s: %d",__func__, __LINE__);
33975 /*------------------------------------------------------------------------
33976 Sanity Check
33977 ------------------------------------------------------------------------*/
33978 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33979 {
33980 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33981 "WDI API call before module is initialized - Fail request");
33982
33983 return WDI_STATUS_E_NOT_ALLOWED;
33984 }
33985
33986 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ;
33987 wdiEventData.pEventData = pwdiEXTScanResetSSIDHotlistReqParams;
33988 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetSSIDHotlistReqParams);
33989 wdiEventData.pCBfnc = wdiEXTScanResetSSIDHotlistRspCb;
33990 wdiEventData.pUserData = pUserData;
33991
33992 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33993}
33994
33995/**
33996 @brief WDI_ProcessEXTScanResetSSIDHotlistReq -
33997 Extended Scan reset SSID hotlist Request to FW
33998
33999 @param pWDICtx : wdi context
34000 pEventData : indication data
34001
34002 @see
34003 @return none
34004*/
34005WDI_Status
34006WDI_ProcessEXTScanResetSSIDHotlistReq
34007(
34008 WDI_ControlBlockType* pWDICtx,
34009 WDI_EventInfoType* pEventData
34010)
34011{
34012 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams;
34013 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34014 wpt_uint8* pSendBuffer = NULL;
34015 wpt_uint16 usSendSize = 0;
34016 wpt_uint16 usDataOffset = 0;
34017 tpHalSsidHotlistResetReq pHalSsidHotlistResetReqParams;
34018
34019 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34020 "%s: %d",__func__, __LINE__);
34021
34022 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34023 ( NULL == pEventData->pCBfnc ))
34024 {
34025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34026 "%s: Invalid parameters", __func__);
34027 WDI_ASSERT(0);
34028 return WDI_STATUS_E_FAILURE;
34029 }
34030
34031 pwdiEXTScanResetSSIDHotlistReqParams =
34032 (WDI_EXTScanResetSSIDHotlistReqParams *)pEventData->pEventData;
34033 wdiEXTScanResetSSIDHotlistRspCb =
34034 (WDI_EXTScanResetSSIDHotlistRspCb)pEventData->pCBfnc;
34035
34036 /*-----------------------------------------------------------------------
34037 Get message buffer
34038 ! TO DO : proper conversion into the HAL Message Request Format
34039 -----------------------------------------------------------------------*/
34040 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34041 pWDICtx,
34042 WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ,
34043 sizeof(tHalSsidHotlistResetReq),
34044 &pSendBuffer, &usDataOffset,
34045 &usSendSize))||
34046 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistResetReq) )))
34047 {
34048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34049 "Unable to get send buffer in %s %p %p %p", __func__,
34050 pEventData, pwdiEXTScanResetSSIDHotlistReqParams,
34051 wdiEXTScanResetSSIDHotlistRspCb);
34052 WDI_ASSERT(0);
34053 return WDI_STATUS_E_FAILURE;
34054 }
34055 pHalSsidHotlistResetReqParams =
34056 (tpHalSsidHotlistResetReq) (pSendBuffer+usDataOffset);
34057
34058 pHalSsidHotlistResetReqParams->requestId =
34059 pwdiEXTScanResetSSIDHotlistReqParams->requestId;
34060
34061 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34062
34063 /*-------------------------------------------------------------------------
34064 Send RESET_HOTLIST_SSID Request to HAL
34065 -------------------------------------------------------------------------*/
34066 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34067 wdiEXTScanResetSSIDHotlistRspCb, pEventData->pUserData,
34068 WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
34069}
34070
34071
Dino Mycle41bdc942014-06-10 11:30:24 +053034072/**
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053034073 @brief WDI_HighPriorityDataInfoInd
34074
34075 @param pHighPriorityDataInfoIndParams: Req parameter for the FW
34076
34077 @return SUCCESS or FAIL
34078*/
34079WDI_Status
34080WDI_HighPriorityDataInfoInd
34081(
34082 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams
34083)
34084{
34085 WDI_EventInfoType wdiEventData;
34086
34087 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34088 "%s: %d",__func__, __LINE__);
34089 /*------------------------------------------------------------------------
34090 Sanity Check
34091 ------------------------------------------------------------------------*/
34092 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34093 {
34094 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34095 "WDI API call before module is initialized - Fail request");
34096
34097 return WDI_STATUS_E_NOT_ALLOWED;
34098 }
34099
34100 wdiEventData.wdiRequest = WDI_HIGH_PRIORITY_DATA_INFO_IND;
34101 wdiEventData.pEventData = pHighPriorityDataInfoIndParams;
34102 wdiEventData.uEventDataSize = sizeof(*pHighPriorityDataInfoIndParams);
34103 wdiEventData.pCBfnc = NULL;
34104 wdiEventData.pUserData = NULL;
34105
34106 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34107}
34108
34109/**
34110 @brief WDI_ProcessHighPriorityDataInfoInd -
34111 Send WFD indication to FW
34112
34113 @param pWDICtx : wdi context
34114 pEventData : indication data
34115
34116 @see
34117 @return none
34118*/
34119WDI_Status
34120WDI_ProcessHighPriorityDataInfoInd
34121(
34122 WDI_ControlBlockType* pWDICtx,
34123 WDI_EventInfoType* pEventData
34124)
34125{
34126 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams;
34127 wpt_uint8* pSendBuffer = NULL;
34128 wpt_uint16 usSendSize = 0;
34129 wpt_uint16 usDataOffset = 0;
34130 tpHalHighPriorityDataInfoInd pHalHighPriorityDataInfoIndParams;
34131 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34132
34133 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34134 "%s: %d",__func__, __LINE__);
34135
34136 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34137 ( NULL == pEventData->pEventData))
34138 {
34139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34140 "%s: Invalid parameters", __func__);
34141 WDI_ASSERT(0);
34142 return WDI_STATUS_E_FAILURE;
34143 }
34144
34145 pHighPriorityDataInfoIndParams =
34146 (WDI_HighPriorityDataInfoIndParams *)pEventData->pEventData;
34147
34148 /*-----------------------------------------------------------------------
34149 Get message buffer
34150 -----------------------------------------------------------------------*/
34151 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34152 pWDICtx,
34153 WDI_HIGH_PRIORITY_DATA_INFO_IND,
34154 sizeof(tHalHighPriorityDataInfoInd),
34155 &pSendBuffer, &usDataOffset,
34156 &usSendSize))||
34157 ( usSendSize < (usDataOffset + sizeof(tHalHighPriorityDataInfoInd) )))
34158 {
34159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34160 "Unable to get send buffer in %s %p %p", __func__,
34161 pEventData, pHighPriorityDataInfoIndParams);
34162 WDI_ASSERT(0);
34163 return WDI_STATUS_E_FAILURE;
34164 }
34165 pHalHighPriorityDataInfoIndParams =
34166 (tpHalHighPriorityDataInfoInd) (pSendBuffer+usDataOffset);
34167
34168 pHalHighPriorityDataInfoIndParams->pause =
34169 pHighPriorityDataInfoIndParams->pause;
34170
34171 pWDICtx->pReqStatusUserData = NULL;
34172 pWDICtx->pfncRspCB = NULL;
34173
34174 /*-------------------------------------------------------------------------
34175 Send HIGH_PRIORITY_DATA_INFO Request to HAL
34176 -------------------------------------------------------------------------*/
34177 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34178 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34179}
34180
34181/**
Dino Mycle41bdc942014-06-10 11:30:24 +053034182 @brief Process Extended Scan Start Rsp function (called when a response
34183 is being received over the bus from HAL)
34184
34185 @param pWDICtx: pointer to the WLAN DAL context
34186 pEventData: pointer to the event information structure
34187
34188 @see
34189 @return Result of the function call
34190*/
34191WDI_Status
34192WDI_ProcessEXTScanStartRsp
34193(
34194 WDI_ControlBlockType* pWDICtx,
34195 WDI_EventInfoType* pEventData
34196)
34197{
34198 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
34199
34200 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34201 "%s: %d",__func__, __LINE__);
34202 /*-------------------------------------------------------------------------
34203 Sanity check
34204 -------------------------------------------------------------------------*/
34205 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34206 ( NULL == pEventData->pEventData))
34207 {
34208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34209 "%s: Invalid parameters", __func__);
34210 WDI_ASSERT(0);
34211 return WDI_STATUS_E_FAILURE;
34212 }
34213
34214 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34215 if ( NULL == wdiEXTScanStartRspCb)
34216 {
34217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34218 "%s: Callback function Invalid", __func__);
34219 WDI_ASSERT(0);
34220 return WDI_STATUS_E_FAILURE;
34221 }
34222
34223 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
34224
34225 return WDI_STATUS_SUCCESS;
34226}
34227
34228
34229/**
34230 @brief Process Extended Scan Stop Rsp function (called when a response
34231 is being received over the bus from HAL)
34232
34233 @param pWDICtx: pointer to the WLAN DAL context
34234 pEventData: pointer to the event information structure
34235
34236 @see
34237 @return Result of the function call
34238*/
34239WDI_Status
34240WDI_ProcessEXTScanStopRsp
34241(
34242 WDI_ControlBlockType* pWDICtx,
34243 WDI_EventInfoType* pEventData
34244)
34245{
34246 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
34247
34248 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34249 "%s: %d",__func__, __LINE__);
34250
34251
34252 /*-------------------------------------------------------------------------
34253 Sanity check
34254 -------------------------------------------------------------------------*/
34255 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34256 ( NULL == pEventData->pEventData))
34257 {
34258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34259 "%s: Invalid parameters", __func__);
34260 WDI_ASSERT(0);
34261 return WDI_STATUS_E_FAILURE;
34262 }
34263
34264 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34265 if ( NULL == wdiEXTScanStopRspCb)
34266 {
34267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34268 "%s: Callback function Invalid", __func__);
34269 WDI_ASSERT(0);
34270 return WDI_STATUS_E_FAILURE;
34271 }
34272
34273 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34274
34275 return WDI_STATUS_SUCCESS;
34276}
34277
34278/**
34279 @brief Process Extended Scan Get Cached Rsp function (called when a response
34280 is being received over the bus from HAL)
34281
34282 @param pWDICtx: pointer to the WLAN DAL context
34283 pEventData: pointer to the event information structure
34284
34285 @see
34286 @return Result of the function call
34287*/
34288WDI_Status
34289WDI_ProcessEXTScanGetCachedResultsRsp
34290(
34291 WDI_ControlBlockType* pWDICtx,
34292 WDI_EventInfoType* pEventData
34293)
34294{
34295 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
34296
34297 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34298 "%s: %d Enter",__func__, __LINE__);
34299
34300
34301 /*-------------------------------------------------------------------------
34302 Sanity check
34303 -------------------------------------------------------------------------*/
34304 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34305 ( NULL == pEventData->pEventData))
34306 {
34307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34308 "%s: Invalid parameters", __func__);
34309 WDI_ASSERT(0);
34310 return WDI_STATUS_E_FAILURE;
34311 }
34312
34313 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34314 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
34315 {
34316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34317 "%s: Callback function Invalid", __func__);
34318 WDI_ASSERT(0);
34319 return WDI_STATUS_E_FAILURE;
34320 }
34321
34322 wdiEXTScanGetCachedResultsRspCb(
34323 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34324
34325 return WDI_STATUS_SUCCESS;
34326}
34327
34328/**
34329 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
34330 is being received over the bus from HAL)
34331
34332 @param pWDICtx: pointer to the WLAN DAL context
34333 pEventData: pointer to the event information structure
34334
34335 @see
34336 @return Result of the function call
34337*/
34338WDI_Status
34339WDI_ProcessEXTScanGetCapabilitiesRsp
34340(
34341 WDI_ControlBlockType* pWDICtx,
34342 WDI_EventInfoType* pEventData
34343)
34344{
34345 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
34346
34347 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34348 "%s: %d ",__func__, __LINE__);
34349
34350
34351 /*-------------------------------------------------------------------------
34352 Sanity check
34353 -------------------------------------------------------------------------*/
34354 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34355 ( NULL == pEventData->pEventData))
34356 {
34357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34358 "%s: Invalid parameters", __func__);
34359 WDI_ASSERT(0);
34360 return WDI_STATUS_E_FAILURE;
34361 }
34362
34363 wdiEXTScanGetCapabilitiesRspCb =
34364 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
34365 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
34366 {
34367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34368 "%s: Callback function Invalid", __func__);
34369 WDI_ASSERT(0);
34370 return WDI_STATUS_E_FAILURE;
34371 }
34372
34373 wdiEXTScanGetCapabilitiesRspCb(
34374 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34375
34376 return WDI_STATUS_SUCCESS;
34377}
34378
34379/**
34380 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34381 response is being received over the bus from HAL)
34382
34383 @param pWDICtx: pointer to the WLAN DAL context
34384 pEventData: pointer to the event information structure
34385
34386 @see
34387 @return Result of the function call
34388*/
34389WDI_Status
34390WDI_ProcessEXTScanSetHotlistBSSIDRsp
34391(
34392 WDI_ControlBlockType* pWDICtx,
34393 WDI_EventInfoType* pEventData
34394)
34395{
34396 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34397
34398 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34399 "%s: %d ",__func__, __LINE__);
34400
34401
34402 /*-------------------------------------------------------------------------
34403 Sanity check
34404 -------------------------------------------------------------------------*/
34405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34406 ( NULL == pEventData->pEventData))
34407 {
34408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34409 "%s: Invalid parameters", __func__);
34410 WDI_ASSERT(0);
34411 return WDI_STATUS_E_FAILURE;
34412 }
34413
34414 wdiEXTScanSetBSSIDHotlistRspCb =
34415 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34416 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34417 {
34418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34419 "%s: Callback function Invalid", __func__);
34420 WDI_ASSERT(0);
34421 return WDI_STATUS_E_FAILURE;
34422 }
34423
34424 wdiEXTScanSetBSSIDHotlistRspCb(
34425 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34426
34427 return WDI_STATUS_SUCCESS;
34428}
34429
34430/**
34431 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34432 when a response is being received over the bus from HAL)
34433
34434 @param pWDICtx: pointer to the WLAN DAL context
34435 pEventData: pointer to the event information structure
34436
34437 @see
34438 @return Result of the function call
34439*/
34440WDI_Status
34441WDI_ProcessEXTScanResetHotlistBSSIDRsp
34442(
34443 WDI_ControlBlockType* pWDICtx,
34444 WDI_EventInfoType* pEventData
34445)
34446{
34447 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34448
34449 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34450 "%s: %d ",__func__, __LINE__);
34451
34452
34453 /*-------------------------------------------------------------------------
34454 Sanity check
34455 -------------------------------------------------------------------------*/
34456 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34457 ( NULL == pEventData->pEventData))
34458 {
34459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34460 "%s: Invalid parameters", __func__);
34461 WDI_ASSERT(0);
34462 return WDI_STATUS_E_FAILURE;
34463 }
34464
34465 wdiEXTScanResetBSSIDHotlistRspCb =
34466 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34467 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34468 {
34469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34470 "%s: Callback function Invalid", __func__);
34471 WDI_ASSERT(0);
34472 return WDI_STATUS_E_FAILURE;
34473 }
34474
34475 wdiEXTScanResetBSSIDHotlistRspCb(
34476 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34477
34478 return WDI_STATUS_SUCCESS;
34479}
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053034480
34481/**
34482 @brief Process Extended Scan Set hotlist SSID Rsp function (called when a
34483 response is being received over the bus from HAL)
34484
34485 @param pWDICtx: pointer to the WLAN DAL context
34486 pEventData: pointer to the event information structure
34487
34488 @see
34489 @return Result of the function call
34490*/
34491WDI_Status
34492WDI_ProcessEXTScanSetHotlistSSIDRsp
34493(
34494 WDI_ControlBlockType* pWDICtx,
34495 WDI_EventInfoType* pEventData
34496)
34497{
34498 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
34499
34500 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34501 "%s: %d ",__func__, __LINE__);
34502
34503
34504 /*-------------------------------------------------------------------------
34505 Sanity check
34506 -------------------------------------------------------------------------*/
34507 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34508 ( NULL == pEventData->pEventData))
34509 {
34510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34511 "%s: Invalid parameters", __func__);
34512 WDI_ASSERT(0);
34513 return WDI_STATUS_E_FAILURE;
34514 }
34515
34516 wdiEXTScanSetSSIDHotlistRspCb =
34517 (WDI_EXTScanSetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34518 if ( NULL == wdiEXTScanSetSSIDHotlistRspCb)
34519 {
34520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34521 "%s: Callback function Invalid", __func__);
34522 WDI_ASSERT(0);
34523 return WDI_STATUS_E_FAILURE;
34524 }
34525
34526 wdiEXTScanSetSSIDHotlistRspCb(
34527 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34528
34529 return WDI_STATUS_SUCCESS;
34530}
34531
34532
34533/**
34534 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34535 when a response is being received over the bus from HAL)
34536
34537 @param pWDICtx: pointer to the WLAN DAL context
34538 pEventData: pointer to the event information structure
34539
34540 @see
34541 @return Result of the function call
34542*/
34543WDI_Status
34544WDI_ProcessEXTScanResetHotlistSSIDRsp
34545(
34546 WDI_ControlBlockType* pWDICtx,
34547 WDI_EventInfoType* pEventData
34548)
34549{
34550 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34551
34552 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34553 "%s: %d ",__func__, __LINE__);
34554
34555
34556 /*-------------------------------------------------------------------------
34557 Sanity check
34558 -------------------------------------------------------------------------*/
34559 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34560 ( NULL == pEventData->pEventData))
34561 {
34562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34563 "%s: Invalid parameters", __func__);
34564 WDI_ASSERT(0);
34565 return WDI_STATUS_E_FAILURE;
34566 }
34567
34568 wdiEXTScanResetSSIDHotlistRspCb =
34569 (WDI_EXTScanResetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34570 if ( NULL == wdiEXTScanResetSSIDHotlistRspCb)
34571 {
34572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34573 "%s: Callback function Invalid", __func__);
34574 WDI_ASSERT(0);
34575 return WDI_STATUS_E_FAILURE;
34576 }
34577
34578 wdiEXTScanResetSSIDHotlistRspCb(
34579 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34580
34581 return WDI_STATUS_SUCCESS;
34582}
Dino Mycle41bdc942014-06-10 11:30:24 +053034583#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034584
34585/**
34586 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34587
34588 @param None
34589
34590 @see
34591
34592 @return Status of the request
34593*/
34594WDI_Status
34595WDI_SetSpoofMacAddrReq
34596(
34597 WDI_SpoofMacAddrInfoType* pWdiReq,
34598 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34599 void* pUserData)
34600{
34601 WDI_EventInfoType wdiEventData;
34602
34603 /*-------------------------------------------------------------------------
34604 Sanity Check
34605 ------------------------------------------------------------------------*/
34606 if (eWLAN_PAL_FALSE == gWDIInitialized)
34607 {
34608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34609 "WDI API call before module is initialized - Fail request!");
34610
34611 return WDI_STATUS_E_NOT_ALLOWED;
34612 }
34613
34614 /*-------------------------------------------------------------------------
34615 Fill in Event data and post to the Main FSM
34616 ------------------------------------------------------------------------*/
34617 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34618 wdiEventData.pEventData = pWdiReq;
34619 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34620 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34621 wdiEventData.pUserData = pUserData;
34622
34623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34624}
34625
34626/**
34627 @brief Process SpoofMacAddr Request
34628
34629 @param pWDICtx: pointer to the WLAN DAL context
34630 pEventData: pointer to the event information structure
34631
34632 @see
34633 @return Result of the function call
34634*/
34635WDI_Status
34636WDI_ProcessSpoofMacAddrReq
34637(
34638 WDI_ControlBlockType* pWDICtx,
34639 WDI_EventInfoType* pEventData
34640)
34641{
34642 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34643 wpt_uint8* pSendBuffer = NULL;
34644 wpt_uint16 usDataOffset = 0;
34645 wpt_uint16 usSendSize = 0;
34646 WDI_Status wdiStatus;
34647 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34648 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34649
34650
34651 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34652 "%s: %d Enter",__func__, __LINE__);
34653
34654 /*-------------------------------------------------------------------------
34655 Sanity check
34656 -------------------------------------------------------------------------*/
34657 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34658 ( NULL == pEventData->pEventData))
34659 {
34660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34661 "%s: Invalid parameters", __func__);
34662 WDI_ASSERT(0);
34663 return WDI_STATUS_E_FAILURE;
34664 }
34665 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34666
34667 /*-----------------------------------------------------------------------
34668 Get message buffer
34669 -----------------------------------------------------------------------*/
34670 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34671 WDI_SPOOF_MAC_ADDR_REQ,
34672 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34673 &pSendBuffer, &usDataOffset, &usSendSize))||
34674 (usSendSize < (usDataOffset +
34675 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34676 {
34677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34678 "Unable to get send buffer in Process Spoof Mac Addr Req");
34679 WDI_ASSERT(0);
34680 return WDI_STATUS_E_FAILURE;
34681 }
34682
34683 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34684 wdiSpoofMacAddr->macAddr,
34685 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34686
34687 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34688
34689 wpalMemoryCopy( pSendBuffer+usDataOffset,
34690 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34691 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34692
34693 /*-------------------------------------------------------------------------
34694 Send Suspend Request to HAL
34695 -------------------------------------------------------------------------*/
34696 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34697 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34698
34699 return wdiStatus;
34700}
34701
34702/**
34703 @brief Process Spoof Mac Address Rsp function
34704 (called when a response is being received over the bus from HAL)
34705
34706 @param pWDICtx: pointer to the WLAN DAL context
34707 pEventData: pointer to the event information structure
34708
34709 @see
34710 @return Result of the function call
34711*/
34712WDI_Status
34713WDI_ProcessSpoofMacAddrRsp
34714(
34715 WDI_ControlBlockType* pWDICtx,
34716 WDI_EventInfoType* pEventData
34717)
34718{
34719 tMacSpoofedScanResp halRsp;
34720 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34721 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34722
34723 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34724 "%s: %d Enter",__func__, __LINE__);
34725
34726 /*-------------------------------------------------------------------------
34727 Sanity check
34728 -------------------------------------------------------------------------*/
34729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34730 ( NULL == pEventData->pEventData))
34731 {
34732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34733 "%s: Invalid parameters", __func__);
34734 WDI_ASSERT(0);
34735 return WDI_STATUS_E_FAILURE;
34736 }
34737 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34738
34739 /*-------------------------------------------------------------------------
34740 Extract response and send it to UMAC
34741 -------------------------------------------------------------------------*/
34742 wpalMemoryCopy( &halRsp,
34743 pEventData->pEventData, sizeof(halRsp));
34744
34745 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34746
34747 /*Notify UMAC*/
34748 wdiSpoofMacAddrRspCb(
34749 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34750
34751 return WDI_STATUS_SUCCESS;
34752}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034753
34754/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034755 @brief Process Get Frame Log Rsp function
34756 (called when a response is being received over the bus from HAL)
34757
34758 @param pWDICtx: pointer to the WLAN DAL context
34759 pEventData: pointer to the event information structure
34760
34761 @see
34762 @return Result of the function call
34763*/
34764WDI_Status
34765WDI_ProcessGetFrameLogRsp
34766(
34767 WDI_ControlBlockType* pWDICtx,
34768 WDI_EventInfoType* pEventData
34769)
34770{
34771 tGetFrameLogResp halRsp;
34772 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34773 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34774
34775 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34776 "%s: %d Enter",__func__, __LINE__);
34777
34778 /*-------------------------------------------------------------------------
34779 Sanity check
34780 -------------------------------------------------------------------------*/
34781 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34782 ( NULL == pEventData->pEventData))
34783 {
34784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34785 "%s: Invalid parameters", __func__);
34786 WDI_ASSERT(0);
34787 return WDI_STATUS_E_FAILURE;
34788 }
34789
34790 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34791
34792 /*-------------------------------------------------------------------------
34793 Extract response and send it to UMAC
34794 -------------------------------------------------------------------------*/
34795 wpalMemoryCopy( &halRsp,
34796 pEventData->pEventData, sizeof(halRsp));
34797
34798 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34799
34800 /*Notify UMAC*/
34801 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34802
34803 return WDI_STATUS_SUCCESS;
34804}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053034805
34806/**
34807 @brief Process RssiMonitorStartReq Request
34808
34809 @param pWDICtx: pointer to the WLAN DAL context
34810 pEventData: pointer to the event information structure
34811
34812 @see
34813 @return Result of the function call
34814*/
34815WDI_Status
34816WDI_ProcessRssiMonitorStartReq
34817(
34818 WDI_ControlBlockType* pWDICtx,
34819 WDI_EventInfoType* pEventData
34820)
34821{
34822 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
34823 wpt_uint8* pSendBuffer = NULL;
34824 wpt_uint16 usDataOffset = 0;
34825 wpt_uint16 usSendSize = 0;
34826 WDI_Status wdiStatus;
34827 tHalStartRssimonitoringReq halStartRssiMonitorReq;
34828 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
34829
34830
34831 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34832 "%s: %d Enter",__func__, __LINE__);
34833
34834 /*-------------------------------------------------------------------------
34835 Sanity check
34836 ------------------------------------------------------------------------*/
34837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34838 ( NULL == pEventData->pEventData))
34839 {
34840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34841 "%s: Invalid parameters", __func__);
34842 WDI_ASSERT(0);
34843 return WDI_STATUS_E_FAILURE;
34844 }
34845
34846 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34847
34848 /*-----------------------------------------------------------------------
34849 Get message buffer
34850 -----------------------------------------------------------------------*/
34851 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34852 WDI_START_RSSI_MONITOR_REQ,
34853 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
34854 &pSendBuffer, &usDataOffset, &usSendSize))||
34855 (usSendSize < (usDataOffset +
34856 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
34857 {
34858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34859 "Unable to get send buffer in GetFrameLog Req");
34860 WDI_ASSERT(0);
34861 return WDI_STATUS_E_FAILURE;
34862 }
34863
34864 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
34865 wdiRssiMonitorStartReq->requestId;
34866
34867 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
34868 wdiRssiMonitorStartReq->minRssi;
34869
34870 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
34871 wdiRssiMonitorStartReq->maxRssi;
34872 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
34873 &(wdiRssiMonitorStartReq->currentBssId),
34874 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
34875
34876 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
34877
34878 wpalMemoryCopy(pSendBuffer+usDataOffset,
34879 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
34880 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
34881
34882 /*-------------------------------------------------------------------------
34883 Send Suspend Request to HAL
34884 ------------------------------------------------------------------------*/
34885 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34886 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
34887
34888 return wdiStatus;
34889}
34890
34891
34892/**
34893 @brief Process FWLoggingInit Request
34894
34895 @param pWDICtx: pointer to the WLAN DAL context
34896 pEventData: pointer to the event information structure
34897
34898 @see
34899 @return Result of the function call
34900*/
34901WDI_Status
34902WDI_ProcessRssiMonitorStopReq
34903(
34904 WDI_ControlBlockType* pWDICtx,
34905 WDI_EventInfoType* pEventData
34906)
34907{
34908 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
34909 wpt_uint8* pSendBuffer = NULL;
34910 wpt_uint16 usDataOffset = 0;
34911 wpt_uint16 usSendSize = 0;
34912 WDI_Status wdiStatus;
34913 tHalStopRssimonitoringReq halStopRssiMonitorReq;
34914 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
34915
34916
34917 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34918 "%s: %d Enter",__func__, __LINE__);
34919
34920 /*-------------------------------------------------------------------------
34921 Sanity check
34922 ------------------------------------------------------------------------*/
34923 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34924 ( NULL == pEventData->pEventData))
34925 {
34926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34927 "%s: Invalid parameters", __func__);
34928 WDI_ASSERT(0);
34929 return WDI_STATUS_E_FAILURE;
34930 }
34931 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34932
34933 /*-----------------------------------------------------------------------
34934 Get message buffer
34935 -----------------------------------------------------------------------*/
34936 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34937 WDI_STOP_RSSI_MONITOR_REQ,
34938 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
34939 &pSendBuffer, &usDataOffset, &usSendSize))||
34940 (usSendSize < (usDataOffset +
34941 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
34942 {
34943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34944 "Unable to get send buffer in GetFrameLog Req");
34945 WDI_ASSERT(0);
34946 return WDI_STATUS_E_FAILURE;
34947 }
34948
34949 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
34950 wdiRssiMonitorStopReq->requestId;
34951
34952 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
34953 &(wdiRssiMonitorStopReq->currentBssId),
34954 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
34955
34956 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
34957
34958 wpalMemoryCopy(pSendBuffer+usDataOffset,
34959 &halStopRssiMonitorReq.stopRssiMonitoringParams,
34960 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
34961
34962 /*-------------------------------------------------------------------------
34963 Send Suspend Request to HAL
34964 ------------------------------------------------------------------------*/
34965 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34966 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
34967
34968 return wdiStatus;
34969}
34970
34971/**
34972 @brief Process MgmtFrame Logging Init Rsp function
34973 (called when a response is being received over the bus from HAL)
34974
34975 @param pWDICtx: pointer to the WLAN DAL context
34976 pEventData: pointer to the event information structure
34977
34978 @see
34979 @return Result of the function call
34980*/
34981WDI_Status
34982WDI_ProcessRssiMonitorStopRsp
34983(
34984 WDI_ControlBlockType* pWDICtx,
34985 WDI_EventInfoType* pEventData
34986)
34987{
34988 tHalStopRssimonitoringRspParams halRsp;
34989 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
34990 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
34991
34992 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34993 "%s: %d Enter",__func__, __LINE__);
34994
34995 /*-------------------------------------------------------------------------
34996 Sanity check
34997 -------------------------------------------------------------------------*/
34998 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34999 ( NULL == pEventData->pEventData))
35000 {
35001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35002 "%s: Invalid parameters", __func__);
35003 WDI_ASSERT(0);
35004 return WDI_STATUS_E_FAILURE;
35005 }
35006 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35007
35008 /*-------------------------------------------------------------------------
35009 Extract response and send it to UMAC
35010 -------------------------------------------------------------------------*/
35011 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35012
35013 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35014
35015 /*Notify UMAC*/
35016 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
35017
35018 return WDI_STATUS_SUCCESS;
35019}
35020
35021
35022/**
35023 @brief Process MgmtFrame Logging Init Rsp function
35024 (called when a response is being received over the bus from HAL)
35025
35026 @param pWDICtx: pointer to the WLAN DAL context
35027 pEventData: pointer to the event information structure
35028
35029 @see
35030 @return Result of the function call
35031*/
35032WDI_Status
35033WDI_ProcessRssiMonitorStartRsp
35034(
35035 WDI_ControlBlockType* pWDICtx,
35036 WDI_EventInfoType* pEventData
35037)
35038{
35039 tHalStartRssimonitoringRspParams halRsp;
35040 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
35041 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
35042
35043 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35044 "%s: %d Enter",__func__, __LINE__);
35045
35046 /*-------------------------------------------------------------------------
35047 Sanity check
35048 -------------------------------------------------------------------------*/
35049 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35050 ( NULL == pEventData->pEventData))
35051 {
35052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35053 "%s: Invalid parameters", __func__);
35054 WDI_ASSERT(0);
35055 return WDI_STATUS_E_FAILURE;
35056 }
35057 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35058
35059 /*-------------------------------------------------------------------------
35060 Extract response and send it to UMAC
35061 -------------------------------------------------------------------------*/
35062 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35063
35064 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35065
35066 /*Notify UMAC*/
35067 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
35068
35069 return WDI_STATUS_SUCCESS;
35070}
35071
Siddharth Bhal64246172015-02-27 01:04:37 +053035072/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035073 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053035074
35075 @param pWDICtx: pointer to the WLAN DAL context
35076 pEventData: pointer to the event information structure
35077
35078 @see
35079 @return Result of the function call
35080*/
35081WDI_Status
35082WDI_ProcessGetFrameLogReq
35083(
35084 WDI_ControlBlockType* pWDICtx,
35085 WDI_EventInfoType* pEventData
35086)
35087{
35088 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
35089 wpt_uint8* pSendBuffer = NULL;
35090 wpt_uint16 usDataOffset = 0;
35091 wpt_uint16 usSendSize = 0;
35092 WDI_Status wdiStatus;
35093 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035094 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053035095
35096
35097 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35098 "%s: %d Enter",__func__, __LINE__);
35099
35100 /*-------------------------------------------------------------------------
35101 Sanity check
35102 ------------------------------------------------------------------------*/
35103 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35104 ( NULL == pEventData->pEventData))
35105 {
35106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35107 "%s: Invalid parameters", __func__);
35108 WDI_ASSERT(0);
35109 return WDI_STATUS_E_FAILURE;
35110 }
35111
35112 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
35113
35114 /*-----------------------------------------------------------------------
35115 Get message buffer
35116 -----------------------------------------------------------------------*/
35117 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35118 WDI_GET_FRAME_LOG_REQ,
35119 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
35120 &pSendBuffer, &usDataOffset, &usSendSize))||
35121 (usSendSize < (usDataOffset +
35122 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
35123 {
35124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35125 "Unable to get send buffer in GetFrameLog Req");
35126 WDI_ASSERT(0);
35127 return WDI_STATUS_E_FAILURE;
35128 }
35129
35130 halGetFrameLogReq.tGetFrameLogReqParams.flags =
35131 wdiGetFrameLogReq->flags;
35132
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035133 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053035134
35135 wpalMemoryCopy( pSendBuffer+usDataOffset,
35136 &halGetFrameLogReq.tGetFrameLogReqParams,
35137 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
35138
35139 /*-------------------------------------------------------------------------
35140 Send Suspend Request to HAL
35141 ------------------------------------------------------------------------*/
35142 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35143 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
35144
35145 return wdiStatus;
35146}
35147/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035148 @brief Process MgmtFrame Logging Init Rsp function
35149 (called when a response is being received over the bus from HAL)
35150
35151 @param pWDICtx: pointer to the WLAN DAL context
35152 pEventData: pointer to the event information structure
35153
35154 @see
35155 @return Result of the function call
35156*/
35157WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035158WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035159(
35160 WDI_ControlBlockType* pWDICtx,
35161 WDI_EventInfoType* pEventData
35162)
35163{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035164 tFWLoggingInitResp halRsp;
35165 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
35166 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035167
35168 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35169 "%s: %d Enter",__func__, __LINE__);
35170
35171 /*-------------------------------------------------------------------------
35172 Sanity check
35173 -------------------------------------------------------------------------*/
35174 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35175 ( NULL == pEventData->pEventData))
35176 {
35177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35178 "%s: Invalid parameters", __func__);
35179 WDI_ASSERT(0);
35180 return WDI_STATUS_E_FAILURE;
35181 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035182 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035183
35184 /*-------------------------------------------------------------------------
35185 Extract response and send it to UMAC
35186 -------------------------------------------------------------------------*/
35187 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35188
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035189 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053035190 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035191
35192 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035193 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035194
35195 return WDI_STATUS_SUCCESS;
35196}
35197
c_manjeecfd1efb2015-09-25 19:32:34 +053035198/**
35199 @brief Process Fwr Mem Dump Rsp function
35200 (called when a response is being received over the bus from HAL)
35201
35202 @param pWDICtx: pointer to the WLAN DAL context
35203 pEventData: pointer to the event information structure
35204
35205 @see
35206 @return Result of the function call
35207*/
35208WDI_Status
35209 WDI_ProcessFwrMemDumpRsp
35210
35211(
35212 WDI_ControlBlockType* pWDICtx,
35213 WDI_EventInfoType* pEventData
35214)
35215{
35216 tHalFwMemoryDumpRespMsg halRsp;
35217 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35218 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
35219
35220 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35221 "%s: %d Enter",__func__, __LINE__);
35222
35223 /*-------------------------------------------------------------------------
35224 Sanity check
35225 -------------------------------------------------------------------------*/
35226 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35227 ( NULL == pEventData->pEventData))
35228 {
35229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35230 "%s: Invalid parameters", __func__);
35231 WDI_ASSERT(0);
35232 return WDI_STATUS_E_FAILURE;
35233 }
35234 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
35235
35236 /*-------------------------------------------------------------------------
35237 Extract response and send it to UMAC
35238 -------------------------------------------------------------------------*/
35239 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp));
35240
35241 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
35242
35243 /*Notify UMAC*/
35244 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
35245
35246 return WDI_STATUS_SUCCESS;
35247}
35248
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035249WDI_Status
35250WDI_ProcessFWLoggingDXEdoneInd
35251(
35252 WDI_ControlBlockType* pWDICtx,
35253 WDI_EventInfoType* pEventData
35254)
35255{
35256 wpt_uint8* pSendBuffer = NULL;
35257 wpt_uint16 usDataOffset = 0;
35258 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035259 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053035260 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035261 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035262 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035263
35264
35265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35266
35267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35268 "%s", __func__);
35269
35270 /*-------------------------------------------------------------------------
35271 Sanity check
35272 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035273 if (NULL == pEventData ||
35274 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035275 {
35276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35277 "%s: Invalid parameters", __func__);
35278 WDI_ASSERT(0);
35279 return WDI_STATUS_E_FAILURE;
35280 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035281 pLogType = (wpt_uint32 *)pEventData->pEventData;
35282
Mihir Shete5affadc2015-05-29 20:54:57 +053035283 pLoggingSession = (WDI_DS_LoggingSessionType *)
35284 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
35285 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035286 /*-----------------------------------------------------------------------
35287 Get message buffer
35288 -----------------------------------------------------------------------*/
35289
35290 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35291 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053035292 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035293 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053035294 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035295 {
35296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35297 "Unable to get send buffer in RTS CTS ind %p ",
35298 pEventData);
35299 WDI_ASSERT(0);
35300 return WDI_STATUS_E_FAILURE;
35301 }
35302 FWLoggingDxeDoneIndParams =
35303 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
35304
35305 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053035306 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035307 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053035308
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053035309 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035310 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053035311
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035312 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053035313 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035314 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
35315
35316 pWDICtx->pReqStatusUserData = NULL;
35317 pWDICtx->pfncRspCB = NULL;
35318 /*-------------------------------------------------------------------------
35319 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
35320 -------------------------------------------------------------------------*/
35321 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35322 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35323}
35324
Sachin Ahuja715aafc2015-07-21 23:35:10 +053035325
35326/**
35327 @brief Process Fatal Event Logs Rsp function
35328 (called when a response is being received over the bus from HAL)
35329
35330 @param pWDICtx: pointer to the WLAN DAL context
35331 pEventData: pointer to the event information structure
35332
35333 @see
35334 @return Result of the function call
35335*/
35336WDI_Status
35337WDI_ProcessFatalEventLogsRsp
35338(
35339 WDI_ControlBlockType* pWDICtx,
35340 WDI_EventInfoType* pEventData
35341)
35342{
35343 tHalFatalEventLoggingRspParams halRsp;
35344 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35345 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
35346
35347 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35348 "%s: %d Enter",__func__, __LINE__);
35349
35350 /*-------------------------------------------------------------------------
35351 Sanity check
35352 -------------------------------------------------------------------------*/
35353 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35354 ( NULL == pEventData->pEventData))
35355 {
35356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35357 "%s: Invalid parameters", __func__);
35358 WDI_ASSERT(0);
35359 return WDI_STATUS_E_FAILURE;
35360 }
35361 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
35362
35363 /*-------------------------------------------------------------------------
35364 Extract response and send it to UMAC
35365 -------------------------------------------------------------------------*/
35366 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35367
35368 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
35369
35370 /*Notify UMAC*/
35371 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
35372 pWDICtx->pRspCBUserData);
35373
35374 return WDI_STATUS_SUCCESS;
35375}
35376
35377/**
35378 @brief Process FatalEventLogs Request
35379
35380 @param pWDICtx: pointer to the WLAN DAL context
35381 pEventData: pointer to the event information structure
35382
35383 @see
35384 @return Result of the function call
35385*/
35386
35387WDI_Status
35388WDI_ProcessFatalEventLogsReq
35389
35390(
35391 WDI_ControlBlockType* pWDICtx,
35392 WDI_EventInfoType* pEventData
35393)
35394{
35395 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
35396 wpt_uint8* pSendBuffer = NULL;
35397 wpt_uint16 usDataOffset = 0;
35398 wpt_uint16 usSendSize = 0;
35399 WDI_Status wdiStatus;
35400 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
35401 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35402
35403
35404 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35405 "%s: %d Enter",__func__, __LINE__);
35406
35407 /*-------------------------------------------------------------------------
35408 Sanity check
35409 ------------------------------------------------------------------------*/
35410 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35411 ( NULL == pEventData->pEventData))
35412 {
35413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35414 "%s: Invalid parameters", __func__);
35415 WDI_ASSERT(0);
35416 return WDI_STATUS_E_FAILURE;
35417 }
35418 wdiFatalEventLogsReq =
35419 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
35420
35421 /*-----------------------------------------------------------------------
35422 Get message buffer
35423 -----------------------------------------------------------------------*/
35424 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35425 WDI_FATAL_EVENT_LOGGING_REQ,
35426 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
35427 &pSendBuffer, &usDataOffset, &usSendSize))||
35428 (usSendSize < (usDataOffset +
35429 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
35430 {
35431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35432 "Unable to get send buffer in Fatal Event Req");
35433 WDI_ASSERT(0);
35434 return WDI_STATUS_E_FAILURE;
35435 }
35436 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
35437 wdiFatalEventLogsReq->reason_code;
35438
35439 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
35440
35441 wpalMemoryCopy( pSendBuffer+usDataOffset,
35442 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
35443 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
35444
35445 /*-------------------------------------------------------------------------
35446 Send Mgmt Logging Init Request to HAL
35447 ------------------------------------------------------------------------*/
35448 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35449 wdiFatalEventLogsRspCb, pEventData->pUserData,
35450 WDI_FATAL_EVENT_LOGGING_RSP);
35451
35452 return wdiStatus;
35453
35454
35455}
35456
35457
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035458/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035459 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035460
35461 @param pWDICtx: pointer to the WLAN DAL context
35462 pEventData: pointer to the event information structure
35463
35464 @see
35465 @return Result of the function call
35466*/
35467WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035468WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035469(
35470 WDI_ControlBlockType* pWDICtx,
35471 WDI_EventInfoType* pEventData
35472)
35473{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035474 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035475 wpt_uint8* pSendBuffer = NULL;
35476 wpt_uint16 usDataOffset = 0;
35477 wpt_uint16 usSendSize = 0;
35478 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035479 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
35480 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035481
35482
35483 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35484 "%s: %d Enter",__func__, __LINE__);
35485
35486 /*-------------------------------------------------------------------------
35487 Sanity check
35488 ------------------------------------------------------------------------*/
35489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35490 ( NULL == pEventData->pEventData))
35491 {
35492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35493 "%s: Invalid parameters", __func__);
35494 WDI_ASSERT(0);
35495 return WDI_STATUS_E_FAILURE;
35496 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035497 wdiFWLoggingInitReq =
35498 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035499
35500 /*-----------------------------------------------------------------------
35501 Get message buffer
35502 -----------------------------------------------------------------------*/
35503 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035504 WDI_FW_LOGGING_INIT_REQ,
35505 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035506 &pSendBuffer, &usDataOffset, &usSendSize))||
35507 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035508 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035509 {
35510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35511 "Unable to get send buffer in Process Mgmt Logging Init Req");
35512 WDI_ASSERT(0);
35513 return WDI_STATUS_E_FAILURE;
35514 }
35515
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035516 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
35517 wdiFWLoggingInitReq->enableFlag;
35518 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
35519 wdiFWLoggingInitReq->frameSize;
35520 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
35521 wdiFWLoggingInitReq->frameType;
35522 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
35523 wdiFWLoggingInitReq->bufferMode;
35524 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
35525 wdiFWLoggingInitReq->continuousFrameLogging;
35526 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
35527 wdiFWLoggingInitReq->minLogBufferSize;
35528 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
35529 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053035530 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
35531 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
35532 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
35533 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035534
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035535 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035536
35537 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035538 &halFWLoggingInitReq.tFWLoggingInitReqParams,
35539 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035540
35541 /*-------------------------------------------------------------------------
35542 Send Mgmt Logging Init Request to HAL
35543 ------------------------------------------------------------------------*/
35544 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035545 wdiFWLoggingInitRspCb, pEventData->pUserData,
35546 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035547
35548 return wdiStatus;
35549}
35550
35551/**
c_manjeecfd1efb2015-09-25 19:32:34 +053035552 @brief Process FwrMemDumpReq Request
35553
35554 @param pWDICtx: pointer to the WLAN DAL context
35555 pEventData: pointer to the event information structure
35556
35557 @see
35558 @return Result of the function call
35559*/
35560WDI_Status
35561 WDI_ProcessFwrMemDumpReq
35562
35563(
35564 WDI_ControlBlockType* pWDICtx,
35565 WDI_EventInfoType* pEventData
35566)
35567{
35568 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
35569 wpt_uint8* pSendBuffer = NULL;
35570 wpt_uint16 usDataOffset = 0;
35571 wpt_uint16 usSendSize = 0;
35572 WDI_Status wdiStatus;
35573 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
35574 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35575
35576 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35577 "%s: %d Enter",__func__, __LINE__);
35578
35579 /*-------------------------------------------------------------------------
35580 Sanity check
35581 ------------------------------------------------------------------------*/
35582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35583 ( NULL == pEventData->pEventData))
35584 {
35585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35586 "%s: Invalid parameters", __func__);
35587 WDI_ASSERT(0);
35588 return WDI_STATUS_E_FAILURE;
35589 }
35590
35591 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
35592
35593 /*-----------------------------------------------------------------------
35594 Get message buffer
35595 -----------------------------------------------------------------------*/
35596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35597 WDI_FWR_MEM_DUMP_REQ,
35598 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
35599 &pSendBuffer, &usDataOffset, &usSendSize))||
35600 (usSendSize < (usDataOffset +
35601 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
35602 {
35603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35604 "Unable to get send buffer in Process Fwr Mem Dump Req");
35605 WDI_ASSERT(0);
35606 return WDI_STATUS_E_FAILURE;
35607 }
35608
35609 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
35610 wpalMemoryCopy( pSendBuffer+usDataOffset,
35611 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
35612 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
35613
35614 /*-------------------------------------------------------------------------
35615 Send Fwr Mem Dump Request to HAL
35616 ------------------------------------------------------------------------*/
35617 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35618 wdiFwrMemDumpRspCb, pEventData->pUserData,
35619 WDI_FWR_MEM_DUMP_RSP);
35620 return wdiStatus;
35621}
35622
35623/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053035624 @brief WDI_EncryptMsgReq
35625
35626 @param pwdiEncryptMsgParams: Req parameter for the FW
35627 wdiEncryptMsgCbRsp: callback for passing back the response
35628 of the Req operation received from the device
35629 pUserData: user data will be passed back with the callback
35630
35631 @return SUCCESS or FAIL
35632*/
35633WDI_Status
35634WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
35635 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
35636 void* pUserData)
35637{
35638 WDI_EventInfoType wdiEventData;
35639
35640 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35641 "%s: %d Enter" ,__func__, __LINE__);
35642 /*------------------------------------------------------------------------
35643 Sanity Check
35644 ------------------------------------------------------------------------*/
35645 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35646 {
35647 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35648 "WDI API call before module is initialized - Fail request");
35649
35650 return WDI_STATUS_E_NOT_ALLOWED;
35651 }
35652
35653 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
35654 wdiEventData.pEventData = pwdiEncryptMsgParams;
35655 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
35656 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
35657 wdiEventData.pUserData = pUserData;
35658
35659 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35660}
35661
35662/*
35663 * FUNCTION: WDI_ProcessEncryptMsgReq
35664 * Request to WDI to encrypt the given message.
35665 *
35666 * @param pWDICtx: pointer to the WLAN DAL context
35667 * pEventData: pointer to the event information structure
35668 *
35669 * @return Result of the function call
35670 */
35671
35672WDI_Status
35673WDI_ProcessEncryptMsgReq
35674(
35675 WDI_ControlBlockType* pWDICtx,
35676 WDI_EventInfoType* pEventData
35677)
35678{
35679 wpt_uint8* pSendBuffer = NULL;
35680 wpt_uint16 usDataOffset = 0;
35681 wpt_uint16 usSendSize = 0;
35682 WDI_EncryptMsgRspCb* wdiEncMsgCb;
35683 tSetEncryptedDataParams *pHalEncryptDataReq;
35684 wpt_pkt80211 *pkt = NULL;
35685
35686 /*-------------------------------------------------------------------------
35687 Sanity check
35688 -------------------------------------------------------------------------*/
35689 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
35690 ( NULL == pEventData->pCBfnc ) )
35691 {
35692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35693 "%s: Invalid parameters", __func__);
35694 WDI_ASSERT(0);
35695 return WDI_STATUS_E_FAILURE;
35696 }
35697
35698 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
35699
35700 /*-----------------------------------------------------------------------
35701 Get message buffer
35702 -----------------------------------------------------------------------*/
35703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35704 pWDICtx, WDI_ENCRYPT_MSG_REQ,
35705 sizeof(tSetEncryptedDataReqMsg),
35706 &pSendBuffer, &usDataOffset, &usSendSize)) ||
35707 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
35708 {
35709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35710 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
35711 pEventData);
35712 WDI_ASSERT(0);
35713 return WDI_STATUS_E_FAILURE;
35714 }
35715
35716 pWDICtx->wdiReqStatusCB = NULL;
35717 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35718 pkt = (wpt_pkt80211 *)pEventData->pEventData;
35719
35720 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
35721 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
35722
35723 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
35724
35725 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
35726 pkt->encParams.keyParams.key[0].keyId;
35727
35728 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
35729 &pkt->encParams.keyParams.key[0].key[0], 16);
35730
35731 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
35732
35733 pHalEncryptDataReq->data.length = pkt->data.length;
35734 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
35735
35736 /*-------------------------------------------------------------------------
35737 Send Get STA Request to HAL
35738 -------------------------------------------------------------------------*/
35739 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
35740 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
35741}
35742
35743/*
35744 * FUNCTION: WDI_ProcessEncryptMsgRsp
35745 * Receives the encrypted message from the firmware
35746 * @param pWDICtx: pointer to the WLAN DAL context
35747 * pEventData: pointer to the event information structure
35748 *
35749 * @return Result of the function call
35750 */
35751WDI_Status
35752WDI_ProcessEncryptMsgRsp
35753(
35754 WDI_ControlBlockType* pWDICtx,
35755 WDI_EventInfoType* pEventData
35756)
35757{
35758 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
35759 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
35760
35761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35762 "In %s",__func__);
35763
35764 /*-------------------------------------------------------------------------
35765 Sanity check
35766 -------------------------------------------------------------------------*/
35767 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35768 ( NULL == pEventData->pEventData))
35769 {
35770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35771 "%s: Invalid parameters", __func__);
35772 WDI_ASSERT(0);
35773 return WDI_STATUS_E_FAILURE;
35774 }
35775
35776 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35777
35778 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35779
35780 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35781 pEventData->pEventData,
35782 pWDICtx->pRspCBUserData);
35783 return WDI_STATUS_SUCCESS;
35784}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035785
35786WDI_Status
35787WDI_NanRequest
35788(
35789 WDI_NanRequestType *pwdiNanRequest,
35790 void *usrData
35791)
35792{
35793 WDI_EventInfoType wdiEventData;
35794
35795 /*------------------------------------------------------------------------
35796 Sanity Check
35797 ------------------------------------------------------------------------*/
35798 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35799 {
35800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35801 "WDI API call before module is initialized - Fail request");
35802
35803 return WDI_STATUS_E_NOT_ALLOWED;
35804 }
35805
35806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35807 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35808 pwdiNanRequest->request_data_len);
35809
35810 /*------------------------------------------------------------------------
35811 Fill in Event data and post to the Main FSM
35812 ------------------------------------------------------------------------*/
35813 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35814 wdiEventData.pEventData = pwdiNanRequest;
35815 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35816 + pwdiNanRequest->request_data_len;
35817 wdiEventData.pUserData = usrData;
35818 wdiEventData.pCBfnc = NULL;
35819
35820
35821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35822}
35823
35824WDI_Status
35825WDI_ProcessNanRequest
35826(
35827 WDI_ControlBlockType* pWDICtx,
35828 WDI_EventInfoType* pEventData
35829)
35830{
35831 WDI_NanRequestType *pwdiNanRequest = NULL;
35832 wpt_uint8* pSendBuffer = NULL;
35833 wpt_uint16 usDataOffset = 0;
35834 wpt_uint16 usSendSize = 0;
35835
35836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35837 "WDI_ProcessNanRequest");
35838
35839 /*-------------------------------------------------------------------------
35840 Sanity check
35841 -------------------------------------------------------------------------*/
35842 if (( NULL == pEventData ) ||
35843 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35844 {
35845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35846 "%s: Invalid parameters", __FUNCTION__);
35847 WDI_ASSERT(0);
35848 return WDI_STATUS_E_FAILURE;
35849 }
35850
35851 /*-----------------------------------------------------------------------
35852 Get message buffer
35853 -----------------------------------------------------------------------*/
35854 if (( WDI_STATUS_SUCCESS
35855 != WDI_GetMessageBuffer( pWDICtx,
35856 WDI_NAN_REQUEST,
35857 pwdiNanRequest->request_data_len,
35858 &pSendBuffer,
35859 &usDataOffset,
35860 &usSendSize))||
35861 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35862 {
35863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35864 "Unable to get send buffer in NAN request %p %p",
35865 pEventData, pwdiNanRequest);
35866 WDI_ASSERT(0);
35867 return WDI_STATUS_E_FAILURE;
35868 }
35869
35870 wpalMemoryCopy( pSendBuffer+usDataOffset,
35871 pwdiNanRequest->request_data,
35872 pwdiNanRequest->request_data_len);
35873
35874 pWDICtx->pReqStatusUserData = NULL;
35875 pWDICtx->pfncRspCB = NULL;
35876 vos_mem_free( pEventData->pUserData);
35877
35878 /*-------------------------------------------------------------------------
35879 Send NAN Request to HAL
35880 -------------------------------------------------------------------------*/
35881 return WDI_SendMsg( pWDICtx,
35882 pSendBuffer,
35883 usSendSize,
35884 NULL,
35885 NULL,
35886 WDI_NAN_RESPONSE);
35887}
35888
35889/**
35890 @brief Process NAN Response function (called when a
35891 response is being received over the bus from HAL)
35892
35893 @param pWDICtx: pointer to the WLAN DAL context
35894 pEventData: pointer to the event information structure
35895
35896 @see
35897 @return Result of the function call
35898*/
35899WDI_Status
35900WDI_ProcessNanResponse
35901(
35902 WDI_ControlBlockType* pWDICtx,
35903 WDI_EventInfoType* pEventData
35904)
35905{
35906 WDI_Status wdiStatus;
35907 eHalStatus halStatus;
35908
35909 /*-------------------------------------------------------------------------
35910 Sanity check
35911 -------------------------------------------------------------------------*/
35912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35913 ( NULL == pEventData->pEventData))
35914 {
35915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35916 "%s: Invalid parameters", __func__);
35917 WDI_ASSERT(0);
35918 return WDI_STATUS_E_FAILURE;
35919 }
35920
35921 halStatus = *((eHalStatus*)pEventData->pEventData);
35922 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
35923
35924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35925 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
35926
35927 return WDI_STATUS_SUCCESS;
35928}/*WDI_ProcessNanResponse*/
35929
35930
35931/**
35932 @brief Process NAN Event function (called when
35933 an indication is being received over the
35934 bus from HAL)
35935
35936 @param pWDICtx: pointer to the WLAN DAL context
35937 pEventData: pointer to the event information structure
35938
35939 @see
35940 @return Result of the function call
35941*/
35942WDI_Status
35943WDI_ProcessNanEvent
35944(
35945 WDI_ControlBlockType* pWDICtx,
35946 WDI_EventInfoType* pEventData
35947)
35948{
35949 WDI_LowLevelIndType wdiInd;
35950
35951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35952
35953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35954 ( NULL == pEventData->pEventData ))
35955 {
35956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35957 "%s: Invalid parameters", __func__);
35958 WDI_ASSERT( 0 );
35959 return WDI_STATUS_E_FAILURE;
35960 }
35961
35962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35963 "%s: Received NAN event", __func__);
35964 /*-------------------------------------------------------------------------
35965 Extract indication and send it to UMAC
35966 -------------------------------------------------------------------------*/
35967 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
35968 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
35969 pEventData->uEventDataSize;
35970 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
35971 pEventData->pEventData;
35972
35973 /*Notify UMAC*/
35974 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
35975
35976 return WDI_STATUS_SUCCESS;
35977}/*WDI_ProcessNanEvent*/
35978
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053035979
Gupta, Kapil7c34b322015-09-30 13:12:35 +053035980WDI_Status
35981WDI_Process_RssiBreachedInd
35982(
35983 WDI_ControlBlockType* pWDICtx,
35984 WDI_EventInfoType* pEventData
35985)
35986{
35987 WDI_LowLevelIndType wdiInd;
35988 tHalRssiMonitorIndParams halRssiBreachedInd;
35989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35990
35991 /*-------------------------------------------------------------------------
35992 Sanity check
35993 -------------------------------------------------------------------------*/
35994 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35995 ( NULL == pEventData->pEventData))
35996 {
35997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35998 "%s: Invalid parameters", __func__);
35999 WDI_ASSERT(0);
36000 return WDI_STATUS_E_FAILURE;
36001 }
36002
36003 /*-------------------------------------------------------------------------
36004 Extract indication and send it to UMAC
36005 -------------------------------------------------------------------------*/
36006 wpalMemoryCopy( &halRssiBreachedInd,
36007 pEventData->pEventData,
36008 sizeof(halRssiBreachedInd));
36009
36010
36011 /*Fill in the indication parameters*/
36012 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
36013 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiRssiBreachedInd,
36014 (void *)&halRssiBreachedInd,
36015 sizeof(WDI_RssiBreachedIndType));
36016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36017 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
36018 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
36019 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
36020 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
36021 /*Notify UMAC*/
36022 if (pWDICtx->wdiLowLevelIndCB)
36023 {
36024 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36025 }
36026
36027 return WDI_STATUS_SUCCESS;
36028
36029}
36030
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036031
36032WDI_Status
36033WDI_Process_LostLinkParamInd
36034(
36035 WDI_ControlBlockType* pWDICtx,
36036 WDI_EventInfoType* pEventData
36037)
36038{
36039 WDI_LowLevelIndType wdiInd;
36040 tHalLostLinkParametersIndParams halLostLinkParamInd;
36041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36042
36043 /*-------------------------------------------------------------------------
36044 Sanity check
36045 -------------------------------------------------------------------------*/
36046 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36047 ( NULL == pEventData->pEventData))
36048 {
36049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36050 "%s: Invalid parameters", __func__);
36051 WDI_ASSERT(0);
36052 return WDI_STATUS_E_FAILURE;
36053 }
36054
36055 /*-------------------------------------------------------------------------
36056 Extract indication and send it to UMAC
36057 -------------------------------------------------------------------------*/
36058 wpalMemoryCopy( (void *)&halLostLinkParamInd,
36059 pEventData->pEventData,
36060 sizeof(tHalLostLinkParametersIndParams));
36061
36062
36063 /*Fill in the indication parameters*/
36064 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
36065 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
36066 (void *)&halLostLinkParamInd,
36067 sizeof(WDI_LostLinkParamsIndType));
36068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36069 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
36070 "linkFlTx : %d,lastDataRate : %d", __func__,
36071 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
36072 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
36073 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
36074 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
36075 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
36076 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
36077 /*Notify UMAC*/
36078 if (pWDICtx->wdiLowLevelIndCB)
36079 {
36080 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36081 }
36082
36083 return WDI_STATUS_SUCCESS;
36084
36085}
36086
Abhishek Singh41988ba2015-05-25 19:42:29 +053036087WDI_Status
36088WDI_ProcessSetRtsCtsHtvhtInd
36089(
36090 WDI_ControlBlockType* pWDICtx,
36091 WDI_EventInfoType* pEventData
36092)
36093{
36094 wpt_uint8* pSendBuffer = NULL;
36095 wpt_uint16 usDataOffset = 0;
36096 wpt_uint16 usSendSize = 0;
36097 wpt_uint32 *rtsCtsVal;
36098 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
36099 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36100
36101
36102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36103
36104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36105 "%s", __func__);
36106
36107 /*-------------------------------------------------------------------------
36108 Sanity check
36109 -------------------------------------------------------------------------*/
36110 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36111 {
36112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36113 "%s: Invalid parameters", __func__);
36114 WDI_ASSERT(0);
36115 return WDI_STATUS_E_FAILURE;
36116 }
36117 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
36118 /*-----------------------------------------------------------------------
36119 Get message buffer
36120 -----------------------------------------------------------------------*/
36121
36122 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36123 WDI_SET_RTS_CTS_HTVHT_IND,
36124 sizeof(tHalRtsCtsHtvhtIndParams),
36125 &pSendBuffer, &usDataOffset, &usSendSize))||
36126 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
36127 {
36128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36129 "Unable to get send buffer in RTS CTS ind %p ",
36130 pEventData);
36131 WDI_ASSERT(0);
36132 return WDI_STATUS_E_FAILURE;
36133 }
36134 rtsCtsHtvhtIndParams =
36135 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
36136 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
36137
36138 pWDICtx->pReqStatusUserData = NULL;
36139 pWDICtx->pfncRspCB = NULL;
36140 /*-------------------------------------------------------------------------
36141 Send SET_RTS_CTS_HTVHT Indication to HAL
36142 -------------------------------------------------------------------------*/
36143 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36144 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36145}
36146
36147WDI_Status
36148WDI_SetRtsCtsHTVhtInd
36149(
36150 wpt_uint32 rtsCtsVal
36151)
36152{
36153 WDI_EventInfoType wdiEventData;
36154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36155
36156 /*------------------------------------------------------------------------
36157 Sanity Check
36158 ------------------------------------------------------------------------*/
36159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36160 {
36161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36162 "WDI API call before module is initialized - Fail request");
36163 return WDI_STATUS_E_NOT_ALLOWED;
36164 }
36165
36166 /*------------------------------------------------------------------------
36167 Fill in Event data and post to the Main FSM
36168 ------------------------------------------------------------------------*/
36169 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
36170 wdiEventData.pEventData = (void *) &rtsCtsVal;
36171 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36172 wdiEventData.pCBfnc = NULL;
36173 wdiEventData.pUserData = NULL;
36174
36175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36176
36177}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053036178
36179WDI_Status
36180WDI_ProcessEnableDisableCAEventInd
36181(
36182 WDI_ControlBlockType* pWDICtx,
36183 WDI_EventInfoType* pEventData
36184)
36185{
36186 wpt_uint8* pSendBuffer = NULL;
36187 wpt_uint16 usDataOffset = 0;
36188 wpt_uint16 usSendSize = 0;
36189 wpt_uint32 *val;
36190 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
36191 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36192
36193
36194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36195
36196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36197 "%s", __func__);
36198
36199 /*-------------------------------------------------------------------------
36200 Sanity check
36201 -------------------------------------------------------------------------*/
36202 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36203 {
36204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36205 "%s: Invalid parameters", __func__);
36206 WDI_ASSERT(0);
36207 return WDI_STATUS_E_FAILURE;
36208 }
36209 val = (wpt_uint32*)pEventData->pEventData;
36210 /*-----------------------------------------------------------------------
36211 Get message buffer
36212 -----------------------------------------------------------------------*/
36213
36214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36215 WDI_SEND_FREQ_RANGE_CONTROL_IND,
36216 sizeof(tHalAvoidFreqRangeCtrlParam),
36217 &pSendBuffer, &usDataOffset, &usSendSize))||
36218 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
36219 {
36220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36221 "Unable to get send buffer in Channel Avoidance Ind %p ",
36222 pEventData);
36223 WDI_ASSERT(0);
36224 return WDI_STATUS_E_FAILURE;
36225 }
36226 avoidFreqRangeCtrlParam =
36227 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
36228 avoidFreqRangeCtrlParam->status = *val;
36229
36230 pWDICtx->pReqStatusUserData = NULL;
36231 pWDICtx->pfncRspCB = NULL;
36232 /*-------------------------------------------------------------------------
36233 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
36234 -------------------------------------------------------------------------*/
36235 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36236 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36237}
36238
36239WDI_Status
36240WDI_EnableDisableCAEventInd
36241(
36242 wpt_uint32 val
36243)
36244{
36245 WDI_EventInfoType wdiEventData;
36246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36247
36248 /*------------------------------------------------------------------------
36249 Sanity Check
36250 ------------------------------------------------------------------------*/
36251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36252 {
36253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36254 "WDI API call before module is initialized - Fail request");
36255 return WDI_STATUS_E_NOT_ALLOWED;
36256 }
36257
36258 /*------------------------------------------------------------------------
36259 Fill in Event data and post to the Main FSM
36260 ------------------------------------------------------------------------*/
36261 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
36262 wdiEventData.pEventData = (void *) &val;
36263 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36264 wdiEventData.pCBfnc = NULL;
36265 wdiEventData.pUserData = NULL;
36266
36267 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36268
36269} /* WDI_EnableDisableCAEventInd */