blob: 4644f0f2293fdc39fac0e9b9ca34fa11245c652e [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lam1ed83fc2014-02-19 01:15:45 -08002 * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
3 *
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
Kiet Lamaa8e15a2014-02-11 23:30:06 -080048 Copyright (c) 2008 QUALCOMM Incorporated.
49 All Rights Reserved.
50 Qualcomm Confidential and Proprietary
Jeff Johnson295189b2012-06-20 16:38:30 -070051===========================================================================*/
52
53/*===========================================================================
54
55 EDIT HISTORY FOR FILE
56
57
58 This section contains comments describing changes made to the module.
59 Notice that changes are listed in reverse chronological order.
60
61
62 $Header$$DateTime$$Author$
63
64
65 when who what, where, why
66---------- --- --------------------------------------------------------
6710/05/11 hap Adding support for Keep Alive
682010-08-09 lti Created module
69
70===========================================================================*/
71
72/*----------------------------------------------------------------------------
73 * Include Files
74 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070075#include "wlan_qct_wdi.h"
76#include "wlan_qct_wdi_i.h"
77#include "wlan_qct_wdi_sta.h"
78#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070079
Jeff Johnsone7245742012-09-05 17:12:55 -070080#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070081
82#include "wlan_qct_pal_api.h"
83#include "wlan_qct_pal_type.h"
84#include "wlan_qct_pal_status.h"
85#include "wlan_qct_pal_sync.h"
86#include "wlan_qct_pal_msg.h"
87#include "wlan_qct_pal_trace.h"
88#include "wlan_qct_pal_packet.h"
89
Jeff Johnsone7245742012-09-05 17:12:55 -070090#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070091
92#include "wlan_hal_msg.h"
93
Jeff Johnson295189b2012-06-20 16:38:30 -070094#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070095#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070096
97/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070098 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070099 ===========================================================================*/
100#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
101
Jeff Johnsone7245742012-09-05 17:12:55 -0700102#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
103#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
104
Yue Mad8cac142013-03-28 11:33:46 -0700105#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107#ifdef FEATURE_WLAN_SCAN_PNO
108#define WDI_PNO_VERSION_MASK 0x8000
109#endif
110
111/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700112static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700113/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700114static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700115/* array of features supported. Need to add a new feature
116 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
117 */
118static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800119 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800120#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700121 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800122#else
123 ,FEATURE_NOT_SUPPORTED
124#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800125#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700126 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800127#else
128 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800129#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700130 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800131#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700132 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800133#else
134 ,FEATURE_NOT_SUPPORTED
135#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700136 ,FEATURE_NOT_SUPPORTED //9
137 ,FEATURE_NOT_SUPPORTED //10
138 ,FEATURE_NOT_SUPPORTED //11
139 ,FEATURE_NOT_SUPPORTED //12
140 ,FEATURE_NOT_SUPPORTED //13
141 ,FEATURE_NOT_SUPPORTED //14
142 ,FEATURE_NOT_SUPPORTED //15
143 ,FEATURE_NOT_SUPPORTED //16
144 ,FEATURE_NOT_SUPPORTED //17
145 ,FEATURE_NOT_SUPPORTED //18
146 ,FEATURE_NOT_SUPPORTED //19
147 ,FEATURE_NOT_SUPPORTED //20
148 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700149 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700150#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700151 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700152#else
153 ,FEATURE_NOT_SUPPORTED
154#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700155 ,FEATURE_NOT_SUPPORTED //24
156 ,FEATURE_NOT_SUPPORTED //25
157 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700158 ,FEATURE_NOT_SUPPORTED //27
159 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530160#ifdef FEATURE_WLAN_TDLS
161 ,ADVANCE_TDLS //29
162#else
163 ,FEATURE_NOT_SUPPORTED //29
164#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530165 ,FEATURE_NOT_SUPPORTED //30
166 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530167 ,EXTENDED_NSOFFLOAD_SLOT //32
168 ,CH_SWITCH_V1 //33
169 ,HT40_OBSS_SCAN //34
170 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530171 ,FEATURE_NOT_SUPPORTED //36
172 ,FEATURE_NOT_SUPPORTED //37
173 ,FEATURE_NOT_SUPPORTED //38
174#ifdef FEATURE_WLAN_TDLS
175 ,TDLS_SCAN_COEXISTENCE //39
176#else
177 ,FEATURE_NOT_SUPPORTED //39
178#endif
Dino Mycledf0a5d92014-07-04 09:41:55 +0530179#ifdef WLAN_FEATURE_LINK_LAYER_STATS
180 ,LINK_LAYER_STATS_MEAS //40
181#else
182 ,FEATURE_NOT_SUPPORTED //40
183#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +0530184 ,MU_MIMO //41
Dino Myclee8843b32014-07-04 14:21:45 +0530185#ifdef WLAN_FEATURE_EXTSCAN
186 ,EXTENDED_SCAN //42
187#else
188 ,FEATURE_NOT_SUPPORTED //42
189#endif
Mihir Shetec34258c2014-07-30 17:50:27 +0530190 ,DYNAMIC_WMM_PS //43
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800191
Siddharth Bhal171788a2014-09-29 21:02:40 +0530192 ,MAC_SPOOFED_SCAN //44
193
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530194};
Jeff Johnson295189b2012-06-20 16:38:30 -0700195
196/*--------------------------------------------------------------------------
197 WLAN DAL State Machine
198 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700199WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700200{
201 /*WDI_INIT_ST*/
202 {{
203 WDI_MainStart, /*WDI_START_EVENT*/
204 NULL, /*WDI_STOP_EVENT*/
205 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
206 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
207 WDI_MainClose, /*WDI_CLOSE_EVENT*/
208 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
209 }},
210
211 /*WDI_STARTED_ST*/
212 {{
213 WDI_MainStartStarted, /*WDI_START_EVENT*/
214 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
215 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
216 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
217 NULL, /*WDI_CLOSE_EVENT*/
218 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
219 }},
220
221 /*WDI_STOPPED_ST*/
222 {{
223 WDI_MainStart, /*WDI_START_EVENT*/
224 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
225 NULL, /*WDI_REQUEST_EVENT*/
226 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
227 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700228 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700229 }},
230
231 /*WDI_BUSY_ST*/
232 {{
233 WDI_MainStartBusy, /*WDI_START_EVENT*/
234 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
235 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
236 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
237 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
238 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
239 }}
240};
241
Jeff Johnsone7245742012-09-05 17:12:55 -0700242/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700243 DAL Request Processing Array - the functions in this table will only be
244 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700245 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700246 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700247WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700248{
249 /*INIT*/
250 WDI_ProcessStartReq, /* WDI_START_REQ */
251 WDI_ProcessStopReq, /* WDI_STOP_REQ */
252 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
253
254 /*SCAN*/
255 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
256 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
257 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
258 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
259
260 /*ASSOCIATION*/
261 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
262 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
263 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
264 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
265 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
266
267 /* Security */
268 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
269 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
270 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
271 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
272
273 /* QoS and BA APIs */
274 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
275 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
276 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
277 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
278 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
279
280 /* Miscellaneous Control APIs */
281 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
282 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
283 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
284 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
285 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
286
287 /*BA APIs*/
288 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
289 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
290
291 /*Beacon processing APIs*/
292 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
293 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
294
295 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
296 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
297 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
298 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700299 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700300 /* PowerSave APIs */
301 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
302 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
303 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
304 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
305 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
306 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
307 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
308 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
309 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
310 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
311 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
312 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
313 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
314 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
315 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
316 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
317 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
318 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
319 /*NV Download APIs*/
320 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
321 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
322 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
323#ifdef WLAN_FEATURE_VOWIFI_11R
324 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
325#else
326 NULL,
327#endif /* WLAN_FEATURE_VOWIFI_11R */
328 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
329 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700330 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700331
332#ifdef FEATURE_OEM_DATA_SUPPORT
333 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
334#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700335 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700336#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700337 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700338
339 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700340
341#ifdef FEATURE_WLAN_SCAN_PNO
342 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
343 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
344 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
345#else
346 NULL,
347 NULL,
348 NULL,
349#endif /* FEATURE_WLAN_SCAN_PNO */
350
351 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700352
Jeff Johnson295189b2012-06-20 16:38:30 -0700353#ifdef WLAN_FEATURE_PACKET_FILTERING
354 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700355 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700356 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700357 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700358 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700359 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700360 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700361 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700362#else
363 NULL,
364 NULL,
365 NULL,
366 NULL,
367#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700368 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700369 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
370 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
371
372 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800373#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700374 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
375#else
376 NULL,
377#endif
378
379#ifdef WLAN_FEATURE_GTK_OFFLOAD
380 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
381 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
382#else
383 NULL,
384 NULL,
385#endif // WLAN_FEATURE_GTK_OFFLOAD
386
387 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
388 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700389#ifdef WLAN_FEATURE_11AC
390 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800391#else
392 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700393#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800394#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800395 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
396#else
schang86c22c42013-03-13 18:41:24 -0700397 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800398#endif
schang86c22c42013-03-13 18:41:24 -0700399 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700400#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700401 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700402#else
403 NULL,
404#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530405#ifdef FEATURE_WLAN_TDLS
406 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
407#else
408 NULL,
409#endif
Leo Chang9056f462013-08-01 19:21:11 -0700410#ifdef FEATURE_WLAN_LPHB
411 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
412#else
413 NULL,
414#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530415
416#ifdef FEATURE_WLAN_BATCH_SCAN
417 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
418#else
419 NULL,
420#endif /* FEATURE_WLAN_BATCH_SCAN */
421
Arif Hussaina5ebce02013-08-09 15:09:58 -0700422 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800423
424 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530425
426 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530427
428#ifdef WLAN_FEATURE_LINK_LAYER_STATS
429 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
430 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
431 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
432#else
433 NULL,
434 NULL,
435 NULL,
436#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530437#ifdef WLAN_FEATURE_EXTSCAN
438 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
439 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
440 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
441 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
442 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
443 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
444 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
445 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
446#else
447 NULL,
448 NULL,
449 NULL,
450 NULL,
451 NULL,
452 NULL,
453 NULL,
454 NULL,
455#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530456 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
schang86c22c42013-03-13 18:41:24 -0700457 /*-------------------------------------------------------------------------
458 Indications
459 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700460 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800461 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530462 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
463 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700464#ifdef WLAN_FEATURE_11W
465 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
466#else
467 NULL,
468#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700469 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
470 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530471#ifdef FEATURE_WLAN_BATCH_SCAN
472 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
473 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
474#else
475 NULL,
476 NULL,
477#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700478 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800479
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530480 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800481 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
482
483 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530484#ifdef FEATURE_WLAN_TDLS
485 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
486#else
487 NULL,
488#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530489
Jeff Johnson295189b2012-06-20 16:38:30 -0700490};
491
492
Jeff Johnsone7245742012-09-05 17:12:55 -0700493/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700494 DAL Request Processing Array - the functions in this table will only be
495 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700496 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700497 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700498WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700499{
500 /*INIT*/
501 WDI_ProcessStartRsp, /* WDI_START_RESP */
502 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
503 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
504
505 /*SCAN*/
506 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
507 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
508 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
509 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
510
511 /* ASSOCIATION*/
512 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
513 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
514 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
515 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
516 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
517
518 /* Security */
519 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
520 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
521 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
522 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
523
524 /* QoS and BA APIs */
525 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
526 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
527 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
528 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
529 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
530
531 /* Miscellaneous Control APIs */
532 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
533 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
534 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
535 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
536 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
537
538 /* BA APIs*/
539 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
540 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700541
Jeff Johnson295189b2012-06-20 16:38:30 -0700542 /* IBSS APIs*/
543 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
544 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
545
546 /*Soft AP APIs*/
547 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
548 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
549 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
550 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
551
552 /* PowerSave APIs */
553 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
554 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
555 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
556 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
557 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
558 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
559 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
560 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
561 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
562 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
563 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
564 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
565 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
566 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
567 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
568 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
569 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
570 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700571
Jeff Johnson295189b2012-06-20 16:38:30 -0700572
573 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
574
575 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
576 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
577#ifdef WLAN_FEATURE_VOWIFI_11R
578 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
579#else
580 NULL,
581#endif /* WLAN_FEATURE_VOWIFI_11R */
582 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
583 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700584#ifdef FEATURE_OEM_DATA_SUPPORT
585 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
586#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700587 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700588#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700589 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
590
Jeff Johnson295189b2012-06-20 16:38:30 -0700591 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700592
Jeff Johnson295189b2012-06-20 16:38:30 -0700593 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700594
Jeff Johnsone7245742012-09-05 17:12:55 -0700595 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
596
Jeff Johnson295189b2012-06-20 16:38:30 -0700597#ifdef FEATURE_WLAN_SCAN_PNO
598 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
599 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
600 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
601#else
602 NULL,
603 NULL,
604 NULL,
605#endif // FEATURE_WLAN_SCAN_PNO
606
607 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
608
609 /*---------------------------------------------------------------------
610 Indications
611 ---------------------------------------------------------------------*/
612#ifdef WLAN_FEATURE_PACKET_FILTERING
613 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700614 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700615 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700616 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700618 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700619 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700620 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700621#else
622 NULL,
623 NULL,
624 NULL,
625 NULL,
626#endif // WLAN_FEATURE_PACKET_FILTERING
627
628 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
629 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
630
631 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800632#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700633 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
634#else
635 NULL,
636#endif
637
638#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700639 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
640 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700641#else
642 NULL,
643 NULL,
644#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700645 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
646 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700647#ifdef WLAN_FEATURE_11AC
648 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700649#else
650 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700651#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800652#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800653 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
654#else
655 NULL,
656#endif
schang86c22c42013-03-13 18:41:24 -0700657 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700658#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700659 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700660#else
661 NULL,
662#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530663#ifdef FEATURE_WLAN_TDLS
664 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
665#else
666 NULL,
667#endif
Leo Chang9056f462013-08-01 19:21:11 -0700668#ifdef FEATURE_WLAN_LPHB
669 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
670#else
671 NULL,
672#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530673
674#ifdef FEATURE_WLAN_BATCH_SCAN
675 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
676#else
677 NULL,
678#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800679 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530680
c_hpothu92367912014-05-01 15:18:17 +0530681 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800682
c_hpothu92367912014-05-01 15:18:17 +0530683 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
684
685 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800686
Sunil Duttbd736ed2014-05-26 21:19:41 +0530687
688#ifdef WLAN_FEATURE_LINK_LAYER_STATS
689 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
690 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
691 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
692#else
693 NULL,
694 NULL,
695 NULL,
696#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530697#ifdef WLAN_FEATURE_EXTSCAN
698 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
699 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
700 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
701 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
702 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
703 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
704 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
705 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
706#else
707 NULL,
708 NULL,
709 NULL,
710 NULL,
711 NULL,
712 NULL,
713 NULL,
714 NULL,
715#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530716 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700717 /*---------------------------------------------------------------------
718 Indications
719 ---------------------------------------------------------------------*/
720 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
721 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
722 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
723 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
724 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
725 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
726
727 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
728
729 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
730
Jeff Johnson295189b2012-06-20 16:38:30 -0700731 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700732
733#ifdef FEATURE_WLAN_SCAN_PNO
734 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
735#else
736 NULL,
737#endif // FEATURE_WLAN_SCAN_PNO
738
739#ifdef WLAN_WAKEUP_EVENTS
740 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
741#else // WLAN_WAKEUP_EVENTS
742 NULL,
743#endif // WLAN_WAKEUP_EVENTS
744
745 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800746
Viral Modid86bde22012-12-10 13:09:21 -0800747 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530748#ifdef FEATURE_WLAN_TDLS
749 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
750#else
751 NULL,
752#endif
Leo Chang9056f462013-08-01 19:21:11 -0700753
754#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700755 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700756#else
757 NULL,
758#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700759
760 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700761
762 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530763
764#ifdef FEATURE_WLAN_BATCH_SCAN
765 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
766#else
767 NULL,
768#endif
769
Leo Chang0b0e45a2013-12-15 15:18:55 -0800770#ifdef FEATURE_WLAN_CH_AVOID
771 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
772#else
773 NULL,
774#endif /* FEATURE_WLAN_CH_AVOID */
775
Sunil Duttbd736ed2014-05-26 21:19:41 +0530776 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
777#ifdef WLAN_FEATURE_LINK_LAYER_STATS
778 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
779#else
780 NULL,
781#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530782#ifdef WLAN_FEATURE_EXTSCAN
783 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
784 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
785 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
786 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
787 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
788#else
789 NULL,
790 NULL,
791 NULL,
792 NULL,
793 NULL,
794#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530795#ifdef FEATURE_WLAN_TDLS
796 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
797#else
798 NULL,
799#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530800 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700801};
802
803
Jeff Johnsone7245742012-09-05 17:12:55 -0700804/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700805 WLAN DAL Global Control Block
806 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700807WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700808static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
809
Jeff Johnsone7245742012-09-05 17:12:55 -0700810const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700811
812/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700813WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700814void* WDI_GET_PAL_CTX( void )
815{
Jeff Johnsone7245742012-09-05 17:12:55 -0700816 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700817}/*WDI_GET_PAL_CTX*/
818
Jeff Johnsone7245742012-09-05 17:12:55 -0700819/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700820 Helper inline converters
821 ============================================================================*/
822/*Convert WDI driver type into HAL driver type*/
823WPT_STATIC WPT_INLINE WDI_Status
824WDI_HAL_2_WDI_STATUS
825(
826 eHalStatus halStatus
827);
828
829/*Convert WDI request type into HAL request type*/
830WPT_STATIC WPT_INLINE tHalHostMsgType
831WDI_2_HAL_REQ_TYPE
832(
833 WDI_RequestEnumType wdiReqType
834);
835
836/*Convert WDI response type into HAL response type*/
837WPT_STATIC WPT_INLINE WDI_ResponseEnumType
838HAL_2_WDI_RSP_TYPE
839(
840 tHalHostMsgType halMsg
841);
842
843/*Convert WDI driver type into HAL driver type*/
844WPT_STATIC WPT_INLINE tDriverType
845WDI_2_HAL_DRV_TYPE
846(
847 WDI_DriverType wdiDriverType
848);
849
850/*Convert WDI stop reason into HAL stop reason*/
851WPT_STATIC WPT_INLINE tHalStopType
852WDI_2_HAL_STOP_REASON
853(
854 WDI_StopType wdiStopType
855);
856
857/*Convert WDI scan mode type into HAL scan mode type*/
858WPT_STATIC WPT_INLINE eHalSysMode
859WDI_2_HAL_SCAN_MODE
860(
861 WDI_ScanMode wdiScanMode
862);
863
864/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700865WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700866WDI_2_HAL_SEC_CH_OFFSET
867(
868 WDI_HTSecondaryChannelOffset wdiSecChOffset
869);
870
871/*Convert WDI BSS type into HAL BSS type*/
872WPT_STATIC WPT_INLINE tSirBssType
873WDI_2_HAL_BSS_TYPE
874(
875 WDI_BssType wdiBSSType
876);
877
878/*Convert WDI NW type into HAL NW type*/
879WPT_STATIC WPT_INLINE tSirNwType
880WDI_2_HAL_NW_TYPE
881(
882 WDI_NwType wdiNWType
883);
884
885/*Convert WDI chanel bonding type into HAL cb type*/
886WPT_STATIC WPT_INLINE ePhyChanBondState
887WDI_2_HAL_CB_STATE
888(
889 WDI_PhyChanBondState wdiCbState
890);
891
892/*Convert WDI chanel bonding type into HAL cb type*/
893WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
894WDI_2_HAL_HT_OPER_MODE
895(
896 WDI_HTOperatingMode wdiHTOperMode
897);
898
899/*Convert WDI mimo PS type into HAL mimo PS type*/
900WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
901WDI_2_HAL_MIMO_PS
902(
903 WDI_HTMIMOPowerSaveState wdiHTOperMode
904);
905
906/*Convert WDI ENC type into HAL ENC type*/
907WPT_STATIC WPT_INLINE tAniEdType
908WDI_2_HAL_ENC_TYPE
909(
910 WDI_EncryptType wdiEncType
911);
912
913/*Convert WDI WEP type into HAL WEP type*/
914WPT_STATIC WPT_INLINE tAniWepType
915WDI_2_HAL_WEP_TYPE
916(
917 WDI_WepType wdiWEPType
918);
919
920/*Convert WDI Link State into HAL Link State*/
921WPT_STATIC WPT_INLINE tSirLinkState
922WDI_2_HAL_LINK_STATE
923(
924 WDI_LinkStateType wdiLinkState
925);
926
Jeff Johnsone7245742012-09-05 17:12:55 -0700927/*Translate a STA Context from WDI into HAL*/
928WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700929void
930WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700931(
Jeff Johnson295189b2012-06-20 16:38:30 -0700932 tConfigStaParams* phalConfigSta,
933 WDI_ConfigStaReqInfoType* pwdiConfigSta
934);
Jeff Johnsone7245742012-09-05 17:12:55 -0700935
936/*Translate a Rate set info from WDI into HAL*/
937WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700938WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700939(
Jeff Johnson295189b2012-06-20 16:38:30 -0700940 tSirMacRateSet* pHalRateSet,
941 WDI_RateSet* pwdiRateSet
942);
943
944/*Translate an EDCA Parameter Record from WDI into HAL*/
945WPT_STATIC WPT_INLINE void
946WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700947(
Jeff Johnson295189b2012-06-20 16:38:30 -0700948 tSirMacEdcaParamRecord* phalEdcaParam,
949 WDI_EdcaParamRecord* pWDIEdcaParam
950);
951
952/*Copy a management frame header from WDI fmt into HAL fmt*/
953WPT_STATIC WPT_INLINE void
954WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
955(
956 tSirMacMgmtHdr* pmacMgmtHdr,
957 WDI_MacMgmtHdr* pwdiMacMgmtHdr
958);
959
960/*Copy config bss parameters from WDI fmt into HAL fmt*/
961WPT_STATIC WPT_INLINE void
962WDI_CopyWDIConfigBSSToHALConfigBSS
963(
964 tConfigBssParams* phalConfigBSS,
965 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
966);
967
Jeff Johnsone7245742012-09-05 17:12:55 -0700968/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700969 pointed to by user data */
970WPT_STATIC WPT_INLINE void
971WDI_ExtractRequestCBFromEvent
972(
973 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700974 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700975 void** ppUserData
976);
977
978wpt_uint8
979WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700980(
Jeff Johnson295189b2012-06-20 16:38:30 -0700981 WDI_ControlBlockType* pWDICtx,
982 WDI_BSSSessionType** ppSession
983);
984
985void
986WDI_AddBcastSTAtoSTATable
987(
988 WDI_ControlBlockType* pWDICtx,
989 WDI_AddStaParams * staParams,
990 wpt_uint16 usBcastStaIdx
991);
992
993WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700994(
Jeff Johnson295189b2012-06-20 16:38:30 -0700995 WDI_ControlBlockType* pWDICtx,
996 WDI_EventInfoType* pEventData
997);
998
999void
1000WDI_SetPowerStateCb
1001(
1002 wpt_status status,
1003 unsigned int dxePhyAddr,
1004 void *pContext
1005);
1006
Jeff Johnson295189b2012-06-20 16:38:30 -07001007/**
1008 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001009
1010 @param wdiReqMsgId: WDI Message request Id
1011
1012 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001013 @return Result of the function call
1014*/
1015static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1016{
1017 switch (wdiReqMsgId)
1018 {
1019 CASE_RETURN_STRING( WDI_START_REQ );
1020 CASE_RETURN_STRING( WDI_STOP_REQ );
1021 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1022 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1023 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1024 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1025 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1026 CASE_RETURN_STRING( WDI_JOIN_REQ );
1027 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1028 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1029 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1030 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1031 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1032 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1033 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1034 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1035 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1036 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1037 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1038 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1039 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1040 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001041 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001042 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1043 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1044 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1045 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1046 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1047 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1048 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1049 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1050 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1051 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1052 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1053 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001054 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001055 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301056#ifdef FEATURE_WLAN_TDLS
1057 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301058 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301059#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001060 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1061 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1062 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1063 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1064 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1065 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1066 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1067 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1068 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1069 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1070 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1071 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1072 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1073 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1074 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1075 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1076 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1077 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1078 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1079 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1080 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1081 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1082 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1083 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1084 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001085 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001086 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1087 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1088 #ifdef FEATURE_WLAN_SCAN_PNO
1089 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1090 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1091 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1092 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001093#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001094 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001095#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001096 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1097 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1098 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1099 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1100 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1101 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1102 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1103 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1104 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301105 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001106 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001107 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001108#ifdef WLAN_FEATURE_11W
1109 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1110#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301111#ifdef FEATURE_WLAN_BATCH_SCAN
1112 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1113 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1114 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1115#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301116 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1117 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001118 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301119#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1120 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1121 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1122 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1123#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301124#ifdef WLAN_FEATURE_EXTSCAN
1125 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1126 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1127 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1128 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1129 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1130 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1131 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1132 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1133#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301134 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Jeff Johnson295189b2012-06-20 16:38:30 -07001135 default:
1136 return "Unknown WDI MessageId";
1137 }
1138}
1139
1140
1141
1142/**
1143 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001144
1145 @param wdiRespMsgId: WDI Message response Id
1146
1147 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001148 @return Result of the function call
1149*/
1150static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1151{
1152 switch (wdiRespMsgId)
1153 {
1154 CASE_RETURN_STRING( WDI_START_RESP );
1155 CASE_RETURN_STRING( WDI_STOP_RESP );
1156 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1157 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1158 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1159 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1160 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1161 CASE_RETURN_STRING( WDI_JOIN_RESP );
1162 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1163 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1164 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1165 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1166 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1167 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1168 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1169 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1170 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1171 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1172 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1173 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1174 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1175 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1176 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1177 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1178 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1179 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1180 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1181 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1182 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1183 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1184 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1185 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1186 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1187 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1188 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301189#ifdef FEATURE_WLAN_TDLS
1190 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301191 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301192 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1193#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001194 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1195 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1196 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1197 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1198 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1199 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1200 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1201 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1202 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1203 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1204 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1205 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1206 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1207 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1208 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1209 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1210 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1211 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1212 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1213 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1214 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1215 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1216 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1217 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1218 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001219 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001220 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1221 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1222 #ifdef FEATURE_WLAN_SCAN_PNO
1223 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1224 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1225 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1226 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001227#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001228 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001229#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001230 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1231 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1232 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1233 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1234 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1235 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1236 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1237 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001238 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301239#ifdef FEATURE_WLAN_BATCH_SCAN
1240 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1241#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001242 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301243 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301244 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301245#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1246 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1247 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1248 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1249#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301250#ifdef WLAN_FEATURE_EXTSCAN
1251 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1252 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1253 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1254 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1255 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1256 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1257 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1258 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1259 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1260 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1261 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1262 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1263 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1264
1265#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -07001266 default:
1267 return "Unknown WDI MessageId";
1268 }
1269}
1270
1271/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301272 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1273 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301274 @param capabilityBitmap - Base address of a 4 element Bitmap array
1275 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301276 @see
1277 @returns None
1278 */
1279void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1280{
Abhishek Singh08b60122014-02-04 18:05:23 +05301281 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301282 char capStr[512];
1283 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301284 for (j = 0; j < 4; j++) {
1285 for (i = 0; i < 32; i++) {
1286 if ((*(capabilityBitmap + j) & (1 << i))) {
1287 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301288 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1289 pCapStr += strlen("MCC");
1290 break;
1291 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1292 pCapStr += strlen("P2P");
1293 break;
1294 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1295 pCapStr += strlen("DOT11AC");
1296 break;
1297 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1298 pCapStr += strlen("SLM_SESSIONIZATION");
1299 break;
1300 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1301 pCapStr += strlen("DOT11AC_OPMODE");
1302 break;
1303 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1304 pCapStr += strlen("SAP32STA");
1305 break;
1306 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1307 pCapStr += strlen("TDLS");
1308 break;
1309 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1310 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1311 break;
1312 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1313 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1314 break;
1315 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1316 pCapStr += strlen("BEACON_OFFLOAD");
1317 break;
1318 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1319 pCapStr += strlen("SCAN_OFFLOAD");
1320 break;
1321 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1322 pCapStr += strlen("ROAM_OFFLOAD");
1323 break;
1324 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1325 pCapStr += strlen("BCN_MISS_OFFLOAD");
1326 break;
1327 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1328 pCapStr += strlen("STA_POWERSAVE");
1329 break;
1330 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1331 pCapStr += strlen("AP_UAPSD");
1332 break;
1333 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1334 pCapStr += strlen("AP_DFS");
1335 break;
1336 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1337 pCapStr += strlen("BLOCKACK");
1338 break;
1339 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1340 pCapStr += strlen("PHY_ERR");
1341 break;
1342 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1343 pCapStr += strlen("BCN_FILTER");
1344 break;
1345 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1346 pCapStr += strlen("RTT");
1347 break;
1348 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1349 pCapStr += strlen("RATECTRL");
1350 break;
1351 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1352 pCapStr += strlen("WOW");
1353 break;
1354 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1355 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1356 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301357 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1358 pCapStr += strlen("FW_IN_TX_PATH");
1359 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301360 case HT40_OBSS_SCAN:
1361 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1362 "%s", "HT40_OBSS_SCAN");
1363 pCapStr += strlen("HT40_OBSS_SCAN");
1364 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301365 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1366 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1367 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1368 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1369 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301370 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1371 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1372 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301373 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1374 pCapStr += strlen("CH_SWITCH_V1");
1375 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301376#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1377 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1378 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1379 break;
1380#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301381#ifdef WLAN_FEATURE_EXTSCAN
1382 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1383 pCapStr += strlen("EXTENDED_SCAN");
1384 break;
1385#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301386 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1387 pCapStr += strlen("MU_MIMO");
1388 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301389
Mihir Shetec34258c2014-07-30 17:50:27 +05301390 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1391 pCapStr += strlen("DYNAMIC_WMM_PS");
1392 break;
1393
Siddharth Bhal171788a2014-09-29 21:02:40 +05301394 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1395 pCapStr += strlen("MAC_SPOOFED_SCAN");
1396 break;
1397
Abhishek Singh08b60122014-02-04 18:05:23 +05301398 }
1399 *pCapStr++ = ',';
1400 *pCapStr++ = ' ';
1401 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301402 }
1403 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301404 pCapStr -= 2;
1405 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301406 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301408}
1409
1410/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001411 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001412
1413 @param halStatusId: HAL status Id
1414
1415 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001416 @return Result of the function call
1417*/
1418static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1419{
1420 switch (halStatusId)
1421 {
1422 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1423 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1424 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1425 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1426 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1427 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1428 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1429 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1430 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1431 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1432 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1433 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1434 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1435 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1436 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1437 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1438 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1439 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1440 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1441 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1442 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1443 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1444 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1445 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1446 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1447 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1448 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1449 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1450 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1451 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1452 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1453 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1454 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1455 default:
1456 return "Unknown HAL status";
1457 }
1458}
1459
Jeff Johnsone7245742012-09-05 17:12:55 -07001460/*========================================================================
1461
Jeff Johnson295189b2012-06-20 16:38:30 -07001462 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001463
Jeff Johnson295189b2012-06-20 16:38:30 -07001464==========================================================================*/
1465
1466/**
1467 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001468
Jeff Johnson295189b2012-06-20 16:38:30 -07001469 DAL will allocate all the resources it needs. It will open PAL, it will also
1470 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001471 DXE/SMD or any other drivers that they need.
1472
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301473 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001474 ppWDIGlobalCtx: output pointer of Global Context
1475 pWdiDevCapability: output pointer of device capability
1476
1477 @return Result of the function call
1478*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001480WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001481(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301482 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001483 void** ppWDIGlobalCtx,
1484 WDI_DeviceCapabilityType* pWdiDevCapability,
1485 unsigned int driverType
1486)
1487{
1488 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001489 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001490 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001491 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1493
1494 /*---------------------------------------------------------------------
1495 Sanity check
1496 ---------------------------------------------------------------------*/
1497 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1498 {
1499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1500 "Invalid input parameters in WDI_Init");
1501
Jeff Johnsone7245742012-09-05 17:12:55 -07001502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 }
1504
1505 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001506 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001507 ---------------------------------------------------------------------*/
1508 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1509 {
1510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1511 "WDI module already initialized - return");
1512
Jeff Johnsone7245742012-09-05 17:12:55 -07001513 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 }
1515
1516 /*Module is now initialized - this flag is to ensure the fact that multiple
1517 init will not happen on WDI
1518 !! - potential race does exist because read and set are not atomic,
1519 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001520 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001521
1522 /*Setup the control block */
1523 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301524 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001525
1526 /*Setup the STA Table*/
1527 wdiStatus = WDI_STATableInit(&gWDICb);
1528 if ( WDI_STATUS_SUCCESS != wdiStatus )
1529 {
1530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1531 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001532 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001533 goto fail_STATableInit;
1534 }
1535
1536 /*------------------------------------------------------------------------
1537 Open the PAL
1538 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301539 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001540 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1541 {
1542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1543 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001544 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001545 goto fail_wpalOpen;
1546 }
1547
1548 /*Initialize main synchro mutex - it will be used to ensure integrity of
1549 the main WDI Control Block*/
1550 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1551 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1552 {
1553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1554 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001555 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001556 goto fail_mutex;
1557 }
1558
1559 /*Initialize the response timer - it will be used to time all messages
1560 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001561 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1562 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001563 &gWDICb);
1564 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1565 {
1566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1567 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001568 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001569 goto fail_timer;
1570 }
1571
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001572 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1573 WDI_SsrTimerCB,
1574 &gWDICb);
1575 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1576 {
1577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1578 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001579 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001580 goto fail_timer2;
1581 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001582 /* Initialize the WDI Pending Request Queue*/
1583 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1584 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1585 {
1586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1587 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001588 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001589 goto fail_pend_queue;
1590 }
1591
1592 /*Init WDI Pending Assoc Id Queue */
1593 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1594 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1595 {
1596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1597 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001598 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001599 goto fail_assoc_queue;
1600 }
1601
1602 /*Initialize the BSS sessions pending Queue */
1603 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1604 {
1605 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1606 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1607 {
1608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1609 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001610 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001611 goto fail_bss_queue;
1612 }
1613 }
1614
1615 /*Indicate the control block is sufficiently initialized for callbacks*/
1616 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1617
1618 /*------------------------------------------------------------------------
1619 Initialize the Data Path Utility Module
1620 ------------------------------------------------------------------------*/
1621 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1622 if ( WDI_STATUS_SUCCESS != wdiStatus )
1623 {
1624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1625 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001626 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001627 goto fail_dp_util_init;
1628 }
1629
1630 /* Init Set power state event */
1631 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001632 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 {
1634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1635 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001636 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001637 goto fail_power_event;
1638 }
1639
1640 /* Init WCTS action event */
1641 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001642 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001643 {
1644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1645 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001646 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001647 goto fail_wcts_event;
1648 }
1649
1650 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001651 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001652 ------------------------------------------------------------------------*/
1653 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1654 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001655 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001656 wctsCBs.wctsRxMsgCBData = &gWDICb;
1657
Jeff Johnsone7245742012-09-05 17:12:55 -07001658 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001660 WDI_CT_CHANNEL_SIZE,
1661 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001662
1663 if ( NULL == gWDICb.wctsHandle )
1664 {
1665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001666 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001667 goto fail_wcts_open;
1668 }
1669
1670 gWDICb.driverMode = (tDriverType)driverType;
1671 /* FTM mode not need to open Transport Driver */
1672 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001673 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001674 /*------------------------------------------------------------------------
1675 Open the Data Transport
1676 ------------------------------------------------------------------------*/
1677 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1678 {
1679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001680 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 goto fail_wdts_open;
1682 }
1683 }
1684
1685 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001686 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001687
1688 /*Send the context as a ptr to the global WDI Control Block*/
1689 *ppWDIGlobalCtx = &gWDICb;
1690
1691 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001692 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001693 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1694 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1695 return WDI_STATUS_SUCCESS;
1696
1697 /* ERROR handlers
1698 Undo everything that completed successfully */
1699
1700 fail_wdts_open:
1701 {
1702 wpt_status eventStatus;
1703
1704 /* Closing WCTS in this scenario is tricky since it has to close
1705 the SMD channel and then we get notified asynchronously when
1706 the channel has been closed. So we take some of the logic from
1707 the "normal" close procedure in WDI_Close()
1708 */
1709
1710 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001711 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001712 {
1713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001714 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001715 }
1716
1717 WCTS_CloseTransport(gWDICb.wctsHandle);
1718
1719 /* Wait for WCTS to close the control transport. If we were able
1720 to reset the event flag, then we'll wait for the event,
1721 otherwise we'll wait for a maximum amount of time required for
1722 the channel to be closed */
1723 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1724 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001725 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001726 WDI_WCTS_ACTION_TIMEOUT);
1727 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1728 {
1729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001730 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 }
1732 }
1733 else
1734 {
1735 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1736 }
1737 }
1738 fail_wcts_open:
1739 wpalEventDelete(&gWDICb.wctsActionEvent);
1740 fail_wcts_event:
1741 wpalEventDelete(&gWDICb.setPowerStateEvent);
1742 fail_power_event:
1743 WDI_DP_UtilsExit(&gWDICb);
1744 fail_dp_util_init:
1745 gWDICb.magic = 0;
1746 fail_bss_queue:
1747 /* entries 0 thru i-1 were successfully initialized */
1748 while (0 < i)
1749 {
1750 i--;
1751 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1752 }
1753 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1754 fail_assoc_queue:
1755 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1756 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001757 wpalTimerDelete(&gWDICb.ssrTimer);
1758 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001759 wpalTimerDelete(&gWDICb.wptResponseTimer);
1760 fail_timer:
1761 wpalMutexDelete(&gWDICb.wptMutex);
1762 fail_mutex:
1763 wpalClose(gWDICb.pPALContext);
1764 fail_wpalOpen:
1765 WDI_STATableClose(&gWDICb);
1766 fail_STATableInit:
1767 gWDIInitialized = eWLAN_PAL_FALSE;
1768
1769 return WDI_STATUS_E_FAILURE;
1770
1771}/*WDI_Init*/;
1772
1773/**
1774 @brief WDI_Start will be called when the upper MAC is ready to
1775 commence operation with the WLAN Device. Upon the call
1776 of this API the WLAN DAL will pack and send a HAL Start
1777 message to the lower RIVA sub-system if the SMD channel
1778 has been fully opened and the RIVA subsystem is up.
1779
1780 If the RIVA sub-system is not yet up and running DAL
1781 will queue the request for Open and will wait for the
1782 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001783 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001784
1785 WDI_Init must have been called.
1786
Jeff Johnsone7245742012-09-05 17:12:55 -07001787 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001788 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001789
Jeff Johnson295189b2012-06-20 16:38:30 -07001790 wdiStartRspCb: callback for passing back the response of
1791 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001792
Jeff Johnson295189b2012-06-20 16:38:30 -07001793 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001794 callback
1795
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 @see WDI_Start
1797 @return Result of the function call
1798*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001799WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001800WDI_Start
1801(
1802 WDI_StartReqParamsType* pwdiStartParams,
1803 WDI_StartRspCb wdiStartRspCb,
1804 void* pUserData
1805)
1806{
1807 WDI_EventInfoType wdiEventData;
1808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1809
1810 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001811 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001812 ------------------------------------------------------------------------*/
1813 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1814 {
1815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1816 "WDI API call before module is initialized - Fail request");
1817
Jeff Johnsone7245742012-09-05 17:12:55 -07001818 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001819 }
1820
1821 /*------------------------------------------------------------------------
1822 Fill in Event data and post to the Main FSM
1823 ------------------------------------------------------------------------*/
1824 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001825 wdiEventData.pEventData = pwdiStartParams;
1826 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1827 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001828 wdiEventData.pUserData = pUserData;
1829
1830 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1831
1832}/*WDI_Start*/
1833
1834/**
1835 @brief WDI_Stop will be called when the upper MAC is ready to
1836 stop any operation with the WLAN Device. Upon the call
1837 of this API the WLAN DAL will pack and send a HAL Stop
1838 message to the lower RIVA sub-system if the DAL Core is
1839 in started state.
1840
1841 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001842
1843 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001844
1845 WDI_Start must have been called.
1846
Jeff Johnsone7245742012-09-05 17:12:55 -07001847 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001848 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001849
Jeff Johnson295189b2012-06-20 16:38:30 -07001850 wdiStopRspCb: callback for passing back the response of
1851 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001852
Jeff Johnson295189b2012-06-20 16:38:30 -07001853 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001854 callback
1855
Jeff Johnson295189b2012-06-20 16:38:30 -07001856 @see WDI_Start
1857 @return Result of the function call
1858*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001859WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001860WDI_Stop
1861(
1862 WDI_StopReqParamsType* pwdiStopParams,
1863 WDI_StopRspCb wdiStopRspCb,
1864 void* pUserData
1865)
1866{
1867 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001868 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1870
1871 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001872 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 ------------------------------------------------------------------------*/
1874 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1875 {
1876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1877 "WDI API call before module is initialized - Fail request");
1878
Jeff Johnsone7245742012-09-05 17:12:55 -07001879 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001880 }
1881
Jeff Johnson43971f52012-07-17 12:26:56 -07001882 /*Access to the global state must be locked before cleaning */
1883 wpalMutexAcquire(&pWDICtx->wptMutex);
1884
1885 /*Clear all pending request*/
1886 WDI_ClearPendingRequests(pWDICtx);
1887
1888 /*We have completed cleaning unlock now*/
1889 wpalMutexRelease(&pWDICtx->wptMutex);
1890
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 /* Free the global variables */
1892 wpalMemoryFree(gpHostWlanFeatCaps);
1893 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001894 gpHostWlanFeatCaps = NULL;
1895 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001896
1897 /*------------------------------------------------------------------------
1898 Fill in Event data and post to the Main FSM
1899 ------------------------------------------------------------------------*/
1900 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001901 wdiEventData.pEventData = pwdiStopParams;
1902 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1903 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001904 wdiEventData.pUserData = pUserData;
1905
1906 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1907
1908}/*WDI_Stop*/
1909
1910
1911
1912/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001914 needs to interact with DAL. DAL will free its control
1915 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001916
1917 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001918
1919 WDI_Stop must have been called.
1920
1921 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001922
Jeff Johnson295189b2012-06-20 16:38:30 -07001923 @see WDI_Stop
1924 @return Result of the function call
1925*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001926WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001927WDI_Close
1928(
1929 void
1930)
1931{
1932 wpt_uint8 i;
1933 WDI_EventInfoType wdiEventData;
1934 wpt_status wptStatus;
1935 wpt_status eventStatus;
1936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1937
1938 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001939 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001940 ------------------------------------------------------------------------*/
1941 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1942 {
1943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1944 "WDI API call before module is initialized - Fail request");
1945
Jeff Johnsone7245742012-09-05 17:12:55 -07001946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001947 }
1948
1949 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1950 (the control transport will be closed by the FSM and we'll want
1951 to wait until that completes)*/
1952 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001953 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001954 {
1955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001956 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 /* fall through and try to finish closing via the FSM */
1958 }
1959
1960 /*------------------------------------------------------------------------
1961 Fill in Event data and post to the Main FSM
1962 ------------------------------------------------------------------------*/
1963 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001964 wdiEventData.pEventData = NULL;
1965 wdiEventData.uEventDataSize = 0;
1966 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001967 wdiEventData.pUserData = NULL;
1968
1969 gWDIInitialized = eWLAN_PAL_FALSE;
1970
1971 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1972
1973 /*Wait for WCTS to close the control transport
1974 (but only if we were able to reset the event flag*/
1975 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1976 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001977 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001978 WDI_WCTS_ACTION_TIMEOUT);
1979 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1980 {
1981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001982 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001983 }
1984 }
1985
1986 /* Destroy the WCTS action event */
1987 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1988 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1989 {
1990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1991 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001992 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001993 }
1994
1995 /* Destroy the Set Power State event */
1996 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1997 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1998 {
1999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2000 "WDI Close failed to destroy an event");
2001
Jeff Johnsone7245742012-09-05 17:12:55 -07002002 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 }
2004
2005 /*------------------------------------------------------------------------
2006 Closes the Data Path Utility Module
2007 ------------------------------------------------------------------------*/
2008 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2009 {
2010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2011 "WDI Init failed to close the DP Util Module");
2012
Jeff Johnsone7245742012-09-05 17:12:55 -07002013 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002014 }
2015
2016 /*destroy the BSS sessions pending Queue */
2017 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2018 {
2019 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2020 }
2021
2022 /* destroy the WDI Pending Assoc Id Request Queue*/
2023 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2024
2025 /* destroy the WDI Pending Request Queue*/
2026 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002027
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 /*destroy the response timer */
2029 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2030
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002031 /*destroy the SSR timer */
2032 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2033
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 /*invalidate the main synchro mutex */
2035 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2036 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2037 {
2038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2039 "Failed to delete mutex %d", wptStatus);
2040 WDI_ASSERT(0);
2041 }
2042
2043 /*Clear control block. note that this will clear the "magic"
2044 which will inhibit all asynchronous callbacks*/
2045 WDI_CleanCB(&gWDICb);
2046
2047 return wptStatus;
2048
2049}/*WDI_Close*/
2050
2051/**
2052 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2053 This will do most of the WDI stop & close
2054 operations without doing any handshake with Riva
2055
2056 This will also make sure that the control transport
2057 will NOT be closed.
2058
2059 This request will not be queued.
2060
2061
2062 WDI_Start must have been called.
2063
2064 @param closeTransport: Close control channel if this is set
2065
2066 @return Result of the function call
2067*/
2068WDI_Status
2069WDI_Shutdown
2070(
2071 wpt_boolean closeTransport
2072)
2073{
2074 WDI_EventInfoType wdiEventData;
2075 wpt_status wptStatus;
2076 int i = 0;
2077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2078
2079 /*------------------------------------------------------------------------
2080 Sanity Check
2081 ------------------------------------------------------------------------*/
2082 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2083 {
2084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2085 "WDI API call before module is initialized - Fail request");
2086
2087 return WDI_STATUS_E_NOT_ALLOWED;
2088 }
2089
2090 /*------------------------------------------------------------------------
2091 Fill in Event data and post to the Main FSM
2092 ------------------------------------------------------------------------*/
2093 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2094 wdiEventData.pEventData = NULL;
2095 wdiEventData.uEventDataSize = 0;
2096
2097 /* Shutdown will not be queued, if the state is busy timer will be
2098 * stopped & this message will be processed.*/
2099 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2100 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2101 {
2102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002103 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 }
2105 /* Destroy the Set Power State event */
2106 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2107 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2108 {
2109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2110 "WDI Close failed to destroy an event");
2111
2112 WDI_ASSERT(0);
2113 }
2114 /*------------------------------------------------------------------------
2115 Closes the Data Path Utility Module
2116 ------------------------------------------------------------------------*/
2117 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2118 {
2119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2120 "WDI Init failed to close the DP Util Module");
2121
2122 WDI_ASSERT(0);
2123 }
2124 if ( closeTransport )
2125 {
2126 /* Close control transport, called from module unload */
2127 WCTS_CloseTransport(gWDICb.wctsHandle);
2128 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002129 else
2130 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002131 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002132 the pending messages in the transport queue */
2133 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2134 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002135 /*destroy the BSS sessions pending Queue */
2136 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2137 {
2138 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2139 }
2140
2141 /* destroy the WDI Pending Assoc Id Request Queue*/
2142 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2143 /* destroy the WDI Pending Request Queue*/
2144 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2145 /*destroy the response timer */
2146 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002147 /*destroy the SSR timer */
2148 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002149
2150 /*invalidate the main synchro mutex */
2151 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2152 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2153 {
2154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002155 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002156 WDI_ASSERT(0);
2157 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002158 /* Free the global variables */
2159 wpalMemoryFree(gpHostWlanFeatCaps);
2160 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002161 gpHostWlanFeatCaps = NULL;
2162 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002163 /*Clear control block. note that this will clear the "magic"
2164 which will inhibit all asynchronous callbacks*/
2165 WDI_CleanCB(&gWDICb);
2166 return wptStatus;
2167
2168}/*WDI_Shutdown*/
2169
2170
Jeff Johnsone7245742012-09-05 17:12:55 -07002171/*========================================================================
2172
Jeff Johnson295189b2012-06-20 16:38:30 -07002173 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002174
Jeff Johnson295189b2012-06-20 16:38:30 -07002175==========================================================================*/
2176
2177/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002178 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 the WLAN Device to get ready for a scan procedure. Upon
2180 the call of this API the WLAN DAL will pack and send a
2181 HAL Init Scan request message to the lower RIVA
2182 sub-system if DAL is in state STARTED.
2183
2184 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002185 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002186
2187 WDI_Start must have been called.
2188
2189 @param wdiInitScanParams: the init scan parameters as specified
2190 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002191
Jeff Johnson295189b2012-06-20 16:38:30 -07002192 wdiInitScanRspCb: callback for passing back the response
2193 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002194
Jeff Johnson295189b2012-06-20 16:38:30 -07002195 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002196 callback
2197
Jeff Johnson295189b2012-06-20 16:38:30 -07002198 @see WDI_Start
2199 @return Result of the function call
2200*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002201WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002202WDI_InitScanReq
2203(
2204 WDI_InitScanReqParamsType* pwdiInitScanParams,
2205 WDI_InitScanRspCb wdiInitScanRspCb,
2206 void* pUserData
2207)
2208{
2209 WDI_EventInfoType wdiEventData;
2210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2211
2212 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002213 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 ------------------------------------------------------------------------*/
2215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2216 {
2217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2218 "WDI API call before module is initialized - Fail request");
2219
Jeff Johnsone7245742012-09-05 17:12:55 -07002220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002221 }
2222
2223 /*------------------------------------------------------------------------
2224 Fill in Event data and post to the Main FSM
2225 ------------------------------------------------------------------------*/
2226 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002227 wdiEventData.pEventData = pwdiInitScanParams;
2228 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2229 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 wdiEventData.pUserData = pUserData;
2231
2232 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2233
2234}/*WDI_InitScanReq*/
2235
2236/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002237 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002238 wishes to change the Scan channel on the WLAN Device.
2239 Upon the call of this API the WLAN DAL will pack and
2240 send a HAL Start Scan request message to the lower RIVA
2241 sub-system if DAL is in state STARTED.
2242
2243 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002244 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002245
2246 WDI_InitScanReq must have been called.
2247
Jeff Johnsone7245742012-09-05 17:12:55 -07002248 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002249 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002250
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 wdiStartScanRspCb: callback for passing back the
2252 response of the start scan operation received from the
2253 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002254
Jeff Johnson295189b2012-06-20 16:38:30 -07002255 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002256 callback
2257
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 @see WDI_InitScanReq
2259 @return Result of the function call
2260*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002261WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002262WDI_StartScanReq
2263(
2264 WDI_StartScanReqParamsType* pwdiStartScanParams,
2265 WDI_StartScanRspCb wdiStartScanRspCb,
2266 void* pUserData
2267)
2268{
2269 WDI_EventInfoType wdiEventData;
2270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2271
2272 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 ------------------------------------------------------------------------*/
2275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2276 {
2277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2278 "WDI API call before module is initialized - Fail request");
2279
Jeff Johnsone7245742012-09-05 17:12:55 -07002280 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002281 }
2282
2283 /*------------------------------------------------------------------------
2284 Fill in Event data and post to the Main FSM
2285 ------------------------------------------------------------------------*/
2286 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002287 wdiEventData.pEventData = pwdiStartScanParams;
2288 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2289 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 wdiEventData.pUserData = pUserData;
2291
2292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2293
2294}/*WDI_StartScanReq*/
2295
2296
2297/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002299 wants to end scanning for a particular channel that it
2300 had set before by calling Scan Start on the WLAN Device.
2301 Upon the call of this API the WLAN DAL will pack and
2302 send a HAL End Scan request message to the lower RIVA
2303 sub-system if DAL is in state STARTED.
2304
2305 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002307
2308 WDI_StartScanReq must have been called.
2309
Jeff Johnsone7245742012-09-05 17:12:55 -07002310 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002311 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002312
Jeff Johnson295189b2012-06-20 16:38:30 -07002313 wdiEndScanRspCb: callback for passing back the response
2314 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002315
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002317 callback
2318
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 @see WDI_StartScanReq
2320 @return Result of the function call
2321*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002322WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002323WDI_EndScanReq
2324(
2325 WDI_EndScanReqParamsType* pwdiEndScanParams,
2326 WDI_EndScanRspCb wdiEndScanRspCb,
2327 void* pUserData
2328)
2329{
2330 WDI_EventInfoType wdiEventData;
2331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2332
2333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002334 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 ------------------------------------------------------------------------*/
2336 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2337 {
2338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2339 "WDI API call before module is initialized - Fail request");
2340
Jeff Johnsone7245742012-09-05 17:12:55 -07002341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002342 }
2343
2344 /*------------------------------------------------------------------------
2345 Fill in Event data and post to the Main FSM
2346 ------------------------------------------------------------------------*/
2347 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002348 wdiEventData.pEventData = pwdiEndScanParams;
2349 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2350 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 wdiEventData.pUserData = pUserData;
2352
2353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2354
2355}/*WDI_EndScanReq*/
2356
2357
2358/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002359 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 completed the scan process on the WLAN Device. Upon the
2361 call of this API the WLAN DAL will pack and send a HAL
2362 Finish Scan Request request message to the lower RIVA
2363 sub-system if DAL is in state STARTED.
2364
2365 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002367
2368 WDI_InitScanReq must have been called.
2369
Jeff Johnsone7245742012-09-05 17:12:55 -07002370 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002371 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002372
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 wdiFinishScanRspCb: callback for passing back the
2374 response of the finish scan operation received from the
2375 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002376
Jeff Johnson295189b2012-06-20 16:38:30 -07002377 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 callback
2379
Jeff Johnson295189b2012-06-20 16:38:30 -07002380 @see WDI_InitScanReq
2381 @return Result of the function call
2382*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002383WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002384WDI_FinishScanReq
2385(
2386 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2387 WDI_FinishScanRspCb wdiFinishScanRspCb,
2388 void* pUserData
2389)
2390{
2391 WDI_EventInfoType wdiEventData;
2392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2393
2394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002395 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 ------------------------------------------------------------------------*/
2397 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2398 {
2399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2400 "WDI API call before module is initialized - Fail request");
2401
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 }
2404
2405 /*------------------------------------------------------------------------
2406 Fill in Event data and post to the Main FSM
2407 ------------------------------------------------------------------------*/
2408 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002409 wdiEventData.pEventData = pwdiFinishScanParams;
2410 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2411 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 wdiEventData.pUserData = pUserData;
2413
2414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2415
2416}/*WDI_FinishScanReq*/
2417
Jeff Johnsone7245742012-09-05 17:12:55 -07002418/*========================================================================
2419
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002421
Jeff Johnson295189b2012-06-20 16:38:30 -07002422==========================================================================*/
2423
2424/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002425 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 to start an association procedure to a BSS. Upon the
2427 call of this API the WLAN DAL will pack and send a HAL
2428 Join request message to the lower RIVA sub-system if
2429 DAL is in state STARTED.
2430
2431 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002432 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002433
2434 WDI_Start must have been called.
2435
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002438
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 wdiJoinRspCb: callback for passing back the response of
2440 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002441
Jeff Johnson295189b2012-06-20 16:38:30 -07002442 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 callback
2444
Jeff Johnson295189b2012-06-20 16:38:30 -07002445 @see WDI_Start
2446 @return Result of the function call
2447*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002448WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002449WDI_JoinReq
2450(
2451 WDI_JoinReqParamsType* pwdiJoinParams,
2452 WDI_JoinRspCb wdiJoinRspCb,
2453 void* pUserData
2454)
2455{
2456 WDI_EventInfoType wdiEventData;
2457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2458
2459 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002460 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 ------------------------------------------------------------------------*/
2462 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2463 {
2464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2465 "WDI API call before module is initialized - Fail request");
2466
Jeff Johnsone7245742012-09-05 17:12:55 -07002467 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 }
2469
2470 /*------------------------------------------------------------------------
2471 Fill in Event data and post to the Main FSM
2472 ------------------------------------------------------------------------*/
2473 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002474 wdiEventData.pEventData = pwdiJoinParams;
2475 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2476 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002477 wdiEventData.pUserData = pUserData;
2478
2479 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2480
2481}/*WDI_JoinReq*/
2482
2483/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002484 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002485 wishes to configure the newly acquired or in process of
2486 being acquired BSS to the HW . Upon the call of this API
2487 the WLAN DAL will pack and send a HAL Config BSS request
2488 message to the lower RIVA sub-system if DAL is in state
2489 STARTED.
2490
2491 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002492 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002493
2494 WDI_JoinReq must have been called.
2495
Jeff Johnsone7245742012-09-05 17:12:55 -07002496 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002497 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002498
Jeff Johnson295189b2012-06-20 16:38:30 -07002499 wdiConfigBSSRspCb: callback for passing back the
2500 response of the config BSS operation received from the
2501 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002502
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 callback
2505
Jeff Johnson295189b2012-06-20 16:38:30 -07002506 @see WDI_JoinReq
2507 @return Result of the function call
2508*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002509WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002510WDI_ConfigBSSReq
2511(
2512 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2513 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2514 void* pUserData
2515)
2516{
2517 WDI_EventInfoType wdiEventData;
2518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2519
2520 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002521 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 ------------------------------------------------------------------------*/
2523 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2524 {
2525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2526 "WDI API call before module is initialized - Fail request");
2527
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 }
2530
2531 /*------------------------------------------------------------------------
2532 Fill in Event data and post to the Main FSM
2533 ------------------------------------------------------------------------*/
2534 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002535 wdiEventData.pEventData = pwdiConfigBSSParams;
2536 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2537 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 wdiEventData.pUserData = pUserData;
2539
2540 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2541
2542}/*WDI_ConfigBSSReq*/
2543
2544/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 disassociating from the BSS and wishes to notify HW.
2547 Upon the call of this API the WLAN DAL will pack and
2548 send a HAL Del BSS request message to the lower RIVA
2549 sub-system if DAL is in state STARTED.
2550
2551 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002552 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002553
2554 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2555
Jeff Johnsone7245742012-09-05 17:12:55 -07002556 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002558
Jeff Johnson295189b2012-06-20 16:38:30 -07002559 wdiDelBSSRspCb: callback for passing back the response
2560 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002561
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002563 callback
2564
2565 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002566 @return Result of the function call
2567*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002568WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002569WDI_DelBSSReq
2570(
2571 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2572 WDI_DelBSSRspCb wdiDelBSSRspCb,
2573 void* pUserData
2574)
2575{
2576 WDI_EventInfoType wdiEventData;
2577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2578
2579 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002581 ------------------------------------------------------------------------*/
2582 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2583 {
2584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2585 "WDI API call before module is initialized - Fail request");
2586
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 }
2589
2590 /*------------------------------------------------------------------------
2591 Fill in Event data and post to the Main FSM
2592 ------------------------------------------------------------------------*/
2593 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002594 wdiEventData.pEventData = pwdiDelBSSParams;
2595 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2596 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002597 wdiEventData.pUserData = pUserData;
2598
2599 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2600
2601}/*WDI_DelBSSReq*/
2602
2603/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002604 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002605 associated to a BSS and wishes to configure HW for
2606 associated state. Upon the call of this API the WLAN DAL
2607 will pack and send a HAL Post Assoc request message to
2608 the lower RIVA sub-system if DAL is in state STARTED.
2609
2610 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002611 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002612
2613 WDI_JoinReq must have been called.
2614
2615 @param wdiPostAssocReqParams: the assoc parameters as specified
2616 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002617
Jeff Johnson295189b2012-06-20 16:38:30 -07002618 wdiPostAssocRspCb: callback for passing back the
2619 response of the post assoc operation received from the
2620 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002621
Jeff Johnson295189b2012-06-20 16:38:30 -07002622 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 callback
2624
Jeff Johnson295189b2012-06-20 16:38:30 -07002625 @see WDI_JoinReq
2626 @return Result of the function call
2627*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002628WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002629WDI_PostAssocReq
2630(
2631 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2632 WDI_PostAssocRspCb wdiPostAssocRspCb,
2633 void* pUserData
2634)
2635{
2636 WDI_EventInfoType wdiEventData;
2637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2638
2639 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002641 ------------------------------------------------------------------------*/
2642 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2643 {
2644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2645 "WDI API call before module is initialized - Fail request");
2646
Jeff Johnsone7245742012-09-05 17:12:55 -07002647 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002648 }
2649
2650 /*------------------------------------------------------------------------
2651 Fill in Event data and post to the Main FSM
2652 ------------------------------------------------------------------------*/
2653 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002654 wdiEventData.pEventData = pwdiPostAssocReqParams;
2655 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2656 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 wdiEventData.pUserData = pUserData;
2658
2659 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2660
2661}/*WDI_PostAssocReq*/
2662
2663/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002664 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002665 association with another STA has ended and the station
2666 must be deleted from HW. Upon the call of this API the
2667 WLAN DAL will pack and send a HAL Del STA request
2668 message to the lower RIVA sub-system if DAL is in state
2669 STARTED.
2670
2671 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002673
2674 WDI_PostAssocReq must have been called.
2675
Jeff Johnsone7245742012-09-05 17:12:55 -07002676 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002677 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002678
Jeff Johnson295189b2012-06-20 16:38:30 -07002679 wdiDelSTARspCb: callback for passing back the response
2680 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002681
Jeff Johnson295189b2012-06-20 16:38:30 -07002682 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002683 callback
2684
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 @see WDI_PostAssocReq
2686 @return Result of the function call
2687*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002688WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002689WDI_DelSTAReq
2690(
2691 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2692 WDI_DelSTARspCb wdiDelSTARspCb,
2693 void* pUserData
2694)
2695{
2696 WDI_EventInfoType wdiEventData;
2697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2698
2699 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002700 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002701 ------------------------------------------------------------------------*/
2702 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2703 {
2704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2705 "WDI API call before module is initialized - Fail request");
2706
Jeff Johnsone7245742012-09-05 17:12:55 -07002707 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002708 }
2709
2710 /*------------------------------------------------------------------------
2711 Fill in Event data and post to the Main FSM
2712 ------------------------------------------------------------------------*/
2713 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002714 wdiEventData.pEventData = pwdiDelSTAParams;
2715 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2716 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 wdiEventData.pUserData = pUserData;
2718
2719 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2720
2721}/*WDI_DelSTAReq*/
2722
Jeff Johnsone7245742012-09-05 17:12:55 -07002723/*========================================================================
2724
Jeff Johnson295189b2012-06-20 16:38:30 -07002725 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002726
Jeff Johnson295189b2012-06-20 16:38:30 -07002727==========================================================================*/
2728
2729/**
2730 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2731 install a BSS encryption key on the HW. Upon the call of this
2732 API the WLAN DAL will pack and send a Set BSS Key request
2733 message to the lower RIVA sub-system if DAL is in state
2734 STARTED.
2735
2736 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002737 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002738
2739 WDI_PostAssocReq must have been called.
2740
Jeff Johnsone7245742012-09-05 17:12:55 -07002741 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002742 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002743
Jeff Johnson295189b2012-06-20 16:38:30 -07002744 wdiSetBSSKeyRspCb: callback for passing back the
2745 response of the set BSS Key operation received from the
2746 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002747
Jeff Johnson295189b2012-06-20 16:38:30 -07002748 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002749 callback
2750
Jeff Johnson295189b2012-06-20 16:38:30 -07002751 @see WDI_PostAssocReq
2752 @return Result of the function call
2753*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002754WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002755WDI_SetBSSKeyReq
2756(
2757 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2758 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2759 void* pUserData
2760)
2761{
2762 WDI_EventInfoType wdiEventData;
2763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2764
2765 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002766 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 ------------------------------------------------------------------------*/
2768 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2769 {
2770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2771 "WDI API call before module is initialized - Fail request");
2772
Jeff Johnsone7245742012-09-05 17:12:55 -07002773 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 }
2775
2776 /*------------------------------------------------------------------------
2777 Fill in Event data and post to the Main FSM
2778 ------------------------------------------------------------------------*/
2779 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002780 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2781 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2782 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002783 wdiEventData.pUserData = pUserData;
2784
2785 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2786
2787}/*WDI_SetBSSKeyReq*/
2788
2789/**
2790 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2791 uninstall a BSS key from HW. Upon the call of this API the
2792 WLAN DAL will pack and send a HAL Remove BSS Key request
2793 message to the lower RIVA sub-system if DAL is in state
2794 STARTED.
2795
2796 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002797 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002798
2799 WDI_SetBSSKeyReq must have been called.
2800
Jeff Johnsone7245742012-09-05 17:12:55 -07002801 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002802 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002803
Jeff Johnson295189b2012-06-20 16:38:30 -07002804 wdiRemoveBSSKeyRspCb: callback for passing back the
2805 response of the remove BSS key operation received from
2806 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002807
Jeff Johnson295189b2012-06-20 16:38:30 -07002808 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002809 callback
2810
Jeff Johnson295189b2012-06-20 16:38:30 -07002811 @see WDI_SetBSSKeyReq
2812 @return Result of the function call
2813*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002814WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002815WDI_RemoveBSSKeyReq
2816(
2817 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2818 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2819 void* pUserData
2820)
2821{
2822 WDI_EventInfoType wdiEventData;
2823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2824
2825 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002826 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002827 ------------------------------------------------------------------------*/
2828 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2829 {
2830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2831 "WDI API call before module is initialized - Fail request");
2832
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 }
2835
2836 /*------------------------------------------------------------------------
2837 Fill in Event data and post to the Main FSM
2838 ------------------------------------------------------------------------*/
2839 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002840 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2841 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2842 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 wdiEventData.pUserData = pUserData;
2844
2845 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2846
2847}/*WDI_RemoveBSSKeyReq*/
2848
2849
2850/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002851 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002852 ready to install a STA(ast) encryption key in HW. Upon
2853 the call of this API the WLAN DAL will pack and send a
2854 HAL Set STA Key request message to the lower RIVA
2855 sub-system if DAL is in state STARTED.
2856
2857 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002859
2860 WDI_PostAssocReq must have been called.
2861
Jeff Johnsone7245742012-09-05 17:12:55 -07002862 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002863 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002864
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 wdiSetSTAKeyRspCb: callback for passing back the
2866 response of the set STA key operation received from the
2867 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002868
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002870 callback
2871
Jeff Johnson295189b2012-06-20 16:38:30 -07002872 @see WDI_PostAssocReq
2873 @return Result of the function call
2874*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002875WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002876WDI_SetSTAKeyReq
2877(
2878 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2879 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2880 void* pUserData
2881)
2882{
2883 WDI_EventInfoType wdiEventData;
2884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2885
2886 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002887 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002888 ------------------------------------------------------------------------*/
2889 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2890 {
2891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2892 "WDI API call before module is initialized - Fail request");
2893
Jeff Johnsone7245742012-09-05 17:12:55 -07002894 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002895 }
2896
2897 /*------------------------------------------------------------------------
2898 Fill in Event data and post to the Main FSM
2899 ------------------------------------------------------------------------*/
2900 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002901 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2902 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2903 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 wdiEventData.pUserData = pUserData;
2905
2906 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2907
2908}/*WDI_SetSTAKeyReq*/
2909
2910
2911/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002912 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 wants to uninstall a previously set STA key in HW. Upon
2914 the call of this API the WLAN DAL will pack and send a
2915 HAL Remove STA Key request message to the lower RIVA
2916 sub-system if DAL is in state STARTED.
2917
2918 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002919 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002920
2921 WDI_SetSTAKeyReq must have been called.
2922
Jeff Johnsone7245742012-09-05 17:12:55 -07002923 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002924 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002925
Jeff Johnson295189b2012-06-20 16:38:30 -07002926 wdiRemoveSTAKeyRspCb: callback for passing back the
2927 response of the remove STA key operation received from
2928 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002929
Jeff Johnson295189b2012-06-20 16:38:30 -07002930 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002931 callback
2932
Jeff Johnson295189b2012-06-20 16:38:30 -07002933 @see WDI_SetSTAKeyReq
2934 @return Result of the function call
2935*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002936WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002937WDI_RemoveSTAKeyReq
2938(
2939 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2940 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2941 void* pUserData
2942)
2943{
2944 WDI_EventInfoType wdiEventData;
2945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2946
2947 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002948 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002949 ------------------------------------------------------------------------*/
2950 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2951 {
2952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2953 "WDI API call before module is initialized - Fail request");
2954
Jeff Johnsone7245742012-09-05 17:12:55 -07002955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002956 }
2957
2958 /*------------------------------------------------------------------------
2959 Fill in Event data and post to the Main FSM
2960 ------------------------------------------------------------------------*/
2961 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002962 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2963 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2964 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 wdiEventData.pUserData = pUserData;
2966
2967 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2968
2969}/*WDI_RemoveSTAKeyReq*/
2970
2971
2972/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002973 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 wants to install a STA Bcast encryption key on the HW.
2975 Upon the call of this API the WLAN DAL will pack and
2976 send a HAL Start request message to the lower RIVA
2977 sub-system if DAL is in state STARTED.
2978
2979 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002980 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002981
2982 WDI_PostAssocReq must have been called.
2983
Jeff Johnsone7245742012-09-05 17:12:55 -07002984 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002985 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002986
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 wdiSetSTABcastKeyRspCb: callback for passing back the
2988 response of the set BSS Key operation received from the
2989 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002990
Jeff Johnson295189b2012-06-20 16:38:30 -07002991 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002992 callback
2993
Jeff Johnson295189b2012-06-20 16:38:30 -07002994 @see WDI_PostAssocReq
2995 @return Result of the function call
2996*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002998WDI_SetSTABcastKeyReq
2999(
3000 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3001 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3002 void* pUserData
3003)
3004
3005{
3006 WDI_EventInfoType wdiEventData;
3007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3008
3009 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003010 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003011 ------------------------------------------------------------------------*/
3012 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3013 {
3014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3015 "WDI API call before module is initialized - Fail request");
3016
Jeff Johnsone7245742012-09-05 17:12:55 -07003017 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 }
3019
3020 /*------------------------------------------------------------------------
3021 Fill in Event data and post to the Main FSM
3022 ------------------------------------------------------------------------*/
3023 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003024 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3025 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3026 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003027 wdiEventData.pUserData = pUserData;
3028
3029 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3030
3031}/*WDI_SetSTABcastKeyReq*/
3032
3033/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003034 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003035 MAC wants to uninstall a STA Bcast key from HW. Upon the
3036 call of this API the WLAN DAL will pack and send a HAL
3037 Remove STA Bcast Key request message to the lower RIVA
3038 sub-system if DAL is in state STARTED.
3039
3040 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003041 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003042
3043 WDI_SetSTABcastKeyReq must have been called.
3044
Jeff Johnsone7245742012-09-05 17:12:55 -07003045 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003046 parameters as specified by the Device
3047 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003048
Jeff Johnson295189b2012-06-20 16:38:30 -07003049 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3050 response of the remove STA Bcast key operation received
3051 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003052
Jeff Johnson295189b2012-06-20 16:38:30 -07003053 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003054 callback
3055
Jeff Johnson295189b2012-06-20 16:38:30 -07003056 @see WDI_SetSTABcastKeyReq
3057 @return Result of the function call
3058*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003059WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003060WDI_RemoveSTABcastKeyReq
3061(
3062 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3063 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3064 void* pUserData
3065)
3066{
3067 WDI_EventInfoType wdiEventData;
3068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3069
3070 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 ------------------------------------------------------------------------*/
3073 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3074 {
3075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3076 "WDI API call before module is initialized - Fail request");
3077
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 }
3080
3081 /*------------------------------------------------------------------------
3082 Fill in Event data and post to the Main FSM
3083 ------------------------------------------------------------------------*/
3084 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003085 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3086 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3087 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 wdiEventData.pUserData = pUserData;
3089
3090 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3091
3092}/*WDI_RemoveSTABcastKeyReq*/
3093
3094/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003095 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003096 MAC wants to set Max Tx Power to HW. Upon the
3097 call of this API the WLAN DAL will pack and send a HAL
3098 Remove STA Bcast Key request message to the lower RIVA
3099 sub-system if DAL is in state STARTED.
3100
3101 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003102 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003103
3104 WDI_SetSTABcastKeyReq must have been called.
3105
Jeff Johnsone7245742012-09-05 17:12:55 -07003106 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 parameters as specified by the Device
3108 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003109
Jeff Johnson295189b2012-06-20 16:38:30 -07003110 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3111 response of the remove STA Bcast key operation received
3112 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003113
Jeff Johnson295189b2012-06-20 16:38:30 -07003114 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003115 callback
3116
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 @see WDI_SetMaxTxPowerReq
3118 @return Result of the function call
3119*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003120WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003121WDI_SetMaxTxPowerReq
3122(
3123 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3124 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3125 void* pUserData
3126)
3127{
3128 WDI_EventInfoType wdiEventData;
3129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3130
3131 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003132 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003133 ------------------------------------------------------------------------*/
3134 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3135 {
3136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3137 "WDI API call before module is initialized - Fail request");
3138
Jeff Johnsone7245742012-09-05 17:12:55 -07003139 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003140 }
3141
3142 /*------------------------------------------------------------------------
3143 Fill in Event data and post to the Main FSM
3144 ------------------------------------------------------------------------*/
3145 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003146 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3147 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3148 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 wdiEventData.pUserData = pUserData;
3150
3151 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3152}
3153
schang86c22c42013-03-13 18:41:24 -07003154/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003155 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3156 MAC wants to set Max Tx Power to HW for specific band.
3157
3158 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3159
3160 wdiReqStatusCb: callback for passing back the
3161 response msg from the device
3162
3163 pUserData: user data will be passed back with the
3164 callback
3165
3166 @see WDI_SetMaxTxPowerPerBandReq
3167 @return Result of the function call
3168*/
3169WDI_Status
3170WDI_SetMaxTxPowerPerBandReq
3171(
3172 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3173 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3174 void* pUserData
3175)
3176{
3177 WDI_EventInfoType wdiEventData;
3178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3179
3180 /*------------------------------------------------------------------------
3181 Sanity Check
3182 ------------------------------------------------------------------------*/
3183 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3184 {
3185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3186 "WDI API call before module is initialized - Fail request");
3187
3188 return WDI_STATUS_E_NOT_ALLOWED;
3189 }
3190
3191 /*------------------------------------------------------------------------
3192 Fill in Event data and post to the Main FSM
3193 ------------------------------------------------------------------------*/
3194 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3195 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3196 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3197 wdiEventData.pCBfnc = wdiReqStatusCb;
3198 wdiEventData.pUserData = pUserData;
3199
3200 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3201}
3202
3203/**
schang86c22c42013-03-13 18:41:24 -07003204 @brief WDI_SetTxPowerReq will be called when the upper
3205 MAC wants to set Tx Power to HW.
3206 In state BUSY this request will be queued. Request won't
3207 be allowed in any other state.
3208
3209
3210 @param pwdiSetTxPowerParams: set TS Power parameters
3211 BSSID and target TX Power with dbm included
3212
3213 wdiReqStatusCb: callback for passing back the response
3214
3215 pUserData: user data will be passed back with the
3216 callback
3217
3218 @return Result of the function call
3219*/
3220WDI_Status
3221WDI_SetTxPowerReq
3222(
3223 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3224 WDA_SetTxPowerRspCb wdiReqStatusCb,
3225 void* pUserData
3226)
3227{
3228 WDI_EventInfoType wdiEventData;
3229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3230
3231 /*------------------------------------------------------------------------
3232 Sanity Check
3233 ------------------------------------------------------------------------*/
3234 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3235 {
3236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3237 "WDI API call before module is initialized - Fail request");
3238
3239 return WDI_STATUS_E_NOT_ALLOWED;
3240 }
3241
3242 /*------------------------------------------------------------------------
3243 Fill in Event data and post to the Main FSM
3244 ------------------------------------------------------------------------*/
3245 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3246 wdiEventData.pEventData = pwdiSetTxPowerParams;
3247 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3248 wdiEventData.pCBfnc = wdiReqStatusCb;
3249 wdiEventData.pUserData = pUserData;
3250
3251 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3252}
3253
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003254#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003255WDI_Status
3256WDI_TSMStatsReq
3257(
3258 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3259 WDI_TsmRspCb wdiReqStatusCb,
3260 void* pUserData
3261)
3262{
3263 WDI_EventInfoType wdiEventData;
3264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003265 /*------------------------------------------------------------------------
3266 Sanity Check
3267 ------------------------------------------------------------------------*/
3268 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3269 {
3270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3271 "WDI API call before module is initialized - Fail request");
3272
3273 return WDI_STATUS_E_NOT_ALLOWED;
3274 }
3275
3276 /*------------------------------------------------------------------------
3277 Fill in Event data and post to the Main FSM
3278 ------------------------------------------------------------------------*/
3279 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3280 wdiEventData.pEventData = pwdiTsmReqParams;
3281 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3282 wdiEventData.pCBfnc = wdiReqStatusCb;
3283 wdiEventData.pUserData = pUserData;
3284
3285 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3286
3287}
3288#endif
3289
3290/*========================================================================
3291
3292 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003293
Jeff Johnson295189b2012-06-20 16:38:30 -07003294==========================================================================*/
3295
3296/**
3297 @brief WDI_AddTSReq will be called when the upper MAC to inform
3298 the device of a successful add TSpec negotiation. HW
3299 needs to receive the TSpec Info from the UMAC in order
3300 to configure properly the QoS data traffic. Upon the
3301 call of this API the WLAN DAL will pack and send a HAL
3302 Add TS request message to the lower RIVA sub-system if
3303 DAL is in state STARTED.
3304
3305 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003307
3308 WDI_PostAssocReq must have been called.
3309
3310 @param wdiAddTsReqParams: the add TS parameters as specified by
3311 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003312
Jeff Johnson295189b2012-06-20 16:38:30 -07003313 wdiAddTsRspCb: callback for passing back the response of
3314 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003315
Jeff Johnson295189b2012-06-20 16:38:30 -07003316 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003317 callback
3318
Jeff Johnson295189b2012-06-20 16:38:30 -07003319 @see WDI_PostAssocReq
3320 @return Result of the function call
3321*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003322WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003323WDI_AddTSReq
3324(
3325 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3326 WDI_AddTsRspCb wdiAddTsRspCb,
3327 void* pUserData
3328)
3329{
3330 WDI_EventInfoType wdiEventData;
3331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3332
3333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003334 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003335 ------------------------------------------------------------------------*/
3336 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3337 {
3338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3339 "WDI API call before module is initialized - Fail request");
3340
Jeff Johnsone7245742012-09-05 17:12:55 -07003341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003342 }
3343
3344 /*------------------------------------------------------------------------
3345 Fill in Event data and post to the Main FSM
3346 ------------------------------------------------------------------------*/
3347 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003348 wdiEventData.pEventData = pwdiAddTsReqParams;
3349 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3350 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 wdiEventData.pUserData = pUserData;
3352
3353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3354
3355}/*WDI_AddTSReq*/
3356
3357
3358
3359/**
3360 @brief WDI_DelTSReq will be called when the upper MAC has ended
3361 admission on a specific AC. This is to inform HW that
3362 QoS traffic parameters must be rest. Upon the call of
3363 this API the WLAN DAL will pack and send a HAL Del TS
3364 request message to the lower RIVA sub-system if DAL is
3365 in state STARTED.
3366
3367 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003368 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003369
3370 WDI_AddTSReq must have been called.
3371
3372 @param wdiDelTsReqParams: the del TS parameters as specified by
3373 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003374
Jeff Johnson295189b2012-06-20 16:38:30 -07003375 wdiDelTsRspCb: callback for passing back the response of
3376 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003377
Jeff Johnson295189b2012-06-20 16:38:30 -07003378 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003379 callback
3380
Jeff Johnson295189b2012-06-20 16:38:30 -07003381 @see WDI_AddTSReq
3382 @return Result of the function call
3383*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003384WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003385WDI_DelTSReq
3386(
3387 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3388 WDI_DelTsRspCb wdiDelTsRspCb,
3389 void* pUserData
3390)
3391{
3392 WDI_EventInfoType wdiEventData;
3393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3394
3395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003396 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003397 ------------------------------------------------------------------------*/
3398 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3399 {
3400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3401 "WDI API call before module is initialized - Fail request");
3402
Jeff Johnsone7245742012-09-05 17:12:55 -07003403 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003404 }
3405
3406 /*------------------------------------------------------------------------
3407 Fill in Event data and post to the Main FSM
3408 ------------------------------------------------------------------------*/
3409 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003410 wdiEventData.pEventData = pwdiDelTsReqParams;
3411 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3412 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003413 wdiEventData.pUserData = pUserData;
3414
3415 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3416
3417}/*WDI_DelTSReq*/
3418
3419
3420
3421/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003422 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003423 wishes to update the EDCA parameters used by HW for QoS
3424 data traffic. Upon the call of this API the WLAN DAL
3425 will pack and send a HAL Update EDCA Params request
3426 message to the lower RIVA sub-system if DAL is in state
3427 STARTED.
3428
3429 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003430 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003431
3432 WDI_PostAssocReq must have been called.
3433
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003436
Jeff Johnson295189b2012-06-20 16:38:30 -07003437 wdiUpdateEDCAParamsRspCb: callback for passing back the
3438 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003439
Jeff Johnson295189b2012-06-20 16:38:30 -07003440 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 callback
3442
Jeff Johnson295189b2012-06-20 16:38:30 -07003443 @see WDI_PostAssocReq
3444 @return Result of the function call
3445*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003446WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003447WDI_UpdateEDCAParams
3448(
3449 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3450 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3451 void* pUserData
3452)
3453{
3454 WDI_EventInfoType wdiEventData;
3455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3456
3457 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003458 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003459 ------------------------------------------------------------------------*/
3460 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3461 {
3462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3463 "WDI API call before module is initialized - Fail request");
3464
Jeff Johnsone7245742012-09-05 17:12:55 -07003465 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 }
3467
3468 /*------------------------------------------------------------------------
3469 Fill in Event data and post to the Main FSM
3470 ------------------------------------------------------------------------*/
3471 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003472 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3473 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3474 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 wdiEventData.pUserData = pUserData;
3476
3477 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3478
3479}/*WDI_UpdateEDCAParams*/
3480
3481
3482/**
3483 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3484 successfully a BA session and needs to notify the HW for
3485 the appropriate settings to take place. Upon the call of
3486 this API the WLAN DAL will pack and send a HAL Add BA
3487 request message to the lower RIVA sub-system if DAL is
3488 in state STARTED.
3489
3490 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003492
3493 WDI_PostAssocReq must have been called.
3494
3495 @param wdiAddBAReqParams: the add BA parameters as specified by
3496 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003497
Jeff Johnson295189b2012-06-20 16:38:30 -07003498 wdiAddBARspCb: callback for passing back the response of
3499 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003500
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003502 callback
3503
Jeff Johnson295189b2012-06-20 16:38:30 -07003504 @see WDI_PostAssocReq
3505 @return Result of the function call
3506*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003507WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003508WDI_AddBASessionReq
3509(
3510 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3511 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3512 void* pUserData
3513)
3514{
3515 WDI_EventInfoType wdiEventData;
3516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3517
3518 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 ------------------------------------------------------------------------*/
3521 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3522 {
3523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3524 "WDI API call before module is initialized - Fail request");
3525
Jeff Johnsone7245742012-09-05 17:12:55 -07003526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 }
3528
3529 /*------------------------------------------------------------------------
3530 Fill in Event data and post to the Main FSM
3531 ------------------------------------------------------------------------*/
3532 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003533 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3534 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3535 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 wdiEventData.pUserData = pUserData;
3537
3538 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3539
3540}/*WDI_AddBASessionReq*/
3541
3542/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003544 inform HW that it has deleted a previously created BA
3545 session. Upon the call of this API the WLAN DAL will
3546 pack and send a HAL Del BA request message to the lower
3547 RIVA sub-system if DAL is in state STARTED.
3548
3549 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003550 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003551
3552 WDI_AddBAReq must have been called.
3553
3554 @param wdiDelBAReqParams: the del BA parameters as specified by
3555 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003556
Jeff Johnson295189b2012-06-20 16:38:30 -07003557 wdiDelBARspCb: callback for passing back the response of
3558 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003559
Jeff Johnson295189b2012-06-20 16:38:30 -07003560 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003561 callback
3562
Jeff Johnson295189b2012-06-20 16:38:30 -07003563 @see WDI_AddBAReq
3564 @return Result of the function call
3565*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003566WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003567WDI_DelBAReq
3568(
3569 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3570 WDI_DelBARspCb wdiDelBARspCb,
3571 void* pUserData
3572)
3573{
3574 WDI_EventInfoType wdiEventData;
3575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3576
3577 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003578 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003579 ------------------------------------------------------------------------*/
3580 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3581 {
3582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3583 "WDI API call before module is initialized - Fail request");
3584
Jeff Johnsone7245742012-09-05 17:12:55 -07003585 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 }
3587
3588 /*------------------------------------------------------------------------
3589 Fill in Event data and post to the Main FSM
3590 ------------------------------------------------------------------------*/
3591 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003592 wdiEventData.pEventData = pwdiDelBAReqParams;
3593 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3594 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 wdiEventData.pUserData = pUserData;
3596
3597 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3598
3599}/*WDI_DelBAReq*/
3600
Jeff Johnsone7245742012-09-05 17:12:55 -07003601/*========================================================================
3602
Jeff Johnson295189b2012-06-20 16:38:30 -07003603 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003604
Jeff Johnson295189b2012-06-20 16:38:30 -07003605==========================================================================*/
3606
3607/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003608 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003609 wants to set the power save related configurations of
3610 the WLAN Device. Upon the call of this API the WLAN DAL
3611 will pack and send a HAL Update CFG request message to
3612 the lower RIVA sub-system if DAL is in state STARTED.
3613
3614 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003615 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003616
3617 WDI_Start must have been called.
3618
Jeff Johnsone7245742012-09-05 17:12:55 -07003619 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003620 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003621
Jeff Johnson295189b2012-06-20 16:38:30 -07003622 wdiSetPwrSaveCfgCb: callback for passing back the
3623 response of the set power save cfg operation received
3624 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003625
Jeff Johnson295189b2012-06-20 16:38:30 -07003626 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 callback
3628
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003630 @return Result of the function call
3631*/
3632WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003633WDI_SetPwrSaveCfgReq
3634(
3635 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3636 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3637 void* pUserData
3638)
3639{
3640 WDI_EventInfoType wdiEventData;
3641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3642
3643 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003644 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 ------------------------------------------------------------------------*/
3646 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3647 {
3648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3649 "WDI API call before module is initialized - Fail request");
3650
Jeff Johnsone7245742012-09-05 17:12:55 -07003651 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003652 }
3653
3654 /*------------------------------------------------------------------------
3655 Fill in Event data and post to the Main FSM
3656 ------------------------------------------------------------------------*/
3657 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003658 wdiEventData.pEventData = pwdiPowerSaveCfg;
3659 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3660 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003661 wdiEventData.pUserData = pUserData;
3662
3663 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3664
3665}/*WDI_SetPwrSaveCfgReq*/
3666
3667/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003668 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003669 request the device to get into IMPS power state. Upon
3670 the call of this API the WLAN DAL will send a HAL Enter
3671 IMPS request message to the lower RIVA sub-system if DAL
3672 is in state STARTED.
3673
3674 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003675 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003676
Jeff Johnsone7245742012-09-05 17:12:55 -07003677
3678 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003679 response of the Enter IMPS operation received from the
3680 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003681
Jeff Johnson295189b2012-06-20 16:38:30 -07003682 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003683 callback
3684
Jeff Johnson295189b2012-06-20 16:38:30 -07003685 @see WDI_Start
3686 @return Result of the function call
3687*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003688WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003689WDI_EnterImpsReq
3690(
Mihir Shetea4306052014-03-25 00:02:54 +05303691 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003692 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3693 void* pUserData
3694)
3695{
3696 WDI_EventInfoType wdiEventData;
3697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3698
3699 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 ------------------------------------------------------------------------*/
3702 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3703 {
3704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3705 "WDI API call before module is initialized - Fail request");
3706
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 }
3709
3710 /*------------------------------------------------------------------------
3711 Fill in Event data and post to the Main FSM
3712 ------------------------------------------------------------------------*/
3713 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303714 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3715 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003716 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 wdiEventData.pUserData = pUserData;
3718
3719 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3720
3721}/*WDI_EnterImpsReq*/
3722
3723/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003724 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003725 request the device to get out of IMPS power state. Upon
3726 the call of this API the WLAN DAL will send a HAL Exit
3727 IMPS request message to the lower RIVA sub-system if DAL
3728 is in state STARTED.
3729
3730 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003731 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003732
Jeff Johnson295189b2012-06-20 16:38:30 -07003733
Jeff Johnsone7245742012-09-05 17:12:55 -07003734
3735 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003736 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003737
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 callback
3740
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 @see WDI_Start
3742 @return Result of the function call
3743*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003744WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003745WDI_ExitImpsReq
3746(
3747 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3748 void* pUserData
3749)
3750{
3751 WDI_EventInfoType wdiEventData;
3752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3753
3754 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003755 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003756 ------------------------------------------------------------------------*/
3757 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3758 {
3759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3760 "WDI API call before module is initialized - Fail request");
3761
Jeff Johnsone7245742012-09-05 17:12:55 -07003762 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 }
3764
3765 /*------------------------------------------------------------------------
3766 Fill in Event data and post to the Main FSM
3767 ------------------------------------------------------------------------*/
3768 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003769 wdiEventData.pEventData = NULL;
3770 wdiEventData.uEventDataSize = 0;
3771 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003772 wdiEventData.pUserData = pUserData;
3773
3774 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3775
3776}/*WDI_ExitImpsReq*/
3777
3778/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003779 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 request the device to get into BMPS power state. Upon
3781 the call of this API the WLAN DAL will pack and send a
3782 HAL Enter BMPS request message to the lower RIVA
3783 sub-system if DAL is in state STARTED.
3784
3785 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003786 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003787
3788 WDI_PostAssocReq must have been called.
3789
Jeff Johnsone7245742012-09-05 17:12:55 -07003790 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003792
Jeff Johnson295189b2012-06-20 16:38:30 -07003793 wdiEnterBmpsRspCb: callback for passing back the
3794 response of the Enter BMPS operation received from the
3795 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003796
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003798 callback
3799
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 @see WDI_PostAssocReq
3801 @return Result of the function call
3802*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003803WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003804WDI_EnterBmpsReq
3805(
3806 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3807 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3808 void* pUserData
3809)
3810{
3811 WDI_EventInfoType wdiEventData;
3812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3813
3814 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003816 ------------------------------------------------------------------------*/
3817 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3818 {
3819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3820 "WDI API call before module is initialized - Fail request");
3821
Jeff Johnsone7245742012-09-05 17:12:55 -07003822 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003823 }
3824
3825 /*------------------------------------------------------------------------
3826 Fill in Event data and post to the Main FSM
3827 ------------------------------------------------------------------------*/
3828 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003829 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3830 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3831 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003832 wdiEventData.pUserData = pUserData;
3833
3834 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3835
3836}/*WDI_EnterBmpsReq*/
3837
3838/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003839 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003840 request the device to get out of BMPS power state. Upon
3841 the call of this API the WLAN DAL will pack and send a
3842 HAL Exit BMPS request message to the lower RIVA
3843 sub-system if DAL is in state STARTED.
3844
3845 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003846 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003847
3848 WDI_PostAssocReq must have been called.
3849
Jeff Johnsone7245742012-09-05 17:12:55 -07003850 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003851 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003852
Jeff Johnson295189b2012-06-20 16:38:30 -07003853 wdiExitBmpsRspCb: callback for passing back the response
3854 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003855
Jeff Johnson295189b2012-06-20 16:38:30 -07003856 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003857 callback
3858
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 @see WDI_PostAssocReq
3860 @return Result of the function call
3861*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003862WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003863WDI_ExitBmpsReq
3864(
3865 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3866 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3867 void* pUserData
3868)
3869{
3870 WDI_EventInfoType wdiEventData;
3871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3872
3873 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003875 ------------------------------------------------------------------------*/
3876 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3877 {
3878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3879 "WDI API call before module is initialized - Fail request");
3880
Jeff Johnsone7245742012-09-05 17:12:55 -07003881 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 }
3883
3884 /*------------------------------------------------------------------------
3885 Fill in Event data and post to the Main FSM
3886 ------------------------------------------------------------------------*/
3887 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003888 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3889 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3890 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003891 wdiEventData.pUserData = pUserData;
3892
3893 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3894
3895}/*WDI_ExitBmpsReq*/
3896
3897/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003898 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 request the device to get into UAPSD power state. Upon
3900 the call of this API the WLAN DAL will pack and send a
3901 HAL Enter UAPSD request message to the lower RIVA
3902 sub-system if DAL is in state STARTED.
3903
3904 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003905 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003906
3907 WDI_PostAssocReq must have been called.
3908 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003909
3910 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003911 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003912
Jeff Johnson295189b2012-06-20 16:38:30 -07003913 wdiEnterUapsdRspCb: callback for passing back the
3914 response of the Enter UAPSD operation received from the
3915 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003916
Jeff Johnson295189b2012-06-20 16:38:30 -07003917 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 callback
3919
Jeff Johnson295189b2012-06-20 16:38:30 -07003920 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3921 @return Result of the function call
3922*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003923WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003924WDI_EnterUapsdReq
3925(
3926 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3927 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3928 void* pUserData
3929)
3930{
3931 WDI_EventInfoType wdiEventData;
3932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3933
3934 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 ------------------------------------------------------------------------*/
3937 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3938 {
3939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3940 "WDI API call before module is initialized - Fail request");
3941
Jeff Johnsone7245742012-09-05 17:12:55 -07003942 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 }
3944
3945 /*------------------------------------------------------------------------
3946 Fill in Event data and post to the Main FSM
3947 ------------------------------------------------------------------------*/
3948 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003949 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3950 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3951 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 wdiEventData.pUserData = pUserData;
3953
3954 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3955
3956}/*WDI_EnterUapsdReq*/
3957
3958/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003959 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003960 request the device to get out of UAPSD power state. Upon
3961 the call of this API the WLAN DAL will send a HAL Exit
3962 UAPSD request message to the lower RIVA sub-system if
3963 DAL is in state STARTED.
3964
3965 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003966 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003967
3968 WDI_PostAssocReq must have been called.
3969
Jeff Johnsone7245742012-09-05 17:12:55 -07003970 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 response of the Exit UAPSD operation received from the
3972 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003973
Jeff Johnson295189b2012-06-20 16:38:30 -07003974 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003975 callback
3976
Jeff Johnson295189b2012-06-20 16:38:30 -07003977 @see WDI_PostAssocReq
3978 @return Result of the function call
3979*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003980WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003981WDI_ExitUapsdReq
3982(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003983 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003984 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3985 void* pUserData
3986)
3987{
3988 WDI_EventInfoType wdiEventData;
3989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3990
3991 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003993 ------------------------------------------------------------------------*/
3994 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3995 {
3996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3997 "WDI API call before module is initialized - Fail request");
3998
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 }
4001
4002 /*------------------------------------------------------------------------
4003 Fill in Event data and post to the Main FSM
4004 ------------------------------------------------------------------------*/
4005 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004006 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4007 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004008 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 wdiEventData.pUserData = pUserData;
4010
4011 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4012
4013}/*WDI_ExitUapsdReq*/
4014
4015/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004016 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 MAC wants to set the UAPSD related configurations
4018 of an associated STA (while acting as an AP) to the WLAN
4019 Device. Upon the call of this API the WLAN DAL will pack
4020 and send a HAL Update UAPSD params request message to
4021 the lower RIVA sub-system if DAL is in state STARTED.
4022
4023 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004024 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004025
4026 WDI_ConfigBSSReq must have been called.
4027
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004030
Jeff Johnson295189b2012-06-20 16:38:30 -07004031 wdiUpdateUapsdParamsCb: callback for passing back the
4032 response of the update UAPSD params operation received
4033 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004034
Jeff Johnson295189b2012-06-20 16:38:30 -07004035 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004036 callback
4037
Jeff Johnson295189b2012-06-20 16:38:30 -07004038 @see WDI_ConfigBSSReq
4039 @return Result of the function call
4040*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004041WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004042WDI_UpdateUapsdParamsReq
4043(
4044 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4045 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4046 void* pUserData
4047)
4048{
4049 WDI_EventInfoType wdiEventData;
4050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4051
4052 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 ------------------------------------------------------------------------*/
4055 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4056 {
4057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4058 "WDI API call before module is initialized - Fail request");
4059
Jeff Johnsone7245742012-09-05 17:12:55 -07004060 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 }
4062
4063 /*------------------------------------------------------------------------
4064 Fill in Event data and post to the Main FSM
4065 ------------------------------------------------------------------------*/
4066 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004067 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004068 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004069 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 wdiEventData.pUserData = pUserData;
4071
4072 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4073
4074}/*WDI_UpdateUapsdParamsReq*/
4075
4076/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004077 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 MAC wants to set the UAPSD related configurations before
4079 requesting for enter UAPSD power state to the WLAN
4080 Device. Upon the call of this API the WLAN DAL will pack
4081 and send a HAL Set UAPSD params request message to
4082 the lower RIVA sub-system if DAL is in state STARTED.
4083
4084 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004085 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004086
4087 WDI_PostAssocReq must have been called.
4088
4089 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4090 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004091
Jeff Johnson295189b2012-06-20 16:38:30 -07004092 wdiSetUapsdAcParamsCb: callback for passing back the
4093 response of the set UAPSD params operation received from
4094 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004095
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 callback
4098
Jeff Johnson295189b2012-06-20 16:38:30 -07004099 @see WDI_PostAssocReq
4100 @return Result of the function call
4101*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004102WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004103WDI_SetUapsdAcParamsReq
4104(
4105 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4106 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4107 void* pUserData
4108)
4109{
4110 WDI_EventInfoType wdiEventData;
4111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4112
4113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004114 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004115 ------------------------------------------------------------------------*/
4116 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4117 {
4118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4119 "WDI API call before module is initialized - Fail request");
4120
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004122 }
4123
4124 /*------------------------------------------------------------------------
4125 Fill in Event data and post to the Main FSM
4126 ------------------------------------------------------------------------*/
4127 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004128 wdiEventData.pEventData = pwdiUapsdInfo;
4129 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4130 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 wdiEventData.pUserData = pUserData;
4132
4133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4134
4135}/*WDI_SetUapsdAcParamsReq*/
4136
4137/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 MAC wants to set/reset the RXP filters for received pkts
4140 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4141 and send a HAL configure RXP filter request message to
4142 the lower RIVA sub-system.
4143
4144 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004146
Jeff Johnsone7245742012-09-05 17:12:55 -07004147
4148 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004149 filter as specified by the Device
4150 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004151
Jeff Johnson295189b2012-06-20 16:38:30 -07004152 wdiConfigureRxpFilterCb: callback for passing back the
4153 response of the configure RXP filter operation received
4154 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004155
Jeff Johnson295189b2012-06-20 16:38:30 -07004156 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004157 callback
4158
Jeff Johnson295189b2012-06-20 16:38:30 -07004159 @return Result of the function call
4160*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004161WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004162WDI_ConfigureRxpFilterReq
4163(
4164 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4165 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4166 void* pUserData
4167)
4168{
4169 WDI_EventInfoType wdiEventData;
4170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4171
4172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 ------------------------------------------------------------------------*/
4175 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4176 {
4177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4178 "WDI API call before module is initialized - Fail request");
4179
Jeff Johnsone7245742012-09-05 17:12:55 -07004180 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004181 }
4182
4183 /*------------------------------------------------------------------------
4184 Fill in Event data and post to the Main FSM
4185 ------------------------------------------------------------------------*/
4186 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004187 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4188 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4189 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004190 wdiEventData.pUserData = pUserData;
4191
4192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4193}/*WDI_ConfigureRxpFilterReq*/
4194
4195/**
4196 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4197 wants to set the beacon filters while in power save.
4198 Upon the call of this API the WLAN DAL will pack and
4199 send a Beacon filter request message to the
4200 lower RIVA sub-system.
4201
4202 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004203 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004204
Jeff Johnsone7245742012-09-05 17:12:55 -07004205
4206 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 filter as specified by the Device
4208 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004209
Jeff Johnson295189b2012-06-20 16:38:30 -07004210 wdiBeaconFilterCb: callback for passing back the
4211 response of the set beacon filter operation received
4212 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004213
Jeff Johnson295189b2012-06-20 16:38:30 -07004214 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004215 callback
4216
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 @return Result of the function call
4218*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004219WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004220WDI_SetBeaconFilterReq
4221(
4222 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4223 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4224 void* pUserData
4225)
4226{
4227 WDI_EventInfoType wdiEventData;
4228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4229
4230 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004231 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004232 ------------------------------------------------------------------------*/
4233 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4234 {
4235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4236 "WDI API call before module is initialized - Fail request");
4237
Jeff Johnsone7245742012-09-05 17:12:55 -07004238 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004239 }
4240
4241 /*------------------------------------------------------------------------
4242 Fill in Event data and post to the Main FSM
4243 ------------------------------------------------------------------------*/
4244 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004245 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004246 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004247 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 wdiEventData.pUserData = pUserData;
4249
4250 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4251}/*WDI_SetBeaconFilterReq*/
4252
4253/**
4254 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4255 wants to remove the beacon filter for particular IE
4256 while in power save. Upon the call of this API the WLAN
4257 DAL will pack and send a remove Beacon filter request
4258 message to the lower RIVA sub-system.
4259
4260 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004261 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004262
Jeff Johnsone7245742012-09-05 17:12:55 -07004263
4264 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004265 filter as specified by the Device
4266 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004267
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 wdiBeaconFilterCb: callback for passing back the
4269 response of the remove beacon filter operation received
4270 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004271
Jeff Johnson295189b2012-06-20 16:38:30 -07004272 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004273 callback
4274
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 @return Result of the function call
4276*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004277WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004278WDI_RemBeaconFilterReq
4279(
4280 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4281 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4282 void* pUserData
4283)
4284{
4285 WDI_EventInfoType wdiEventData;
4286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4287
4288 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004289 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004290 ------------------------------------------------------------------------*/
4291 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4292 {
4293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4294 "WDI API call before module is initialized - Fail request");
4295
Jeff Johnsone7245742012-09-05 17:12:55 -07004296 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004297 }
4298
4299 /*------------------------------------------------------------------------
4300 Fill in Event data and post to the Main FSM
4301 ------------------------------------------------------------------------*/
4302 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004303 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004304 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004306 wdiEventData.pUserData = pUserData;
4307
4308 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4309}/*WDI_RemBeaconFilterReq*/
4310
4311/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004312 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 MAC wants to set the RSSI thresholds related
4314 configurations while in power save. Upon the call of
4315 this API the WLAN DAL will pack and send a HAL Set RSSI
4316 thresholds request message to the lower RIVA
4317 sub-system if DAL is in state STARTED.
4318
4319 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004320 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004321
4322 WDI_PostAssocReq must have been called.
4323
4324 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4325 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004326
Jeff Johnson295189b2012-06-20 16:38:30 -07004327 wdiSetUapsdAcParamsCb: callback for passing back the
4328 response of the set UAPSD params operation received from
4329 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004330
Jeff Johnson295189b2012-06-20 16:38:30 -07004331 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004332 callback
4333
Jeff Johnson295189b2012-06-20 16:38:30 -07004334 @see WDI_PostAssocReq
4335 @return Result of the function call
4336*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004337WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004338WDI_SetRSSIThresholdsReq
4339(
4340 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4341 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4342 void* pUserData
4343)
4344{
4345 WDI_EventInfoType wdiEventData;
4346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4347
4348 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004349 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004350 ------------------------------------------------------------------------*/
4351 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4352 {
4353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4354 "WDI API call before module is initialized - Fail request");
4355
Jeff Johnsone7245742012-09-05 17:12:55 -07004356 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004357 }
4358
4359 /*------------------------------------------------------------------------
4360 Fill in Event data and post to the Main FSM
4361 ------------------------------------------------------------------------*/
4362 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004363 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004364 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004365 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004366 wdiEventData.pUserData = pUserData;
4367
4368 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4369}/* WDI_SetRSSIThresholdsReq*/
4370
4371/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004372 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004373 wants to set the filter to minimize unnecessary host
4374 wakeup due to broadcast traffic while in power save.
4375 Upon the call of this API the WLAN DAL will pack and
4376 send a HAL host offload request message to the
4377 lower RIVA sub-system if DAL is in state STARTED.
4378
4379 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004380 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004381
4382 WDI_PostAssocReq must have been called.
4383
Jeff Johnsone7245742012-09-05 17:12:55 -07004384 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004385 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004386
Jeff Johnson295189b2012-06-20 16:38:30 -07004387 wdiHostOffloadCb: callback for passing back the response
4388 of the host offload operation received from the
4389 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004390
Jeff Johnson295189b2012-06-20 16:38:30 -07004391 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 callback
4393
Jeff Johnson295189b2012-06-20 16:38:30 -07004394 @see WDI_PostAssocReq
4395 @return Result of the function call
4396*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004397WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004398WDI_HostOffloadReq
4399(
4400 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4401 WDI_HostOffloadCb wdiHostOffloadCb,
4402 void* pUserData
4403)
4404{
4405 WDI_EventInfoType wdiEventData;
4406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4407
4408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004410 ------------------------------------------------------------------------*/
4411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4412 {
4413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4414 "WDI API call before module is initialized - Fail request");
4415
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 }
4418
4419 /*------------------------------------------------------------------------
4420 Fill in Event data and post to the Main FSM
4421 ------------------------------------------------------------------------*/
4422 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004423 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004424 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004425 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004426 wdiEventData.pUserData = pUserData;
4427
4428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4429}/*WDI_HostOffloadReq*/
4430
4431/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004432 @brief WDI_KeepAliveReq will be called when the upper MAC
4433 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004434 and minimize unnecessary host wakeups due to while in power save.
4435 Upon the call of this API the WLAN DAL will pack and
4436 send a HAL Keep Alive request message to the
4437 lower RIVA sub-system if DAL is in state STARTED.
4438
4439 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004440 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004441
4442 WDI_PostAssocReq must have been called.
4443
Jeff Johnsone7245742012-09-05 17:12:55 -07004444 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004445 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004446
Jeff Johnson295189b2012-06-20 16:38:30 -07004447 wdiKeepAliveCb: callback for passing back the response
4448 of the Keep Alive operation received from the
4449 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004450
Jeff Johnson295189b2012-06-20 16:38:30 -07004451 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 callback
4453
Jeff Johnson295189b2012-06-20 16:38:30 -07004454 @see WDI_PostAssocReq
4455 @return Result of the function call
4456*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004457WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004458WDI_KeepAliveReq
4459(
4460 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4461 WDI_KeepAliveCb wdiKeepAliveCb,
4462 void* pUserData
4463)
4464{
4465 WDI_EventInfoType wdiEventData;
4466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4467
4468 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004469 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 ------------------------------------------------------------------------*/
4471 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4472 {
4473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4474 "WDI_KeepAliveReq: WDI API call before module "
4475 "is initialized - Fail request");
4476
Jeff Johnsone7245742012-09-05 17:12:55 -07004477 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004478 }
4479
4480 /*------------------------------------------------------------------------
4481 Fill in Event data and post to the Main FSM
4482 ------------------------------------------------------------------------*/
4483 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004484 wdiEventData.pEventData = pwdiKeepAliveParams;
4485 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4486 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 wdiEventData.pUserData = pUserData;
4488
4489 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4490}/*WDI_KeepAliveReq*/
4491
4492/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004493 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004494 wants to set the Wowl Bcast ptrn to minimize unnecessary
4495 host wakeup due to broadcast traffic while in power
4496 save. Upon the call of this API the WLAN DAL will pack
4497 and send a HAL Wowl Bcast ptrn request message to the
4498 lower RIVA sub-system if DAL is in state STARTED.
4499
4500 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004501 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004502
4503 WDI_PostAssocReq must have been called.
4504
Jeff Johnsone7245742012-09-05 17:12:55 -07004505 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004506 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004507
Jeff Johnson295189b2012-06-20 16:38:30 -07004508 wdiWowlAddBcPtrnCb: callback for passing back the
4509 response of the add Wowl bcast ptrn operation received
4510 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004511
Jeff Johnson295189b2012-06-20 16:38:30 -07004512 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004513 callback
4514
Jeff Johnson295189b2012-06-20 16:38:30 -07004515 @see WDI_PostAssocReq
4516 @return Result of the function call
4517*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004518WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004519WDI_WowlAddBcPtrnReq
4520(
4521 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4522 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4523 void* pUserData
4524)
4525{
4526 WDI_EventInfoType wdiEventData;
4527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4528
4529 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004530 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004531 ------------------------------------------------------------------------*/
4532 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4533 {
4534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4535 "WDI API call before module is initialized - Fail request");
4536
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 }
4539
4540 /*------------------------------------------------------------------------
4541 Fill in Event data and post to the Main FSM
4542 ------------------------------------------------------------------------*/
4543 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004544 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004545 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004546 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004547 wdiEventData.pUserData = pUserData;
4548
4549 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4550}/*WDI_WowlAddBcPtrnReq*/
4551
4552/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004553 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004554 wants to clear the Wowl Bcast ptrn. Upon the call of
4555 this API the WLAN DAL will pack and send a HAL delete
4556 Wowl Bcast ptrn request message to the lower RIVA
4557 sub-system if DAL is in state STARTED.
4558
4559 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004560 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004561
4562 WDI_WowlAddBcPtrnReq must have been called.
4563
Jeff Johnsone7245742012-09-05 17:12:55 -07004564 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004565 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004566
Jeff Johnson295189b2012-06-20 16:38:30 -07004567 wdiWowlDelBcPtrnCb: callback for passing back the
4568 response of the del Wowl bcast ptrn operation received
4569 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004570
Jeff Johnson295189b2012-06-20 16:38:30 -07004571 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004572 callback
4573
Jeff Johnson295189b2012-06-20 16:38:30 -07004574 @see WDI_WowlAddBcPtrnReq
4575 @return Result of the function call
4576*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004577WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004578WDI_WowlDelBcPtrnReq
4579(
4580 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4581 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4582 void* pUserData
4583)
4584{
4585 WDI_EventInfoType wdiEventData;
4586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4587
4588 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004589 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004590 ------------------------------------------------------------------------*/
4591 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4592 {
4593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4594 "WDI API call before module is initialized - Fail request");
4595
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 }
4598
4599 /*------------------------------------------------------------------------
4600 Fill in Event data and post to the Main FSM
4601 ------------------------------------------------------------------------*/
4602 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004604 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004605 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004606 wdiEventData.pUserData = pUserData;
4607
4608 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4609}/*WDI_WowlDelBcPtrnReq*/
4610
4611/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 wants to enter the Wowl state to minimize unnecessary
4614 host wakeup while in power save. Upon the call of this
4615 API the WLAN DAL will pack and send a HAL Wowl enter
4616 request message to the lower RIVA sub-system if DAL is
4617 in state STARTED.
4618
4619 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004620 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004621
4622 WDI_PostAssocReq must have been called.
4623
Jeff Johnsone7245742012-09-05 17:12:55 -07004624 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004625 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004626
Jeff Johnson295189b2012-06-20 16:38:30 -07004627 wdiWowlEnterReqCb: callback for passing back the
4628 response of the enter Wowl operation received from the
4629 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004630
Jeff Johnson295189b2012-06-20 16:38:30 -07004631 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004632 callback
4633
Jeff Johnson295189b2012-06-20 16:38:30 -07004634 @see WDI_PostAssocReq
4635 @return Result of the function call
4636*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004637WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004638WDI_WowlEnterReq
4639(
4640 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4641 WDI_WowlEnterReqCb wdiWowlEnterCb,
4642 void* pUserData
4643)
4644{
4645 WDI_EventInfoType wdiEventData;
4646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4647
4648 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004649 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004650 ------------------------------------------------------------------------*/
4651 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4652 {
4653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4654 "WDI API call before module is initialized - Fail request");
4655
Jeff Johnsone7245742012-09-05 17:12:55 -07004656 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 }
4658
4659 /*------------------------------------------------------------------------
4660 Fill in Event data and post to the Main FSM
4661 ------------------------------------------------------------------------*/
4662 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004664 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004665 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004666 wdiEventData.pUserData = pUserData;
4667
4668 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4669}/*WDI_WowlEnterReq*/
4670
4671/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 wants to exit the Wowl state. Upon the call of this API
4674 the WLAN DAL will pack and send a HAL Wowl exit request
4675 message to the lower RIVA sub-system if DAL is in state
4676 STARTED.
4677
4678 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004680
4681 WDI_WowlEnterReq must have been called.
4682
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004685
Jeff Johnson295189b2012-06-20 16:38:30 -07004686 wdiWowlExitReqCb: callback for passing back the response
4687 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004688
Jeff Johnson295189b2012-06-20 16:38:30 -07004689 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004690 callback
4691
Jeff Johnson295189b2012-06-20 16:38:30 -07004692 @see WDI_WowlEnterReq
4693 @return Result of the function call
4694*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004695WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004696WDI_WowlExitReq
4697(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004698 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004699 WDI_WowlExitReqCb wdiWowlExitCb,
4700 void* pUserData
4701)
4702{
4703 WDI_EventInfoType wdiEventData;
4704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4705
4706 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004707 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004708 ------------------------------------------------------------------------*/
4709 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4710 {
4711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4712 "WDI API call before module is initialized - Fail request");
4713
Jeff Johnsone7245742012-09-05 17:12:55 -07004714 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004715 }
4716
4717 /*------------------------------------------------------------------------
4718 Fill in Event data and post to the Main FSM
4719 ------------------------------------------------------------------------*/
4720 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004721 wdiEventData.pEventData = pwdiWowlExitParams;
4722 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004724 wdiEventData.pUserData = pUserData;
4725
4726 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4727}/*WDI_WowlExitReq*/
4728
4729/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004730 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004731 the upper MAC wants to dynamically adjusts the listen
4732 interval based on the WLAN/MSM activity. Upon the call
4733 of this API the WLAN DAL will pack and send a HAL
4734 configure Apps Cpu Wakeup State request message to the
4735 lower RIVA sub-system.
4736
4737 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004738 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004739
Jeff Johnsone7245742012-09-05 17:12:55 -07004740
4741 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004742 Apps Cpu Wakeup State as specified by the
4743 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004744
Jeff Johnson295189b2012-06-20 16:38:30 -07004745 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4746 back the response of the configure Apps Cpu Wakeup State
4747 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004748
Jeff Johnson295189b2012-06-20 16:38:30 -07004749 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004750 callback
4751
Jeff Johnson295189b2012-06-20 16:38:30 -07004752 @return Result of the function call
4753*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004754WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004755WDI_ConfigureAppsCpuWakeupStateReq
4756(
4757 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4758 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4759 void* pUserData
4760)
4761{
4762 WDI_EventInfoType wdiEventData;
4763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4764
4765 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004766 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 ------------------------------------------------------------------------*/
4768 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4769 {
4770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4771 "WDI API call before module is initialized - Fail request");
4772
Jeff Johnsone7245742012-09-05 17:12:55 -07004773 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004774 }
4775
4776 /*------------------------------------------------------------------------
4777 Fill in Event data and post to the Main FSM
4778 ------------------------------------------------------------------------*/
4779 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004780 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4781 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4782 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004783 wdiEventData.pUserData = pUserData;
4784
4785 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4786}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4787/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004788 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004789 to to perform a flush operation on a given AC. Upon the
4790 call of this API the WLAN DAL will pack and send a HAL
4791 Flush AC request message to the lower RIVA sub-system if
4792 DAL is in state STARTED.
4793
4794 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004795 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004796
4797 WDI_AddBAReq must have been called.
4798
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004800 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004801
Jeff Johnson295189b2012-06-20 16:38:30 -07004802 wdiFlushAcRspCb: callback for passing back the response
4803 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004804
Jeff Johnson295189b2012-06-20 16:38:30 -07004805 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004806 callback
4807
Jeff Johnson295189b2012-06-20 16:38:30 -07004808 @see WDI_AddBAReq
4809 @return Result of the function call
4810*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004811WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004812WDI_FlushAcReq
4813(
4814 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4815 WDI_FlushAcRspCb wdiFlushAcRspCb,
4816 void* pUserData
4817)
4818{
4819 WDI_EventInfoType wdiEventData;
4820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4821
4822 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004823 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004824 ------------------------------------------------------------------------*/
4825 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4826 {
4827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4828 "WDI API call before module is initialized - Fail request");
4829
Jeff Johnsone7245742012-09-05 17:12:55 -07004830 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004831 }
4832
4833 /*------------------------------------------------------------------------
4834 Fill in Event data and post to the Main FSM
4835 ------------------------------------------------------------------------*/
4836 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004837 wdiEventData.pEventData = pwdiFlushAcReqParams;
4838 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4839 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 wdiEventData.pUserData = pUserData;
4841
4842 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4843
4844}/*WDI_FlushAcReq*/
4845
4846/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004847 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004848 wants to notify the lower mac on a BT AMP event. This is
4849 to inform BTC-SLM that some BT AMP event occurred. Upon
4850 the call of this API the WLAN DAL will pack and send a
4851 HAL BT AMP event request message to the lower RIVA
4852 sub-system if DAL is in state STARTED.
4853
4854 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004856
Jeff Johnsone7245742012-09-05 17:12:55 -07004857
4858 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004859 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004860
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 wdiBtAmpEventRspCb: callback for passing back the
4862 response of the BT AMP event operation received from the
4863 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004864
Jeff Johnson295189b2012-06-20 16:38:30 -07004865 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004866 callback
4867
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 @return Result of the function call
4869*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004870WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004871WDI_BtAmpEventReq
4872(
4873 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4874 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4875 void* pUserData
4876)
4877{
4878 WDI_EventInfoType wdiEventData;
4879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4880
4881 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004882 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004883 ------------------------------------------------------------------------*/
4884 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4885 {
4886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4887 "WDI API call before module is initialized - Fail request");
4888
Jeff Johnsone7245742012-09-05 17:12:55 -07004889 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004890 }
4891
4892 /*------------------------------------------------------------------------
4893 Fill in Event data and post to the Main FSM
4894 ------------------------------------------------------------------------*/
4895 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004896 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4897 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4898 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004899 wdiEventData.pUserData = pUserData;
4900
4901 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4902
4903}/*WDI_BtAmpEventReq*/
4904
Jeff Johnsone7245742012-09-05 17:12:55 -07004905#ifdef FEATURE_OEM_DATA_SUPPORT
4906/**
4907 @brief WDI_Start Oem Data Req will be called when the upper MAC
4908 wants to notify the lower mac on a oem data Req event.Upon
4909 the call of this API the WLAN DAL will pack and send a
4910 HAL OEM Data Req event request message to the lower RIVA
4911 sub-system if DAL is in state STARTED.
4912
4913 In state BUSY this request will be queued. Request won't
4914 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004915
4916
Jeff Johnsone7245742012-09-05 17:12:55 -07004917
4918 @param pwdiOemDataReqParams: the Oem Data Req as
4919 specified by the Device Interface
4920
4921 wdiStartOemDataRspCb: callback for passing back the
4922 response of the Oem Data Req received from the
4923 device
4924
4925 pUserData: user data will be passed back with the
4926 callback
4927
4928 @return Result of the function call
4929*/
4930WDI_Status
4931WDI_StartOemDataReq
4932(
4933 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4934 WDI_oemDataRspCb wdiOemDataRspCb,
4935 void* pUserData
4936)
4937{
4938 WDI_EventInfoType wdiEventData;
4939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4940
4941 /*------------------------------------------------------------------------
4942 Sanity Check
4943 ------------------------------------------------------------------------*/
4944 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4945 {
4946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4947 "WDI API call before module is initialized - Fail request");
4948
4949 return WDI_STATUS_E_NOT_ALLOWED;
4950 }
4951
4952 /*------------------------------------------------------------------------
4953 Fill in Event data and post to the Main FSM
4954 ------------------------------------------------------------------------*/
4955 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4956 wdiEventData.pEventData = pwdiOemDataReqParams;
4957 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4958 wdiEventData.pCBfnc = wdiOemDataRspCb;
4959 wdiEventData.pUserData = pUserData;
4960
4961 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4962
4963
4964}
4965
4966#endif
4967
4968
4969/*========================================================================
4970
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004972
Jeff Johnson295189b2012-06-20 16:38:30 -07004973==========================================================================*/
4974/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004975 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004976 the WLAN HW to change the current channel of operation.
4977 Upon the call of this API the WLAN DAL will pack and
4978 send a HAL Start request message to the lower RIVA
4979 sub-system if DAL is in state STARTED.
4980
4981 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004982 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004983
4984 WDI_Start must have been called.
4985
Jeff Johnsone7245742012-09-05 17:12:55 -07004986 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004988
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 wdiSwitchChRspCb: callback for passing back the response
4990 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004991
Jeff Johnson295189b2012-06-20 16:38:30 -07004992 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 callback
4994
Jeff Johnson295189b2012-06-20 16:38:30 -07004995 @see WDI_Start
4996 @return Result of the function call
4997*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004998WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004999WDI_SwitchChReq
5000(
5001 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5002 WDI_SwitchChRspCb wdiSwitchChRspCb,
5003 void* pUserData
5004)
5005{
5006 WDI_EventInfoType wdiEventData;
5007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5008
5009 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005010 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005011 ------------------------------------------------------------------------*/
5012 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5013 {
5014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5015 "WDI API call before module is initialized - Fail request");
5016
Jeff Johnsone7245742012-09-05 17:12:55 -07005017 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005018 }
5019
5020 /*------------------------------------------------------------------------
5021 Fill in Event data and post to the Main FSM
5022 ------------------------------------------------------------------------*/
5023 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005024 wdiEventData.pEventData = pwdiSwitchChReqParams;
5025 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5026 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 wdiEventData.pUserData = pUserData;
5028
5029 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5030
5031}/*WDI_SwitchChReq*/
5032
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005033/**
5034 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5035 the WLAN HW to change the current channel of operation.
5036 Upon the call of this API the WLAN DAL will pack and
5037 send a HAL Start request message to the lower RIVA
5038 sub-system if DAL is in state STARTED.
5039 This request message also includes source of channel switch,
5040 like CSA,
5041
5042 In state BUSY this request will be queued. Request won't
5043 be allowed in any other state.
5044
5045 WDI_Start must have been called.
5046
5047 @param wdiSwitchChReqParams: the switch ch parameters as
5048 specified by the Device Interface
5049
5050 wdiSwitchChRspCb: callback for passing back the response
5051 of the switch ch operation received from the device
5052
5053 pUserData: user data will be passed back with the
5054 callback
5055
5056 @see WDI_Start
5057 @return Result of the function call
5058*/
5059WDI_Status
5060WDI_SwitchChReq_V1
5061(
5062 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5063 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5064 void* pUserData
5065)
5066{
5067 WDI_EventInfoType wdiEventData;
5068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5070 "WDI API call WDI_SwitchChReq_V1");
5071 /*------------------------------------------------------------------------
5072 Sanity Check
5073 ------------------------------------------------------------------------*/
5074 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5075 {
5076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5077 "WDI API call before module is initialized - Fail request");
5078
5079 return WDI_STATUS_E_NOT_ALLOWED;
5080 }
5081
5082 /*------------------------------------------------------------------------
5083 Fill in Event data and post to the Main FSM
5084 ------------------------------------------------------------------------*/
5085 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5086 wdiEventData.pEventData = pwdiSwitchChReqParams;
5087 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5088 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5089 wdiEventData.pUserData = pUserData;
5090
5091 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5092
5093}/*WDI_SwitchChReq_V1*/
5094
Jeff Johnson295189b2012-06-20 16:38:30 -07005095
5096/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005097 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005098 wishes to add or update a STA in HW. Upon the call of
5099 this API the WLAN DAL will pack and send a HAL Start
5100 message request message to the lower RIVA sub-system if
5101 DAL is in state STARTED.
5102
5103 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005104 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005105
5106 WDI_Start must have been called.
5107
Jeff Johnsone7245742012-09-05 17:12:55 -07005108 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005109 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005110
Jeff Johnson295189b2012-06-20 16:38:30 -07005111 wdiConfigSTARspCb: callback for passing back the
5112 response of the config STA operation received from the
5113 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005114
Jeff Johnson295189b2012-06-20 16:38:30 -07005115 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005116 callback
5117
Jeff Johnson295189b2012-06-20 16:38:30 -07005118 @see WDI_Start
5119 @return Result of the function call
5120*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005121WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005122WDI_ConfigSTAReq
5123(
5124 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5125 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5126 void* pUserData
5127)
5128{
5129 WDI_EventInfoType wdiEventData;
5130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5131
5132 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005133 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005134 ------------------------------------------------------------------------*/
5135 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5136 {
5137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5138 "WDI API call before module is initialized - Fail request");
5139
Jeff Johnsone7245742012-09-05 17:12:55 -07005140 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005141 }
5142
5143 /*------------------------------------------------------------------------
5144 Fill in Event data and post to the Main FSM
5145 ------------------------------------------------------------------------*/
5146 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005147 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5148 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5149 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005150 wdiEventData.pUserData = pUserData;
5151
5152 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5153
5154}/*WDI_ConfigSTAReq*/
5155
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005156 /**
5157 @brief WDI_UpdateChannelReq will be called when the upper MAC
5158 wants to update the channel list on change in country code.
5159
5160 In state BUSY this request will be queued. Request won't
5161 be allowed in any other state.
5162
5163 WDI_UpdateChannelReq must have been called.
5164
5165 @param wdiUpdateChannelReqParams: the updated channel parameters
5166 as specified by the Device Interface
5167
5168 wdiUpdateChannelRspCb: callback for passing back the
5169 response of the update channel operation received from
5170 the device
5171
5172 pUserData: user data will be passed back with the
5173 callback
5174
5175 @return Result of the function call
5176*/
5177WDI_Status
5178WDI_UpdateChannelReq
5179(
5180 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5181 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5182 void* pUserData
5183)
5184{
5185 WDI_EventInfoType wdiEventData = {{0}};
5186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5187
5188 /*------------------------------------------------------------------------
5189 Sanity Check
5190 ------------------------------------------------------------------------*/
5191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5192 {
5193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5194 "WDI API call before module is initialized - Fail request");
5195
5196 return WDI_STATUS_E_NOT_ALLOWED;
5197 }
5198
5199 /*------------------------------------------------------------------------
5200 Fill in Event data and post to the Main FSM
5201 ------------------------------------------------------------------------*/
5202 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5203 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5204 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5205 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5206 wdiEventData.pUserData = pUserData;
5207
5208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5209
5210}/*WDI_UpdateChannelReq*/
5211
Jeff Johnson295189b2012-06-20 16:38:30 -07005212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005213 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005214 wants to change the state of an ongoing link. Upon the
5215 call of this API the WLAN DAL will pack and send a HAL
5216 Start message request message to the lower RIVA
5217 sub-system if DAL is in state STARTED.
5218
5219 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005220 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005221
5222 WDI_JoinStartReq must have been called.
5223
Jeff Johnsone7245742012-09-05 17:12:55 -07005224 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005225 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005226
Jeff Johnson295189b2012-06-20 16:38:30 -07005227 wdiSetLinkStateRspCb: callback for passing back the
5228 response of the set link state operation received from
5229 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005230
Jeff Johnson295189b2012-06-20 16:38:30 -07005231 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005232 callback
5233
Jeff Johnson295189b2012-06-20 16:38:30 -07005234 @see WDI_JoinStartReq
5235 @return Result of the function call
5236*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005237WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005238WDI_SetLinkStateReq
5239(
5240 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5241 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5242 void* pUserData
5243)
5244{
5245 WDI_EventInfoType wdiEventData;
5246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5247
5248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005250 ------------------------------------------------------------------------*/
5251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5252 {
5253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5254 "WDI API call before module is initialized - Fail request");
5255
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005257 }
5258
5259 /*------------------------------------------------------------------------
5260 Fill in Event data and post to the Main FSM
5261 ------------------------------------------------------------------------*/
5262 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005263 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5264 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5265 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005266 wdiEventData.pUserData = pUserData;
5267
5268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5269
5270}/*WDI_SetLinkStateReq*/
5271
5272
5273/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005274 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005275 to get statistics (MIB counters) from the device. Upon
5276 the call of this API the WLAN DAL will pack and send a
5277 HAL Start request message to the lower RIVA sub-system
5278 if DAL is in state STARTED.
5279
5280 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005282
5283 WDI_Start must have been called.
5284
Jeff Johnsone7245742012-09-05 17:12:55 -07005285 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005286 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005287
Jeff Johnson295189b2012-06-20 16:38:30 -07005288 wdiGetStatsRspCb: callback for passing back the response
5289 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005290
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005292 callback
5293
Jeff Johnson295189b2012-06-20 16:38:30 -07005294 @see WDI_Start
5295 @return Result of the function call
5296*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005297WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005298WDI_GetStatsReq
5299(
5300 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5301 WDI_GetStatsRspCb wdiGetStatsRspCb,
5302 void* pUserData
5303)
5304{
5305 WDI_EventInfoType wdiEventData;
5306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5307
5308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005310 ------------------------------------------------------------------------*/
5311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5312 {
5313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5314 "WDI API call before module is initialized - Fail request");
5315
Jeff Johnsone7245742012-09-05 17:12:55 -07005316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005317 }
5318
5319 /*------------------------------------------------------------------------
5320 Fill in Event data and post to the Main FSM
5321 ------------------------------------------------------------------------*/
5322 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005323 wdiEventData.pEventData = pwdiGetStatsReqParams;
5324 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5325 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005326 wdiEventData.pUserData = pUserData;
5327
5328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5329
5330}/*WDI_GetStatsReq*/
5331
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005332#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005333/**
5334 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5335 to get roam rssi from the device. Upon
5336 the call of this API the WLAN DAL will pack and send a
5337 HAL Start request message to the lower RIVA sub-system
5338 if DAL is in state STARTED.
5339
5340 In state BUSY this request will be queued. Request won't
5341 be allowed in any other state.
5342
5343 WDI_Start must have been called.
5344
5345 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5346 specified by the Device Interface
5347
5348 wdiGetRoamRssiRspCb: callback for passing back the response
5349 of the get stats operation received from the device
5350
5351 pUserData: user data will be passed back with the
5352 callback
5353
5354 @see WDI_Start
5355 @return Result of the function call
5356*/
5357WDI_Status
5358WDI_GetRoamRssiReq
5359(
5360 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5361 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5362 void* pUserData
5363)
5364{
5365 WDI_EventInfoType wdiEventData;
5366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5367
5368 /*------------------------------------------------------------------------
5369 Sanity Check
5370 ------------------------------------------------------------------------*/
5371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5372 {
5373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5374 "WDI API call before module is initialized - Fail request");
5375
5376 return WDI_STATUS_E_NOT_ALLOWED;
5377 }
5378 /*------------------------------------------------------------------------
5379 Fill in Event data and post to the Main FSM
5380 ------------------------------------------------------------------------*/
5381 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5382 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5383 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5384 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5385 wdiEventData.pUserData = pUserData;
5386
5387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5388
5389}/*WDI_GetRoamRssiReq*/
5390#endif
5391
Jeff Johnson295189b2012-06-20 16:38:30 -07005392
5393/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005395 it wishes to change the configuration of the WLAN
5396 Device. Upon the call of this API the WLAN DAL will pack
5397 and send a HAL Update CFG request message to the lower
5398 RIVA sub-system if DAL is in state STARTED.
5399
5400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005402
5403 WDI_Start must have been called.
5404
Jeff Johnsone7245742012-09-05 17:12:55 -07005405 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005406 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005407
Jeff Johnson295189b2012-06-20 16:38:30 -07005408 wdiUpdateCfgsRspCb: callback for passing back the
5409 response of the update cfg operation received from the
5410 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005411
Jeff Johnson295189b2012-06-20 16:38:30 -07005412 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005413 callback
5414
Jeff Johnson295189b2012-06-20 16:38:30 -07005415 @see WDI_Start
5416 @return Result of the function call
5417*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005418WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005419WDI_UpdateCfgReq
5420(
5421 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5422 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5423 void* pUserData
5424)
5425{
5426 WDI_EventInfoType wdiEventData;
5427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5428
5429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005431 ------------------------------------------------------------------------*/
5432 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5433 {
5434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5435 "WDI API call before module is initialized - Fail request");
5436
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005438 }
5439
5440 /*------------------------------------------------------------------------
5441 Fill in Event data and post to the Main FSM
5442 ------------------------------------------------------------------------*/
5443 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005444 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5445 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5446 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005447 wdiEventData.pUserData = pUserData;
5448
5449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5450
5451}/*WDI_UpdateCfgReq*/
5452
5453
5454
5455/**
5456 @brief WDI_AddBAReq will be called when the upper MAC has setup
5457 successfully a BA session and needs to notify the HW for
5458 the appropriate settings to take place. Upon the call of
5459 this API the WLAN DAL will pack and send a HAL Add BA
5460 request message to the lower RIVA sub-system if DAL is
5461 in state STARTED.
5462
5463 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005464 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005465
5466 WDI_PostAssocReq must have been called.
5467
5468 @param wdiAddBAReqParams: the add BA parameters as specified by
5469 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005470
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 wdiAddBARspCb: callback for passing back the response of
5472 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005473
Jeff Johnson295189b2012-06-20 16:38:30 -07005474 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005475 callback
5476
Jeff Johnson295189b2012-06-20 16:38:30 -07005477 @see WDI_PostAssocReq
5478 @return Result of the function call
5479*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005480WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005481WDI_AddBAReq
5482(
5483 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5484 WDI_AddBARspCb wdiAddBARspCb,
5485 void* pUserData
5486)
5487{
5488 WDI_EventInfoType wdiEventData;
5489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5490
5491 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005492 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005493 ------------------------------------------------------------------------*/
5494 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5495 {
5496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5497 "WDI API call before module is initialized - Fail request");
5498
Jeff Johnsone7245742012-09-05 17:12:55 -07005499 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005500 }
5501
5502 /*------------------------------------------------------------------------
5503 Fill in Event data and post to the Main FSM
5504 ------------------------------------------------------------------------*/
5505 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005506 wdiEventData.pEventData = pwdiAddBAReqParams;
5507 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5508 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005509 wdiEventData.pUserData = pUserData;
5510
5511 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5512
5513}/*WDI_AddBAReq*/
5514
5515
5516/**
5517 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5518 successfully a BA session and needs to notify the HW for
5519 the appropriate settings to take place. Upon the call of
5520 this API the WLAN DAL will pack and send a HAL Add BA
5521 request message to the lower RIVA sub-system if DAL is
5522 in state STARTED.
5523
5524 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005525 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005526
5527 WDI_PostAssocReq must have been called.
5528
5529 @param wdiAddBAReqParams: the add BA parameters as specified by
5530 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005531
Jeff Johnson295189b2012-06-20 16:38:30 -07005532 wdiAddBARspCb: callback for passing back the response of
5533 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005534
Jeff Johnson295189b2012-06-20 16:38:30 -07005535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005536 callback
5537
Jeff Johnson295189b2012-06-20 16:38:30 -07005538 @see WDI_PostAssocReq
5539 @return Result of the function call
5540*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005541WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005542WDI_TriggerBAReq
5543(
5544 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5545 WDI_TriggerBARspCb wdiTriggerBARspCb,
5546 void* pUserData
5547)
5548{
5549 WDI_EventInfoType wdiEventData;
5550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5551
5552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005554 ------------------------------------------------------------------------*/
5555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5556 {
5557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5558 "WDI API call before module is initialized - Fail request");
5559
Jeff Johnsone7245742012-09-05 17:12:55 -07005560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005561 }
5562
5563 /*------------------------------------------------------------------------
5564 Fill in Event data and post to the Main FSM
5565 ------------------------------------------------------------------------*/
5566 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005567 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5568 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5569 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005570 wdiEventData.pUserData = pUserData;
5571
5572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5573
5574}/*WDI_AddBAReq*/
5575
5576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005577 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005578 wishes to update any of the Beacon parameters used by HW.
5579 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5580 message to the lower RIVA sub-system if DAL is in state
5581 STARTED.
5582
5583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005585
5586 WDI_PostAssocReq must have been called.
5587
Jeff Johnsone7245742012-09-05 17:12:55 -07005588 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005589 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005590
Jeff Johnson295189b2012-06-20 16:38:30 -07005591 wdiUpdateBeaconParamsRspCb: callback for passing back the
5592 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005593
Jeff Johnson295189b2012-06-20 16:38:30 -07005594 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005595 callback
5596
Jeff Johnson295189b2012-06-20 16:38:30 -07005597 @see WDI_PostAssocReq
5598 @return Result of the function call
5599*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005600WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005601WDI_UpdateBeaconParamsReq
5602(
5603 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5604 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5605 void* pUserData
5606)
5607{
5608 WDI_EventInfoType wdiEventData;
5609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5610
5611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005613 ------------------------------------------------------------------------*/
5614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5615 {
5616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5617 "WDI API call before module is initialized - Fail request");
5618
Jeff Johnsone7245742012-09-05 17:12:55 -07005619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005620 }
5621
5622 /*------------------------------------------------------------------------
5623 Fill in Event data and post to the Main FSM
5624 ------------------------------------------------------------------------*/
5625 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005626 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5627 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5628 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 wdiEventData.pUserData = pUserData;
5630
5631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5632
5633}/*WDI_UpdateBeaconParamsReq*/
5634
5635/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005636 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 wishes to update the Beacon template used by HW.
5638 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5639 message to the lower RIVA sub-system if DAL is in state
5640 STARTED.
5641
5642 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005643 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005644
5645 WDI_PostAssocReq must have been called.
5646
Jeff Johnsone7245742012-09-05 17:12:55 -07005647 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005648 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005649
Jeff Johnson295189b2012-06-20 16:38:30 -07005650 wdiSendBeaconParamsRspCb: callback for passing back the
5651 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005652
Jeff Johnson295189b2012-06-20 16:38:30 -07005653 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005654 callback
5655
Jeff Johnson295189b2012-06-20 16:38:30 -07005656 @see WDI_PostAssocReq
5657 @return Result of the function call
5658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005660WDI_SendBeaconParamsReq
5661(
5662 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5663 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5664 void* pUserData
5665)
5666{
5667 WDI_EventInfoType wdiEventData;
5668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5669
5670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005671 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005672 ------------------------------------------------------------------------*/
5673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5674 {
5675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5676 "WDI API call before module is initialized - Fail request");
5677
Jeff Johnsone7245742012-09-05 17:12:55 -07005678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 }
5680
5681 /*------------------------------------------------------------------------
5682 Fill in Event data and post to the Main FSM
5683 ------------------------------------------------------------------------*/
5684 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005685 wdiEventData.pEventData = pwdiSendBeaconParams;
5686 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5687 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005688 wdiEventData.pUserData = pUserData;
5689
5690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5691
5692}/*WDI_SendBeaconParamsReq*/
5693
5694/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005695 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005696 upper MAC wants to update the probe response template to
5697 be transmitted as Soft AP
5698 Upon the call of this API the WLAN DAL will
5699 pack and send the probe rsp template message to the
5700 lower RIVA sub-system if DAL is in state STARTED.
5701
5702 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005704
5705
Jeff Johnsone7245742012-09-05 17:12:55 -07005706 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005707 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005708
Jeff Johnson295189b2012-06-20 16:38:30 -07005709 wdiSendBeaconParamsRspCb: callback for passing back the
5710 response of the Send Beacon Params operation received
5711 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005712
Jeff Johnson295189b2012-06-20 16:38:30 -07005713 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005714 callback
5715
Jeff Johnson295189b2012-06-20 16:38:30 -07005716 @see WDI_AddBAReq
5717 @return Result of the function call
5718*/
5719
Jeff Johnsone7245742012-09-05 17:12:55 -07005720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005721WDI_UpdateProbeRspTemplateReq
5722(
5723 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5724 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5725 void* pUserData
5726)
5727{
5728 WDI_EventInfoType wdiEventData;
5729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5730
5731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005733 ------------------------------------------------------------------------*/
5734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5735 {
5736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5737 "WDI API call before module is initialized - Fail request");
5738
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 }
5741
5742 /*------------------------------------------------------------------------
5743 Fill in Event data and post to the Main FSM
5744 ------------------------------------------------------------------------*/
5745 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5747 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5748 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 wdiEventData.pUserData = pUserData;
5750
5751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5752
5753}/*WDI_UpdateProbeRspTemplateReq*/
5754
5755/**
5756 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5757 to the NV memory.
5758
5759
5760 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5761 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005762
Jeff Johnson295189b2012-06-20 16:38:30 -07005763 wdiNvDownloadRspCb: callback for passing back the response of
5764 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005765
Jeff Johnson295189b2012-06-20 16:38:30 -07005766 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005767 callback
5768
Jeff Johnson295189b2012-06-20 16:38:30 -07005769 @see WDI_PostAssocReq
5770 @return Result of the function call
5771*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005772WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005773WDI_NvDownloadReq
5774(
5775 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5776 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5777 void* pUserData
5778)
5779{
5780 WDI_EventInfoType wdiEventData;
5781
5782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005783 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005784 ------------------------------------------------------------------------*/
5785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5786 {
5787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5788 "WDI API call before module is initialized - Fail request");
5789
Jeff Johnsone7245742012-09-05 17:12:55 -07005790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 }
5792
5793 /*------------------------------------------------------------------------
5794 Fill in Event data and post to the Main FSM
5795 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005796 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5797 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5798 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5799 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005800 wdiEventData.pUserData = pUserData;
5801
5802 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5803
5804}/*WDI_NVDownloadReq*/
5805
Jeff Johnson295189b2012-06-20 16:38:30 -07005806/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005808 upper MAC wants to send Notice of Absence
5809 Upon the call of this API the WLAN DAL will
5810 pack and send the probe rsp template message to the
5811 lower RIVA sub-system if DAL is in state STARTED.
5812
5813 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005815
5816
Jeff Johnsone7245742012-09-05 17:12:55 -07005817 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005818 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005819
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 wdiSendBeaconParamsRspCb: callback for passing back the
5821 response of the Send Beacon Params operation received
5822 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005823
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005825 callback
5826
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 @see WDI_AddBAReq
5828 @return Result of the function call
5829*/
5830WDI_Status
5831WDI_SetP2PGONOAReq
5832(
5833 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5834 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5835 void* pUserData
5836)
5837{
5838 WDI_EventInfoType wdiEventData;
5839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5840
5841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 ------------------------------------------------------------------------*/
5844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5845 {
5846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5847 "WDI API call before module is initialized - Fail request");
5848
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 }
5851
5852 /*------------------------------------------------------------------------
5853 Fill in Event data and post to the Main FSM
5854 ------------------------------------------------------------------------*/
5855 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005856 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5857 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5858 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 wdiEventData.pUserData = pUserData;
5860
5861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5862
5863}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005864
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305865#ifdef FEATURE_WLAN_TDLS
5866/**
5867 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5868 upper MAC wants to send TDLS Link Establish Request Parameters
5869 Upon the call of this API the WLAN DAL will
5870 pack and send the TDLS Link Establish Request message to the
5871 lower RIVA sub-system if DAL is in state STARTED.
5872
5873 In state BUSY this request will be queued. Request won't
5874 be allowed in any other state.
5875
5876
5877 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5878 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5879
5880 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5881 response of the TDLS Link Establish request received
5882 from the device
5883
5884 pUserData: user data will be passed back with the
5885 callback
5886
5887 @see
5888 @return Result of the function call
5889*/
5890WDI_Status
5891WDI_SetTDLSLinkEstablishReq
5892(
5893 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5894 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5895 void* pUserData
5896)
5897{
5898 WDI_EventInfoType wdiEventData;
5899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5900
5901 /*------------------------------------------------------------------------
5902 Sanity Check
5903 ------------------------------------------------------------------------*/
5904 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5905 {
5906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5907 "WDI API call before module is initialized - Fail request");
5908
5909 return WDI_STATUS_E_NOT_ALLOWED;
5910 }
5911
5912 /*------------------------------------------------------------------------
5913 Fill in Event data and post to the Main FSM
5914 ------------------------------------------------------------------------*/
5915 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5916 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5917 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5918 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5919 wdiEventData.pUserData = pUserData;
5920
5921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5922
5923}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05305924
5925//tdlsoffchan
5926/**
5927 @brief WDI_SetTDLSChanSwitchReq will be called when the
5928 upper MAC wants to send TDLS Chan Switch Request Parameters
5929 Upon the call of this API the WLAN DAL will
5930 pack and send the TDLS Link Establish Request message to the
5931 lower RIVA sub-system if DAL is in state STARTED.
5932
5933 In state BUSY this request will be queued. Request won't
5934 be allowed in any other state.
5935
5936
5937 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
5938 for Link Establishment (Used for TDLS Off Channel ...)
5939
5940 wdiTDLSChanSwitchReqRspCb: callback for passing back the
5941 response of the TDLS Chan Switch request received
5942 from the device
5943
5944 pUserData: user data will be passed back with the
5945 callback
5946
5947 @see
5948 @return Result of the function call
5949*/
5950WDI_Status
5951WDI_SetTDLSChanSwitchReq
5952(
5953 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
5954 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
5955 void* pUserData
5956)
5957{
5958 WDI_EventInfoType wdiEventData;
5959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5960
5961 /*------------------------------------------------------------------------
5962 Sanity Check
5963 ------------------------------------------------------------------------*/
5964 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5965 {
5966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5967 "WDI API call before module is initialized - Fail request");
5968
5969 return WDI_STATUS_E_NOT_ALLOWED;
5970 }
5971
5972 /*------------------------------------------------------------------------
5973 Fill in Event data and post to the Main FSM
5974 ------------------------------------------------------------------------*/
5975 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
5976 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
5977 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
5978 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
5979 wdiEventData.pUserData = pUserData;
5980
5981 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5982
5983}/*WDI_SetTDLSChanSwitchReq*/
5984
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305985#endif
5986
Jeff Johnson295189b2012-06-20 16:38:30 -07005987/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005988 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005989 UMAC wanted to add STA self while opening any new session
5990 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005991 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005992
5993
Jeff Johnsone7245742012-09-05 17:12:55 -07005994 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005995 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005996
Jeff Johnson295189b2012-06-20 16:38:30 -07005997 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005998 callback
5999
6000 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 @return Result of the function call
6002*/
6003WDI_Status
6004WDI_AddSTASelfReq
6005(
6006 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6007 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6008 void* pUserData
6009)
6010{
6011 WDI_EventInfoType wdiEventData;
6012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6013
6014 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006015 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006016 ------------------------------------------------------------------------*/
6017 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6018 {
6019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6020 "WDI API call before module is initialized - Fail request");
6021
Jeff Johnsone7245742012-09-05 17:12:55 -07006022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006023 }
6024
6025 /*------------------------------------------------------------------------
6026 Fill in Event data and post to the Main FSM
6027 ------------------------------------------------------------------------*/
6028 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006029 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6030 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6031 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006032 wdiEventData.pUserData = pUserData;
6033
6034 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6035
6036}/*WDI_AddSTASelfReq*/
6037
6038
Jeff Johnsone7245742012-09-05 17:12:55 -07006039#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006040/**
6041 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6042 the device of a successful add TSpec negotiation. HW
6043 needs to receive the TSpec Info from the UMAC in order
6044 to configure properly the QoS data traffic. Upon the
6045 call of this API the WLAN DAL will pack and send a HAL
6046 Add TS request message to the lower RIVA sub-system if
6047 DAL is in state STARTED.
6048
6049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006051
6052 WDI_PostAssocReq must have been called.
6053
6054 @param wdiAddTsReqParams: the add TS parameters as specified by
6055 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006056
Jeff Johnson295189b2012-06-20 16:38:30 -07006057 wdiAddTsRspCb: callback for passing back the response of
6058 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006059
Jeff Johnson295189b2012-06-20 16:38:30 -07006060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006061 callback
6062
Jeff Johnson295189b2012-06-20 16:38:30 -07006063 @see WDI_PostAssocReq
6064 @return Result of the function call
6065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006067WDI_AggrAddTSReq
6068(
6069 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6070 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6071 void* pUserData
6072)
6073{
6074 WDI_EventInfoType wdiEventData;
6075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6076
6077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006079 ------------------------------------------------------------------------*/
6080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6081 {
6082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6083 "WDI API call before module is initialized - Fail request");
6084
Jeff Johnsone7245742012-09-05 17:12:55 -07006085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006086 }
6087
6088 /*------------------------------------------------------------------------
6089 Fill in Event data and post to the Main FSM
6090 ------------------------------------------------------------------------*/
6091 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006092 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6093 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6094 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006095 wdiEventData.pUserData = pUserData;
6096
6097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6098
6099}/*WDI_AggrAddTSReq*/
6100
6101#endif /* WLAN_FEATURE_VOWIFI_11R */
6102
Jeff Johnson295189b2012-06-20 16:38:30 -07006103/**
6104 @brief WDI_FTMCommandReq
6105 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006106
6107 @param ftmCommandReq: FTM Command Body
6108 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006109 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006110
Jeff Johnson295189b2012-06-20 16:38:30 -07006111 @see
6112 @return Result of the function call
6113*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006114WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006115WDI_FTMCommandReq
6116(
6117 WDI_FTMCommandReqType *ftmCommandReq,
6118 WDI_FTMCommandRspCb ftmCommandRspCb,
6119 void *pUserData
6120)
6121{
6122 WDI_EventInfoType wdiEventData;
6123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6124
6125 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006126 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006127 ------------------------------------------------------------------------*/
6128 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6129 {
6130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6131 "WDI API call before module is initialized - Fail request");
6132
Jeff Johnsone7245742012-09-05 17:12:55 -07006133 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006134 }
6135
6136 /*------------------------------------------------------------------------
6137 Fill in Event data and post to the Main FSM
6138 ------------------------------------------------------------------------*/
6139 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6140 wdiEventData.pEventData = (void *)ftmCommandReq;
6141 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6142 wdiEventData.pCBfnc = ftmCommandRspCb;
6143 wdiEventData.pUserData = pUserData;
6144
6145 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6146}
Jeff Johnson295189b2012-06-20 16:38:30 -07006147/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006148 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006149
6150 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006151 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006152
6153
6154 @param pwdiResumeReqParams: as specified by
6155 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006156
Jeff Johnson295189b2012-06-20 16:38:30 -07006157 wdiResumeReqRspCb: callback for passing back the response of
6158 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006159
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006161 callback
6162
6163 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006164 @return Result of the function call
6165*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006166WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006167WDI_HostResumeReq
6168(
6169 WDI_ResumeParamsType* pwdiResumeReqParams,
6170 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6171 void* pUserData
6172)
6173{
6174 WDI_EventInfoType wdiEventData;
6175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6176
6177 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006178 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006179 ------------------------------------------------------------------------*/
6180 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6181 {
6182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6183 "WDI API call before module is initialized - Fail request");
6184
Jeff Johnsone7245742012-09-05 17:12:55 -07006185 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006186 }
6187
6188 /*------------------------------------------------------------------------
6189 Fill in Event data and post to the Main FSM
6190 ------------------------------------------------------------------------*/
6191 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006192 wdiEventData.pEventData = pwdiResumeReqParams;
6193 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6194 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 wdiEventData.pUserData = pUserData;
6196
6197 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6198
6199}/*WDI_HostResumeReq*/
6200
6201/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006202 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006203
6204 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006205 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006206
6207
6208 @param pwdiDelStaSelfReqParams: as specified by
6209 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006210
Jeff Johnson295189b2012-06-20 16:38:30 -07006211 wdiDelStaSelfRspCb: callback for passing back the response of
6212 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006213
Jeff Johnson295189b2012-06-20 16:38:30 -07006214 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006215 callback
6216
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 @see WDI_PostAssocReq
6218 @return Result of the function call
6219*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006220WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006221WDI_DelSTASelfReq
6222(
6223 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6224 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6225 void* pUserData
6226)
6227{
6228 WDI_EventInfoType wdiEventData;
6229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6230
6231 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006232 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006233 ------------------------------------------------------------------------*/
6234 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6235 {
6236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6237 "WDI API call before module is initialized - Fail request");
6238
Jeff Johnsone7245742012-09-05 17:12:55 -07006239 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006240 }
6241
6242 /*------------------------------------------------------------------------
6243 Fill in Event data and post to the Main FSM
6244 ------------------------------------------------------------------------*/
6245 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006246 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6247 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6248 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006249 wdiEventData.pUserData = pUserData;
6250
6251 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6252
6253}/*WDI_AggrAddTSReq*/
6254
6255/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006256 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6257 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006258 Upon the call of this API the WLAN DAL will pack
6259 and send a HAL Set Tx Per Tracking request message to the
6260 lower RIVA sub-system if DAL is in state STARTED.
6261
6262 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006263 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006264
Jeff Johnsone7245742012-09-05 17:12:55 -07006265 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006266 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006267
Jeff Johnson295189b2012-06-20 16:38:30 -07006268 pwdiSetTxPerTrackingRspCb: callback for passing back the
6269 response of the set Tx PER Tracking configurations operation received
6270 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006271
Jeff Johnson295189b2012-06-20 16:38:30 -07006272 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006273 callback
6274
Jeff Johnson295189b2012-06-20 16:38:30 -07006275 @return Result of the function call
6276*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006277WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006278WDI_SetTxPerTrackingReq
6279(
6280 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6281 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6282 void* pUserData
6283)
6284{
6285 WDI_EventInfoType wdiEventData;
6286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6287
6288 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006289 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 ------------------------------------------------------------------------*/
6291 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6292 {
6293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6294 "WDI API call before module is initialized - Fail request");
6295
Jeff Johnsone7245742012-09-05 17:12:55 -07006296 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006297 }
6298
6299 /*------------------------------------------------------------------------
6300 Fill in Event data and post to the Main FSM
6301 ------------------------------------------------------------------------*/
6302 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006303 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 wdiEventData.pUserData = pUserData;
6307
6308 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6309
6310}/*WDI_SetTxPerTrackingReq*/
6311
6312/**
6313 @brief WDI_SetTmLevelReq
6314 If HW Thermal condition changed, driver should react based on new
6315 HW thermal condition.
6316
6317 @param pwdiSetTmLevelReq: New thermal condition information
6318
6319 pwdiSetTmLevelRspCb: callback
6320
6321 usrData: user data will be passed back with the
6322 callback
6323
6324 @return Result of the function call
6325*/
6326WDI_Status
6327WDI_SetTmLevelReq
6328(
6329 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6330 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6331 void *usrData
6332)
6333{
6334 WDI_EventInfoType wdiEventData;
6335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6336
6337 /*------------------------------------------------------------------------
6338 Sanity Check
6339 ------------------------------------------------------------------------*/
6340 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6341 {
6342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6343 "WDI API call before module is initialized - Fail request");
6344
6345 return WDI_STATUS_E_NOT_ALLOWED;
6346 }
6347
6348 /*------------------------------------------------------------------------
6349 Fill in Event data and post to the Main FSM
6350 ------------------------------------------------------------------------*/
6351 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6352 wdiEventData.pEventData = pwdiSetTmLevelReq;
6353 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6354 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6355 wdiEventData.pUserData = usrData;
6356
6357 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6358}
6359
6360/**
6361 @brief WDI_HostSuspendInd
6362
6363 Suspend Indication from the upper layer will be sent
6364 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006365
Jeff Johnson295189b2012-06-20 16:38:30 -07006366 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006367
6368 @see
6369
Jeff Johnson295189b2012-06-20 16:38:30 -07006370 @return Status of the request
6371*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006372WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006373WDI_HostSuspendInd
6374(
6375 WDI_SuspendParamsType* pwdiSuspendIndParams
6376)
6377{
6378
6379 WDI_EventInfoType wdiEventData;
6380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6381
6382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006384 ------------------------------------------------------------------------*/
6385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6386 {
6387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6388 "WDI API call before module is initialized - Fail request");
6389
Jeff Johnsone7245742012-09-05 17:12:55 -07006390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006391 }
6392
6393 /*------------------------------------------------------------------------
6394 Fill in Event data and post to the Main FSM
6395 ------------------------------------------------------------------------*/
6396 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006397 wdiEventData.pEventData = pwdiSuspendIndParams;
6398 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6399 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 wdiEventData.pUserData = NULL;
6401
6402 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6403
6404}/*WDI_HostSuspendInd*/
6405
6406/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006407 @brief WDI_TrafficStatsInd
6408 Traffic Stats from the upper layer will be sent
6409 down to HAL
6410
6411 @param WDI_TrafficStatsIndType
6412
6413 @see
6414
6415 @return Status of the request
6416*/
6417WDI_Status
6418WDI_TrafficStatsInd
6419(
6420 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6421)
6422{
6423
6424 WDI_EventInfoType wdiEventData;
6425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6426
6427 /*------------------------------------------------------------------------
6428 Sanity Check
6429 ------------------------------------------------------------------------*/
6430 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6431 {
6432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6433 "WDI API call before module is initialized - Fail request");
6434
6435 return WDI_STATUS_E_NOT_ALLOWED;
6436 }
6437
6438 /*------------------------------------------------------------------------
6439 Fill in Event data and post to the Main FSM
6440 ------------------------------------------------------------------------*/
6441 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6442 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6443 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6444 wdiEventData.pCBfnc = NULL;
6445 wdiEventData.pUserData = NULL;
6446
6447 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6448
6449}/*WDI_TrafficStatsInd*/
6450
Chet Lanctot186b5732013-03-18 10:26:30 -07006451#ifdef WLAN_FEATURE_11W
6452/**
6453 @brief WDI_ExcludeUnencryptedInd
6454 Register with HAL to receive/drop unencrypted frames
6455
6456 @param WDI_ExcludeUnencryptIndType
6457
6458 @see
6459
6460 @return Status of the request
6461*/
6462WDI_Status
6463WDI_ExcludeUnencryptedInd
6464(
6465 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6466)
6467{
6468
6469 WDI_EventInfoType wdiEventData;
6470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6471
6472 /*------------------------------------------------------------------------
6473 Sanity Check
6474 ------------------------------------------------------------------------*/
6475 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6476 {
6477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6478 "WDI API call before module is initialized - Fail request");
6479
6480 return WDI_STATUS_E_NOT_ALLOWED;
6481 }
6482
6483 /*------------------------------------------------------------------------
6484 Fill in Event data and post to the Main FSM
6485 ------------------------------------------------------------------------*/
6486 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6487 wdiEventData.pEventData = pWdiExcUnencParams;
6488 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6489 wdiEventData.pCBfnc = NULL;
6490 wdiEventData.pUserData = NULL;
6491
6492 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6493
6494}/*WDI_TrafficStatsInd*/
6495#endif
6496
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006497/**
Yue Mab9c86f42013-08-14 15:59:08 -07006498 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6499
6500 @param addPeriodicTxPtrnParams: Add Pattern parameters
6501
6502 @see
6503
6504 @return Status of the request
6505*/
6506WDI_Status
6507WDI_AddPeriodicTxPtrnInd
6508(
6509 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6510)
6511{
6512 WDI_EventInfoType wdiEventData;
6513
6514 /*-------------------------------------------------------------------------
6515 Sanity Check
6516 ------------------------------------------------------------------------*/
6517 if (eWLAN_PAL_FALSE == gWDIInitialized)
6518 {
6519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6520 "WDI API call before module is initialized - Fail request!");
6521
6522 return WDI_STATUS_E_NOT_ALLOWED;
6523 }
6524
6525 /*-------------------------------------------------------------------------
6526 Fill in Event data and post to the Main FSM
6527 ------------------------------------------------------------------------*/
6528 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6529 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6530 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6531 wdiEventData.pCBfnc = NULL;
6532 wdiEventData.pUserData = NULL;
6533
6534 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6535}
6536
6537/**
6538 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6539
6540 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6541
6542 @see
6543
6544 @return Status of the request
6545*/
6546WDI_Status
6547WDI_DelPeriodicTxPtrnInd
6548(
6549 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6550)
6551{
6552 WDI_EventInfoType wdiEventData;
6553
6554 /*-------------------------------------------------------------------------
6555 Sanity Check
6556 ------------------------------------------------------------------------*/
6557 if (eWLAN_PAL_FALSE == gWDIInitialized)
6558 {
6559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6560 "WDI API call before module is initialized - Fail request!");
6561
6562 return WDI_STATUS_E_NOT_ALLOWED;
6563 }
6564
6565 /*-------------------------------------------------------------------------
6566 Fill in Event data and post to the Main FSM
6567 ------------------------------------------------------------------------*/
6568 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6569 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6570 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6571 wdiEventData.pCBfnc = NULL;
6572 wdiEventData.pUserData = NULL;
6573
6574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6575}
6576
6577/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006578 @brief WDI_HALDumpCmdReq
6579 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006580
6581 @param halDumpCmdReqParams: Hal Dump Command Body
6582 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006583 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006584
Jeff Johnson295189b2012-06-20 16:38:30 -07006585 @see
6586 @return Result of the function call
6587*/
6588WDI_Status WDI_HALDumpCmdReq
6589(
6590 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6591 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6592 void *pUserData
6593)
6594{
6595 WDI_EventInfoType wdiEventData;
6596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6597
6598 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006599 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006600 ------------------------------------------------------------------------*/
6601 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6602 {
6603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6604 "WDI API call before module is initialized - Fail request");
6605
Jeff Johnsone7245742012-09-05 17:12:55 -07006606 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006607 }
6608
6609 /*------------------------------------------------------------------------
6610 Fill in Event data and post to the Main FSM
6611 ------------------------------------------------------------------------*/
6612 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6613 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6614 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6615 wdiEventData.pCBfnc = halDumpCmdRspCb;
6616 wdiEventData.pUserData = pUserData;
6617
6618 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6619}
6620
Jeff Johnsone7245742012-09-05 17:12:55 -07006621/*============================================================================
6622
Jeff Johnson295189b2012-06-20 16:38:30 -07006623 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006624
Jeff Johnson295189b2012-06-20 16:38:30 -07006625 ============================================================================*/
6626
6627/**
6628 @brief Main FSM Start function for all states except BUSY
6629
Jeff Johnsone7245742012-09-05 17:12:55 -07006630
6631 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006632 wdiEV: event posted to the main DAL FSM
6633 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006634 structure
6635
Jeff Johnson295189b2012-06-20 16:38:30 -07006636 @see
6637 @return Result of the function call
6638*/
6639WDI_Status
6640WDI_PostMainEvent
6641(
Jeff Johnsone7245742012-09-05 17:12:55 -07006642 WDI_ControlBlockType* pWDICtx,
6643 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006644 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006645)
6646{
Jeff Johnsone7245742012-09-05 17:12:55 -07006647 WDI_Status wdiStatus;
6648 WDI_MainFuncType pfnWDIMainEvHdlr;
6649 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6651
6652 /*-------------------------------------------------------------------------
6653 Sanity check
6654 -------------------------------------------------------------------------*/
6655 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6656 ( wdiEV >= WDI_MAX_EVENT ))
6657 {
6658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6659 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6660 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006661 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006662 }
6663
6664 /*Access to the global state must be locked */
6665 wpalMutexAcquire(&pWDICtx->wptMutex);
6666
6667 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006668 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006669
6670 wdiOldState = pWDICtx->uGlobalState;
6671
6672 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006673 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6674 response comes from CCPU for the request sent by host:
6675 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 -07006676 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 -07006677 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006678 CCPU:
6679 don't change the state */
6680 if ( WDI_RESPONSE_EVENT != wdiEV)
6681 {
6682 /*Transition to BUSY State - the request is now being processed by the FSM,
6683 if the request fails we shall transition back to the old state, if not
6684 the request will manage its own state transition*/
6685 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6686 }
6687 /* If the state function associated with the EV is NULL it means that this
6688 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 {
6691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006692 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006694 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 }
6696 else
6697 {
6698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006699 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006700 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006701 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 }
6703
6704 /* If a request handles itself well it will end up in a success or in a
6705 pending
6706 Success - means that the request was processed and the proper state
6707 transition already occurred or will occur when the resp is received
6708 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006709
Jeff Johnson295189b2012-06-20 16:38:30 -07006710 Pending - means the request could not be processed at this moment in time
6711 because the FSM was already busy so no state transition or dequeueing
6712 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006713
Jeff Johnson295189b2012-06-20 16:38:30 -07006714 Success for synchronous case means that the transition may occur and
6715 processing of pending requests may continue - so it should go through
6716 and restores the state and continue processing queued requests*/
6717 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6718 ( WDI_STATUS_PENDING != wdiStatus ))
6719 {
6720 if ( WDI_RESPONSE_EVENT != wdiEV)
6721 {
6722 /*The request has failed or could not be processed - transition back to
6723 the old state - check to see if anything was queued and try to execute
6724 The dequeue logic should post a message to a thread and return - no
6725 actual processing can occur */
6726 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6727 }
6728 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006729
Jeff Johnson295189b2012-06-20 16:38:30 -07006730 }
6731
6732 /* we have completed processing the event */
6733 wpalMutexRelease(&pWDICtx->wptMutex);
6734
Jeff Johnsone7245742012-09-05 17:12:55 -07006735 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006736
6737}/*WDI_PostMainEvent*/
6738
6739
6740/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006741 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006742--------------------------------------------------------------------------*/
6743/**
6744 @brief Main FSM Start function for all states except BUSY
6745
Jeff Johnsone7245742012-09-05 17:12:55 -07006746
6747 @param pWDICtx: pointer to the WLAN DAL context
6748 pEventData: pointer to the event information structure
6749
Jeff Johnson295189b2012-06-20 16:38:30 -07006750 @see
6751 @return Result of the function call
6752*/
6753WDI_Status
6754WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006755(
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 WDI_ControlBlockType* pWDICtx,
6757 WDI_EventInfoType* pEventData
6758)
6759{
6760
6761 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006762 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006763 ----------------------------------------------------------------------*/
6764 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6765 {
6766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006767 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 pWDICtx, pEventData);
6769 return WDI_STATUS_E_FAILURE;
6770 }
6771
6772 wpalMutexAcquire(&pWDICtx->wptMutex);
6773
6774 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006775 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006776 ----------------------------------------------------------------------*/
6777 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6778 {
6779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6780 "Control Transport not yet Open - queueing the request");
6781
6782 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006783 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006784
6785 wpalMutexRelease(&pWDICtx->wptMutex);
6786 return WDI_STATUS_PENDING;
6787 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006788
Jeff Johnson295189b2012-06-20 16:38:30 -07006789 wpalMutexRelease(&pWDICtx->wptMutex);
6790
6791 /*Return Success*/
6792 return WDI_ProcessRequest( pWDICtx, pEventData );
6793
6794}/*WDI_MainStart*/
6795
6796/**
6797 @brief Main FSM Response function for state INIT
6798
Jeff Johnsone7245742012-09-05 17:12:55 -07006799
6800 @param pWDICtx: pointer to the WLAN DAL context
6801 pEventData: pointer to the event information structure
6802
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 @see
6804 @return Result of the function call
6805*/
6806WDI_Status
6807WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006808(
Jeff Johnson295189b2012-06-20 16:38:30 -07006809 WDI_ControlBlockType* pWDICtx,
6810 WDI_EventInfoType* pEventData
6811)
6812{
6813 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006814 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006815 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006816 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006817
6818 /*Return Success*/
6819 return WDI_STATUS_E_NOT_ALLOWED;
6820}/* WDI_MainRspInit */
6821
6822/**
6823 @brief Main FSM Close function for all states except BUSY
6824
Jeff Johnsone7245742012-09-05 17:12:55 -07006825
6826 @param pWDICtx: pointer to the WLAN DAL context
6827 pEventData: pointer to the event information structure
6828
Jeff Johnson295189b2012-06-20 16:38:30 -07006829 @see
6830 @return Result of the function call
6831*/
6832WDI_Status
6833WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006834(
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 WDI_ControlBlockType* pWDICtx,
6836 WDI_EventInfoType* pEventData
6837)
6838{
6839
6840 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006841 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 ----------------------------------------------------------------------*/
6843 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6844 {
6845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006846 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 pWDICtx, pEventData);
6848 return WDI_STATUS_E_FAILURE;
6849 }
6850
6851 /*Return Success*/
6852 return WDI_ProcessRequest( pWDICtx, pEventData );
6853
6854}/*WDI_MainClose*/
6855/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006856 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006857--------------------------------------------------------------------------*/
6858/**
6859 @brief Main FSM Start function for state STARTED
6860
Jeff Johnsone7245742012-09-05 17:12:55 -07006861
6862 @param pWDICtx: pointer to the WLAN DAL context
6863 pEventData: pointer to the event information structure
6864
Jeff Johnson295189b2012-06-20 16:38:30 -07006865 @see
6866 @return Result of the function call
6867*/
6868WDI_Status
6869WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006870(
Jeff Johnson295189b2012-06-20 16:38:30 -07006871 WDI_ControlBlockType* pWDICtx,
6872 WDI_EventInfoType* pEventData
6873)
6874{
6875 WDI_StartRspCb wdiStartRspCb = NULL;
6876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6877
6878 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006879 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006880 ----------------------------------------------------------------------*/
6881 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6882 {
6883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006884 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006885 pWDICtx, pEventData);
6886 return WDI_STATUS_E_FAILURE;
6887 }
6888
6889 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006890 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 ----------------------------------------------------------------------*/
6892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006893 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006894
6895 wpalMutexAcquire(&pWDICtx->wptMutex);
6896
6897 /*Transition back to started because the post function transitioned us to
6898 busy*/
6899 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6900
6901 /*Check to see if any request is pending*/
6902 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006903
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 wpalMutexRelease(&pWDICtx->wptMutex);
6905
6906 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006907 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6908
Jeff Johnson295189b2012-06-20 16:38:30 -07006909 /*Notify UMAC*/
6910 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6911
6912 /*Return Success*/
6913 return WDI_STATUS_SUCCESS;
6914
6915}/*WDI_MainStartStarted*/
6916
6917/**
6918 @brief Main FSM Stop function for state STARTED
6919
Jeff Johnsone7245742012-09-05 17:12:55 -07006920
6921 @param pWDICtx: pointer to the WLAN DAL context
6922 pEventData: pointer to the event information structure
6923
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 @see
6925 @return Result of the function call
6926*/
6927WDI_Status
6928WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006929(
Jeff Johnson295189b2012-06-20 16:38:30 -07006930 WDI_ControlBlockType* pWDICtx,
6931 WDI_EventInfoType* pEventData
6932)
6933{
6934 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006935 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006936 ----------------------------------------------------------------------*/
6937 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6938 {
6939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006940 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006941 pWDICtx, pEventData);
6942 return WDI_STATUS_E_FAILURE;
6943 }
6944
6945 /*State at this point is BUSY - because we enter this state before posting
6946 an event to the FSM in order to prevent potential race conditions*/
6947
6948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6949 "Processing stop request in FSM");
6950
6951 /*Return Success*/
6952 return WDI_ProcessRequest( pWDICtx, pEventData );
6953
6954}/*WDI_MainStopStarted*/
6955/**
6956 @brief Main FSM Request function for state started
6957
Jeff Johnsone7245742012-09-05 17:12:55 -07006958
6959 @param pWDICtx: pointer to the WLAN DAL context
6960 pEventData: pointer to the event information structure
6961
Jeff Johnson295189b2012-06-20 16:38:30 -07006962 @see
6963 @return Result of the function call
6964*/
6965WDI_Status
6966WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006967(
Jeff Johnson295189b2012-06-20 16:38:30 -07006968 WDI_ControlBlockType* pWDICtx,
6969 WDI_EventInfoType* pEventData
6970)
6971{
6972
6973 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006974 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 ----------------------------------------------------------------------*/
6976 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6977 {
6978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006979 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006980 pWDICtx, pEventData);
6981 return WDI_STATUS_E_FAILURE;
6982 }
6983
6984 /*State at this point is BUSY - because we enter this state before posting
6985 an event to the FSM in order to prevent potential race conditions*/
6986
6987 /*Return Success*/
6988 return WDI_ProcessRequest( pWDICtx, pEventData );
6989
6990}/*WDI_MainReqStarted*/
6991
6992/**
6993 @brief Main FSM Response function for all states except INIT
6994
Jeff Johnsone7245742012-09-05 17:12:55 -07006995
6996 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006997 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006998
Jeff Johnson295189b2012-06-20 16:38:30 -07006999 @see
7000 @return Result of the function call
7001*/
7002WDI_Status
7003WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007004(
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 WDI_ControlBlockType* pWDICtx,
7006 WDI_EventInfoType* pEventData
7007)
7008{
Jeff Johnsone7245742012-09-05 17:12:55 -07007009 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 wpt_boolean expectedResponse;
7011
7012 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 ----------------------------------------------------------------------*/
7015 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7016 {
7017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007018 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007019 pWDICtx, pEventData);
7020 return WDI_STATUS_E_FAILURE;
7021 }
7022
7023 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7024 {
7025 /* we received an expected response */
7026 expectedResponse = eWLAN_PAL_TRUE;
7027
7028 /*We expect that we will transition to started after this processing*/
7029 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7030
7031 /* we are no longer expecting a response */
7032 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7033 }
7034 else
7035 {
7036 /* we received an indication or unexpected response */
7037 expectedResponse = eWLAN_PAL_FALSE;
7038 /* for indications no need to update state from what it is right
7039 now, unless it explicitly does it in the indication handler (say
7040 for device failure ind) */
7041 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7042 }
7043
7044 /*Process the response and indication */
7045 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7046
7047 /*Lock the CB as we are about to do a state transition*/
7048 wpalMutexAcquire(&pWDICtx->wptMutex);
7049
7050 /*Transition to the expected state after the response processing
7051 - this should always be started state with the following exceptions:
7052 1. processing of a failed start response
7053 2. device failure detected while processing response
7054 3. stop response received*/
7055 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007056
Jeff Johnson295189b2012-06-20 16:38:30 -07007057 /*Dequeue request that may have been queued while we were waiting for the
7058 response */
7059 if ( expectedResponse )
7060 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 }
7063
7064 wpalMutexRelease(&pWDICtx->wptMutex);
7065
7066 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007067 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007068
7069}/*WDI_MainRsp*/
7070
7071/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007072 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007073--------------------------------------------------------------------------*/
7074/**
7075 @brief Main FSM Stop function for state STOPPED
7076
Jeff Johnsone7245742012-09-05 17:12:55 -07007077
7078 @param pWDICtx: pointer to the WLAN DAL context
7079 pEventData: pointer to the event information structure
7080
Jeff Johnson295189b2012-06-20 16:38:30 -07007081 @see
7082 @return Result of the function call
7083*/
7084WDI_Status
7085WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007086(
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 WDI_ControlBlockType* pWDICtx,
7088 WDI_EventInfoType* pEventData
7089)
7090{
7091 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007092 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007093 ----------------------------------------------------------------------*/
7094 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7095 {
7096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007097 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007098 pWDICtx, pEventData);
7099 return WDI_STATUS_E_FAILURE;
7100 }
7101
7102 /*We should normally not get a STOP request if we are already stopped
7103 since we should normally be stopped by the UMAC. However in some
7104 error situations we put ourselves in the stopped state without the
7105 UMAC knowing, so when we get a STOP request in this state we still
7106 process it since we need to clean up the underlying state */
7107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7108 "Processing stop request while stopped in FSM");
7109
7110 /*Return Success*/
7111 return WDI_ProcessRequest( pWDICtx, pEventData );
7112
7113}/*WDI_MainStopStopped*/
7114
7115/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007116 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007117--------------------------------------------------------------------------*/
7118/**
7119 @brief Main FSM Start function for state BUSY
7120
Jeff Johnsone7245742012-09-05 17:12:55 -07007121
7122 @param pWDICtx: pointer to the WLAN DAL context
7123 pEventData: pointer to the event information structure
7124
Jeff Johnson295189b2012-06-20 16:38:30 -07007125 @see
7126 @return Result of the function call
7127*/
7128WDI_Status
7129WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007130(
Jeff Johnson295189b2012-06-20 16:38:30 -07007131 WDI_ControlBlockType* pWDICtx,
7132 WDI_EventInfoType* pEventData
7133)
7134{
7135 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007136 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007137 ----------------------------------------------------------------------*/
7138 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7139 {
7140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007141 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007142 pWDICtx, pEventData);
7143 return WDI_STATUS_E_FAILURE;
7144 }
7145
7146 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007147 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007148 ----------------------------------------------------------------------*/
7149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7150 "WDI Busy state - queue start request");
7151
7152 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007153 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007154
7155 /*Return Success*/
7156 return WDI_STATUS_PENDING;
7157}/*WDI_MainStartBusy*/
7158
7159/**
7160 @brief Main FSM Stop function for state BUSY
7161
Jeff Johnsone7245742012-09-05 17:12:55 -07007162
7163 @param pWDICtx: pointer to the WLAN DAL context
7164 pEventData: pointer to the event information structure
7165
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 @see
7167 @return Result of the function call
7168*/
7169WDI_Status
7170WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007171(
Jeff Johnson295189b2012-06-20 16:38:30 -07007172 WDI_ControlBlockType* pWDICtx,
7173 WDI_EventInfoType* pEventData
7174)
7175{
7176 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007177 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007178 ----------------------------------------------------------------------*/
7179 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7180 {
7181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007182 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007183 pWDICtx, pEventData);
7184 return WDI_STATUS_E_FAILURE;
7185 }
7186
7187 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007188 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007189 ----------------------------------------------------------------------*/
7190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7191 "WDI Busy state - queue stop request");
7192
Jeff Johnsone7245742012-09-05 17:12:55 -07007193 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007194 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007195
Jeff Johnson295189b2012-06-20 16:38:30 -07007196}/*WDI_MainStopBusy*/
7197
7198/**
7199 @brief Main FSM Request function for state BUSY
7200
Jeff Johnsone7245742012-09-05 17:12:55 -07007201
7202 @param pWDICtx: pointer to the WLAN DAL context
7203 pEventData: pointer to the event information structure
7204
Jeff Johnson295189b2012-06-20 16:38:30 -07007205 @see
7206 @return Result of the function call
7207*/
7208WDI_Status
7209WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007210(
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 WDI_ControlBlockType* pWDICtx,
7212 WDI_EventInfoType* pEventData
7213)
7214{
7215 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007217 ----------------------------------------------------------------------*/
7218 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7219 {
7220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007221 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007222 pWDICtx, pEventData);
7223 return WDI_STATUS_E_FAILURE;
7224 }
7225
7226 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007227 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007228 ----------------------------------------------------------------------*/
7229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7230 "WDI Busy state - queue request %d because waiting for response %d",
7231 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7232
Jeff Johnsone7245742012-09-05 17:12:55 -07007233 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007234 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007235
Jeff Johnson295189b2012-06-20 16:38:30 -07007236}/*WDI_MainReqBusy*/
7237/**
7238 @brief Main FSM Close function for state BUSY
7239
Jeff Johnsone7245742012-09-05 17:12:55 -07007240
7241 @param pWDICtx: pointer to the WLAN DAL context
7242 pEventData: pointer to the event information structure
7243
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 @see
7245 @return Result of the function call
7246*/
7247WDI_Status
7248WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007249(
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 WDI_ControlBlockType* pWDICtx,
7251 WDI_EventInfoType* pEventData
7252)
7253{
7254 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007255 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007256 ----------------------------------------------------------------------*/
7257 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7258 {
7259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007260 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 pWDICtx, pEventData);
7262 return WDI_STATUS_E_FAILURE;
7263 }
7264
7265 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007266 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007267 ----------------------------------------------------------------------*/
7268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7269 "WDI Busy state - queue close request");
7270
Jeff Johnsone7245742012-09-05 17:12:55 -07007271 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007272 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007273
Jeff Johnson295189b2012-06-20 16:38:30 -07007274}/*WDI_MainCloseBusy*/
7275
7276/**
7277 @brief Main FSM Shutdown function for INIT & STARTED states
7278
7279
7280 @param pWDICtx: pointer to the WLAN DAL context
7281 pEventData: pointer to the event information structure
7282
7283 @see
7284 @return Result of the function call
7285*/
7286WDI_Status
7287WDI_MainShutdown
7288(
7289 WDI_ControlBlockType* pWDICtx,
7290 WDI_EventInfoType* pEventData
7291)
7292{
7293 /*--------------------------------------------------------------------
7294 Sanity Check
7295 ----------------------------------------------------------------------*/
7296 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7297 {
7298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007299 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 pWDICtx, pEventData);
7301 return WDI_STATUS_E_FAILURE;
7302 }
7303
7304 /*State at this point is BUSY - because we enter this state before posting
7305 an event to the FSM in order to prevent potential race conditions*/
7306
7307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7308 "Processing shutdown request in FSM");
7309
7310 /*Return Success*/
7311 return WDI_ProcessRequest( pWDICtx, pEventData );
7312
7313}/*WDI_MainShutdown*/
7314
7315/**
7316 @brief Main FSM Shutdown function for BUSY state
7317
7318
7319 @param pWDICtx: pointer to the WLAN DAL context
7320 pEventData: pointer to the event information structure
7321
7322 @see
7323 @return Result of the function call
7324*/
7325WDI_Status
7326WDI_MainShutdownBusy
7327(
7328 WDI_ControlBlockType* pWDICtx,
7329 WDI_EventInfoType* pEventData
7330)
7331{
7332 /*--------------------------------------------------------------------
7333 Sanity Check
7334 ----------------------------------------------------------------------*/
7335 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7336 {
7337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007338 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007339 pWDICtx, pEventData);
7340 return WDI_STATUS_E_FAILURE;
7341 }
7342
7343 /* If you are waiting for a HAL response at this stage, you are not
7344 * going to get it. Riva is already shutdown/crashed.
7345 */
7346 wpalTimerStop(&gWDICb.wptResponseTimer);
7347
7348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7349 "Processing shutdown request in FSM: Busy state ");
7350
7351 return WDI_ProcessRequest( pWDICtx, pEventData );
7352
7353}/*WDI_MainShutdownBusy*/
7354
7355
Jeff Johnsone7245742012-09-05 17:12:55 -07007356/*=======================================================================
7357
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007359
Jeff Johnson295189b2012-06-20 16:38:30 -07007360*=======================================================================*/
7361
7362/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007363 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007364========================================================================*/
7365/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007367 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007368
7369 @param pWDICtx: pointer to the WLAN DAL context
7370 pEventData: pointer to the event information structure
7371
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 @see
7373 @return Result of the function call
7374*/
7375WDI_Status
7376WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007377(
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 WDI_ControlBlockType* pWDICtx,
7379 WDI_EventInfoType* pEventData
7380)
7381{
7382 WDI_StartReqParamsType* pwdiStartParams = NULL;
7383 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 wpt_uint16 usDataOffset = 0;
7386 wpt_uint16 usSendSize = 0;
7387
Jeff Johnsone7245742012-09-05 17:12:55 -07007388 tHalMacStartReqMsg halStartReq;
7389 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7391
7392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 -------------------------------------------------------------------------*/
7395 if (( NULL == pEventData ) ||
7396 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7397 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7398 {
7399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007400 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 }
7404
7405 /*-----------------------------------------------------------------------
7406 Get message buffer
7407 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 pwdiStartParams->usConfigBufferLen;
7410
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 usLen,
7413 &pSendBuffer, &usDataOffset, &usSendSize))||
7414 ( usSendSize < (usDataOffset + usLen )))
7415 {
7416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007417 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 pEventData, pwdiStartParams, wdiStartRspCb);
7419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007421 }
7422
7423 /*-----------------------------------------------------------------------
7424 Fill in the message
7425 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 halStartReq.startReqParams.driverType =
7427 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007428
Jeff Johnsone7245742012-09-05 17:12:55 -07007429 halStartReq.startReqParams.uConfigBufferLen =
7430 pwdiStartParams->usConfigBufferLen;
7431 wpalMemoryCopy( pSendBuffer+usDataOffset,
7432 &halStartReq.startReqParams,
7433 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007434
Jeff Johnsone7245742012-09-05 17:12:55 -07007435 usDataOffset += sizeof(halStartReq.startReqParams);
7436 wpalMemoryCopy( pSendBuffer+usDataOffset,
7437 pwdiStartParams->pConfigBuffer,
7438 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007439
7440 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007441 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007442
7443 /*Save Low Level Ind CB and associated user data - it will be used further
7444 on when an indication is coming from the lower MAC*/
7445 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007446 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007447
Jeff Johnsone7245742012-09-05 17:12:55 -07007448 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7454
Jeff Johnsone7245742012-09-05 17:12:55 -07007455
Jeff Johnson295189b2012-06-20 16:38:30 -07007456}/*WDI_ProcessStartReq*/
7457
7458/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007459 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007461
7462 @param pWDICtx: pointer to the WLAN DAL context
7463 pEventData: pointer to the event information structure
7464
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 @see
7466 @return Result of the function call
7467*/
7468WDI_Status
7469WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007470(
Jeff Johnson295189b2012-06-20 16:38:30 -07007471 WDI_ControlBlockType* pWDICtx,
7472 WDI_EventInfoType* pEventData
7473)
7474{
7475 WDI_StopReqParamsType* pwdiStopParams = NULL;
7476 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 wpt_uint16 usDataOffset = 0;
7479 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007480 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007481 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7483
7484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007486 -------------------------------------------------------------------------*/
7487 if (( NULL == pEventData ) ||
7488 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7489 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7490 {
7491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007493 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007494 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 }
7496
7497 /*-----------------------------------------------------------------------
7498 Get message buffer
7499 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007500 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007501 sizeof(halStopReq.stopReqParams),
7502 &pSendBuffer, &usDataOffset, &usSendSize))||
7503 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7504 {
7505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007506 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007507 pEventData, pwdiStopParams, wdiStopRspCb);
7508 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007509 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 }
7511
7512 /*-----------------------------------------------------------------------
7513 Fill in the message
7514 -----------------------------------------------------------------------*/
7515 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7516 pwdiStopParams->wdiStopReason);
7517
Jeff Johnsone7245742012-09-05 17:12:55 -07007518 wpalMemoryCopy( pSendBuffer+usDataOffset,
7519 &halStopReq.stopReqParams,
7520 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007521
7522 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007523 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007524
7525 /*! TO DO: stop the data services */
7526 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7527 {
7528 /*Stop the STA Table !UT- check this logic again
7529 It is safer to do it here than on the response - because a stop is imminent*/
7530 WDI_STATableStop(pWDICtx);
7531
7532 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007533 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7534 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 {
7536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7537 "WDI Init failed to reset power state event");
7538
Jeff Johnsone7245742012-09-05 17:12:55 -07007539 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007540 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007541 }
7542 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007543 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7544 if( eWLAN_PAL_STATUS_SUCCESS != status )
7545 {
7546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007547 "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 -08007548 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007549 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007550 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007551 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007552 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007553 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007554 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7555 WDI_SET_POWER_STATE_TIMEOUT);
7556 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 {
7558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7559 "WDI Init failed to wait on an event");
7560
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007562 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007563 }
7564 }
7565
7566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007567 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7571
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007572fail:
7573 // Release the message buffer so we don't leak
7574 wpalMemoryFree(pSendBuffer);
7575
7576failRequest:
7577 //WDA should have failure check to avoid the memory leak
7578 return WDI_STATUS_E_FAILURE;
7579
Jeff Johnson295189b2012-06-20 16:38:30 -07007580}/*WDI_ProcessStopReq*/
7581
7582/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007583 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007585
7586 @param pWDICtx: pointer to the WLAN DAL context
7587 pEventData: pointer to the event information structure
7588
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 @see
7590 @return Result of the function call
7591*/
7592WDI_Status
7593WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007594(
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 WDI_ControlBlockType* pWDICtx,
7596 WDI_EventInfoType* pEventData
7597)
7598{
Jeff Johnsone7245742012-09-05 17:12:55 -07007599 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7601
7602 /*Lock control block for cleanup*/
7603 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007604
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 /*Clear all pending request*/
7606 WDI_ClearPendingRequests(pWDICtx);
7607
7608 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007609 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007610
7611 /* Close Data transport*/
7612 /* FTM mode does not open Data Path */
7613 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7614 {
7615 WDTS_Close(pWDICtx);
7616 }
7617
7618 /*Close the STA Table !UT- check this logic again*/
7619 WDI_STATableClose(pWDICtx);
7620
7621 /*close the PAL */
7622 wptStatus = wpalClose(pWDICtx->pPALContext);
7623 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7624 {
7625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7626 "Failed to wpal Close %d", wptStatus);
7627 WDI_ASSERT(0);
7628 }
7629
7630 /*Transition back to init state*/
7631 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7632
7633 wpalMutexRelease(&pWDICtx->wptMutex);
7634
7635 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007636 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007637
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007639}/*WDI_ProcessCloseReq*/
7640
7641
7642/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007643 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007644===========================================================================*/
7645
7646/**
7647 @brief Process Init Scan Request function (called when Main FSM
7648 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007649
7650 @param pWDICtx: pointer to the WLAN DAL context
7651 pEventData: pointer to the event information structure
7652
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 @see
7654 @return Result of the function call
7655*/
7656WDI_Status
7657WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007658(
Jeff Johnson295189b2012-06-20 16:38:30 -07007659 WDI_ControlBlockType* pWDICtx,
7660 WDI_EventInfoType* pEventData
7661)
7662{
7663 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7664 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007665 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007666 wpt_uint16 usDataOffset = 0;
7667 wpt_uint16 usSendSize = 0;
7668 wpt_uint8 i = 0;
7669
7670 tHalInitScanReqMsg halInitScanReqMsg;
7671
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 * It shold be removed once host and riva changes are in sync*/
7674 tHalInitScanConReqMsg halInitScanConReqMsg;
7675
7676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7677
7678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 -------------------------------------------------------------------------*/
7681 if (( NULL == pEventData ) ||
7682 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7683 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7684 {
7685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007686 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 }
7690
7691#if 0
7692 wpalMutexAcquire(&pWDICtx->wptMutex);
7693 /*-----------------------------------------------------------------------
7694 Check to see if SCAN is already in progress - if so reject the req
7695 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 -----------------------------------------------------------------------*/
7698 if ( pWDICtx->bScanInProgress )
7699 {
7700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7701 "Scan is already in progress - subsequent scan is not allowed"
7702 " until the first scan completes");
7703
7704 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 }
7707
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7709 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007710
7711 wpalMutexRelease(&pWDICtx->wptMutex);
7712#endif
Viral Modid86bde22012-12-10 13:09:21 -08007713 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007715 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 * It shold be removed once host and riva changes are in sync*/
7717 /*-----------------------------------------------------------------------
7718 Get message buffer
7719 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 sizeof(halInitScanConReqMsg.initScanParams),
7722 &pSendBuffer, &usDataOffset, &usSendSize))||
7723 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7724 {
7725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007726 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 }
7731
7732
7733 /*-----------------------------------------------------------------------
7734 Fill in the message
7735 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7738
7739 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7740 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7741
Jeff Johnsone7245742012-09-05 17:12:55 -07007742 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007744 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7748
7749 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7750 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7751
Jeff Johnson295189b2012-06-20 16:38:30 -07007752 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7753 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007754
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7757
7758 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7759 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007761 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7762 }
7763
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 wpalMemoryCopy( pSendBuffer+usDataOffset,
7765 &halInitScanConReqMsg.initScanParams,
7766 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007767 }
7768 else
7769 {
7770 /*-----------------------------------------------------------------------
7771 Get message buffer
7772 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007774 sizeof(halInitScanReqMsg.initScanParams),
7775 &pSendBuffer, &usDataOffset, &usSendSize))||
7776 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7777 {
7778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007779 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007780 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007783 }
7784
7785
7786 /*-----------------------------------------------------------------------
7787 Fill in the message
7788 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007790 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7791
7792 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7793 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7794
Jeff Johnsone7245742012-09-05 17:12:55 -07007795 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007796 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007797 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007798 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7801
7802 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7803 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7804
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7807
7808 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7809 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007810 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007811 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7812 }
7813
Jeff Johnsone7245742012-09-05 17:12:55 -07007814 wpalMemoryCopy( pSendBuffer+usDataOffset,
7815 &halInitScanReqMsg.initScanParams,
7816 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007817 }
7818
7819 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007820 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007821
7822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007823 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007825 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007826 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7827
7828}/*WDI_ProcessInitScanReq*/
7829
7830/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007833
7834 @param pWDICtx: pointer to the WLAN DAL context
7835 pEventData: pointer to the event information structure
7836
Jeff Johnson295189b2012-06-20 16:38:30 -07007837 @see
7838 @return Result of the function call
7839*/
7840WDI_Status
7841WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007842(
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 WDI_ControlBlockType* pWDICtx,
7844 WDI_EventInfoType* pEventData
7845)
7846{
7847 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7848 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 wpt_uint16 usDataOffset = 0;
7851 wpt_uint16 usSendSize = 0;
7852
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7855
7856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007857 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007858 -------------------------------------------------------------------------*/
7859 if (( NULL == pEventData ) ||
7860 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7861 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7862 {
7863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007867 }
7868
7869#if 0
7870 wpalMutexAcquire(&pWDICtx->wptMutex);
7871 /*-----------------------------------------------------------------------
7872 Check to see if SCAN is already in progress - start scan is only
7873 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007875 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7878 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7879 {
7880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7881 "Scan start not allowed in this state %d %d",
7882 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007883
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007885 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 }
7887
Jeff Johnsone7245742012-09-05 17:12:55 -07007888 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007889
7890 wpalMutexRelease(&pWDICtx->wptMutex);
7891#endif
7892
7893 /*-----------------------------------------------------------------------
7894 Get message buffer
7895 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 sizeof(halStartScanReqMsg.startScanParams),
7898 &pSendBuffer, &usDataOffset, &usSendSize))||
7899 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7900 {
7901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007902 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 }
7907
Jeff Johnsone7245742012-09-05 17:12:55 -07007908 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 wpalMemoryCopy( pSendBuffer+usDataOffset,
7911 &halStartScanReqMsg.startScanParams,
7912 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007913
7914 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007916
7917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7922}/*WDI_ProcessStartScanReq*/
7923
7924
7925/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007926 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007927 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007928
7929 @param pWDICtx: pointer to the WLAN DAL context
7930 pEventData: pointer to the event information structure
7931
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 @see
7933 @return Result of the function call
7934*/
7935WDI_Status
7936WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007937(
Jeff Johnson295189b2012-06-20 16:38:30 -07007938 WDI_ControlBlockType* pWDICtx,
7939 WDI_EventInfoType* pEventData
7940)
7941{
7942 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7943 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 wpt_uint16 usDataOffset = 0;
7946 wpt_uint16 usSendSize = 0;
7947
Jeff Johnsone7245742012-09-05 17:12:55 -07007948 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7950
7951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 -------------------------------------------------------------------------*/
7954 if (( NULL == pEventData ) ||
7955 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7956 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7957 {
7958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 }
7963
Jeff Johnsone7245742012-09-05 17:12:55 -07007964 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7965 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 * forwarded to HAL and result in hang*/
7967#if 0
7968 wpalMutexAcquire(&pWDICtx->wptMutex);
7969 /*-----------------------------------------------------------------------
7970 Check to see if SCAN is already in progress - end scan is only
7971 allowed when a scan is ongoing and the state of the scan procedure
7972 is started
7973 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007974 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007975 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7976 {
7977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7978 "End start not allowed in this state %d %d",
7979 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007980
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 }
7984
Jeff Johnsone7245742012-09-05 17:12:55 -07007985 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007986
7987 wpalMutexRelease(&pWDICtx->wptMutex);
7988#endif
7989
7990 /*-----------------------------------------------------------------------
7991 Get message buffer
7992 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007993 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 sizeof(halEndScanReqMsg.endScanParams),
7995 &pSendBuffer, &usDataOffset, &usSendSize))||
7996 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7997 {
7998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007999 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008003 }
8004
8005 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8006
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 wpalMemoryCopy( pSendBuffer+usDataOffset,
8008 &halEndScanReqMsg.endScanParams,
8009 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008010
8011 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008012 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008013
8014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008015 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008018 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8019}/*WDI_ProcessEndScanReq*/
8020
8021
8022/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008025
8026 @param pWDICtx: pointer to the WLAN DAL context
8027 pEventData: pointer to the event information structure
8028
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 @see
8030 @return Result of the function call
8031*/
8032WDI_Status
8033WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008034(
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 WDI_ControlBlockType* pWDICtx,
8036 WDI_EventInfoType* pEventData
8037)
8038{
8039 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8040 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 wpt_uint16 usDataOffset = 0;
8043 wpt_uint16 usSendSize = 0;
8044 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008045 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8048
8049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 -------------------------------------------------------------------------*/
8052 if (( NULL == pEventData ) ||
8053 ( NULL == pEventData->pEventData) ||
8054 ( NULL == pEventData->pCBfnc))
8055 {
8056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 }
8061
8062 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8063 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8065 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 * forwarded to HAL and result in hang*/
8067#if 0
8068 wpalMutexAcquire(&pWDICtx->wptMutex);
8069 /*-----------------------------------------------------------------------
8070 Check to see if SCAN is already in progress
8071 Finish scan gets invoked any scan states. ie. abort scan
8072 It should be allowed in any states.
8073 -----------------------------------------------------------------------*/
8074 if ( !pWDICtx->bScanInProgress )
8075 {
8076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8077 "Finish start not allowed in this state %d",
8078 pWDICtx->bScanInProgress );
8079
8080 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008081 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 }
8083
8084 /*-----------------------------------------------------------------------
8085 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008086 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008087 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008088 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8089 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 wpalMutexRelease(&pWDICtx->wptMutex);
8091#endif
8092
8093 if ( pWDICtx->bInBmps )
8094 {
8095 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008096 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8097 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8098 {
8099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008100 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008101 WDI_ASSERT(0);
8102 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008103 }
8104
8105 /*-----------------------------------------------------------------------
8106 Get message buffer
8107 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 sizeof(halFinishScanReqMsg.finishScanParams),
8110 &pSendBuffer, &usDataOffset, &usSendSize))||
8111 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8112 {
8113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008114 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008118 }
8119
Jeff Johnsone7245742012-09-05 17:12:55 -07008120 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008121 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8122
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008124 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8125
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8128
8129 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8130 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8131
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008133 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8138
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8141
8142 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8143 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8146 }
8147
8148 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8149 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8150
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 wpalMemoryCopy( pSendBuffer+usDataOffset,
8152 &halFinishScanReqMsg.finishScanParams,
8153 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008154
8155 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008156 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008157
8158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008161 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8163}/*WDI_ProcessFinishScanReq*/
8164
8165
8166/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008168==========================================================================*/
8169/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 @brief Process BSS Join for a given Session
8171
8172 @param pWDICtx: pointer to the WLAN DAL context
8173 pEventData: pointer to the event information structure
8174
Jeff Johnson295189b2012-06-20 16:38:30 -07008175 @see
8176 @return Result of the function call
8177*/
8178WDI_Status
8179WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008180(
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 WDI_ControlBlockType* pWDICtx,
8182 WDI_JoinReqParamsType* pwdiJoinParams,
8183 WDI_JoinRspCb wdiJoinRspCb,
8184 void* pUserData
8185)
8186{
8187 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008189 wpt_uint16 usDataOffset = 0;
8190 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008192
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8195
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008196 wpalMutexAcquire(&pWDICtx->wptMutex);
8197
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 /*------------------------------------------------------------------------
8199 Check to see if we have any session with this BSSID already stored, we
8200 should not
8201 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8203 pwdiJoinParams->wdiReqInfo.macBSSID,
8204 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008205
8206 if ( NULL != pBSSSes )
8207 {
8208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008209 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8210 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008211
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008212 /*reset the bAssociationInProgress otherwise the next
8213 *join request will be queued*/
8214 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8215 wpalMutexRelease(&pWDICtx->wptMutex);
8216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 }
8218
Jeff Johnson295189b2012-06-20 16:38:30 -07008219 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008221 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 if ( NULL == pBSSSes )
8224 {
8225
8226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8227 "DAL has no free sessions - cannot run another join");
8228
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008229 /*reset the bAssociationInProgress otherwise the next
8230 *join request will be queued*/
8231 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 }
8235
8236 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8238 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008239 WDI_MAC_ADDR_LEN);
8240
8241 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008244
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 wpalMutexRelease(&pWDICtx->wptMutex);
8246
8247 /*-----------------------------------------------------------------------
8248 Get message buffer
8249 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 sizeof(halJoinReqMsg.joinReqParams),
8252 &pSendBuffer, &usDataOffset, &usSendSize))||
8253 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8254 {
8255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008256 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 pUserData, pwdiJoinParams, wdiJoinRspCb);
8258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 }
8261
8262 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008264
8265 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008266 pwdiJoinParams->wdiReqInfo.macSTASelf,
8267 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008268
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8271
8272 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8273
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008274#ifdef WLAN_FEATURE_VOWIFI
8275 halJoinReqMsg.joinReqParams.maxTxPower =
8276 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8277#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8280#endif
8281
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8284 wdiSecondaryChannelOffset);
8285
Jeff Johnsone7245742012-09-05 17:12:55 -07008286 wpalMemoryCopy( pSendBuffer+usDataOffset,
8287 &halJoinReqMsg.joinReqParams,
8288 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008289
8290 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008292
8293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8297 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008298
8299}/*WDI_ProcessBSSSessionJoinReq*/
8300
8301/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008304
8305 @param pWDICtx: pointer to the WLAN DAL context
8306 pEventData: pointer to the event information structure
8307
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 @see
8309 @return Result of the function call
8310*/
8311WDI_Status
8312WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008313(
Jeff Johnson295189b2012-06-20 16:38:30 -07008314 WDI_ControlBlockType* pWDICtx,
8315 WDI_EventInfoType* pEventData
8316)
8317{
8318 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8319 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8320 WDI_JoinRspCb wdiJoinRspCb = NULL;
8321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8322
8323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008325 -------------------------------------------------------------------------*/
8326 if (( NULL == pEventData ) ||
8327 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8328 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8329 {
8330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008334 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008335
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 /*-------------------------------------------------------------------------
8337 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008339 -------------------------------------------------------------------------*/
8340 wpalMutexAcquire(&pWDICtx->wptMutex);
8341
8342 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8343 {
8344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8345 "Association is currently in progress, queueing new join req");
8346
8347 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008348 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 pwdiJoinParams->wdiReqInfo.macBSSID);
8350
8351 wpalMutexRelease(&pWDICtx->wptMutex);
8352
Jeff Johnsone7245742012-09-05 17:12:55 -07008353 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 }
8355
8356 /*Starting a new association */
8357 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8358 wpalMutexRelease(&pWDICtx->wptMutex);
8359
8360 /*Process the Join Request*/
8361 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8362 wdiJoinRspCb,pEventData->pUserData);
8363
8364}/*WDI_ProcessJoinReq*/
8365
8366
8367/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008369 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008370
8371 @param pWDICtx: pointer to the WLAN DAL context
8372 pEventData: pointer to the event information structure
8373
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 @see
8375 @return Result of the function call
8376*/
8377WDI_Status
8378WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008379(
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 WDI_ControlBlockType* pWDICtx,
8381 WDI_EventInfoType* pEventData
8382)
8383{
8384 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8385 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 wpt_uint16 uMsgSize = 0;
8389 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 wpt_uint16 usDataOffset = 0;
8391 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008393
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8396
8397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 -------------------------------------------------------------------------*/
8400 if (( NULL == pEventData ) ||
8401 ( NULL == pEventData->pEventData ) ||
8402 ( NULL == pEventData->pCBfnc ))
8403 {
8404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 }
8409
Abhishek Singh6927fa02014-06-27 17:19:55 +05308410 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8412 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8413 /*-------------------------------------------------------------------------
8414 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008415 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 -------------------------------------------------------------------------*/
8417 wpalMutexAcquire(&pWDICtx->wptMutex);
8418
8419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008421 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8423 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8424 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008425
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 {
8428#ifdef WLAN_FEATURE_VOWIFI_11R
8429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 if ( NULL == pBSSSes )
8434 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008435
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8437 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008438
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008442
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8445 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008446 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008447
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8451#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 * Request in case of IBSS*/
8454 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8455 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8456 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8457 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8458 {
8459 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008461 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 if ( NULL == pBSSSes )
8464 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008465
Jeff Johnson295189b2012-06-20 16:38:30 -07008466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8467 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008468
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008472
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8475 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008477
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008479 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8481 }
8482 else
8483 {
8484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8486 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8487 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8488
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 /* for IBSS testing */
8490 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008492 }
8493#endif
8494 }
8495
8496 /*------------------------------------------------------------------------
8497 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008498 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 ------------------------------------------------------------------------*/
8500 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8501 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8503 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8504 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8505 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008506
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008508
8509 wpalMutexRelease(&pWDICtx->wptMutex);
8510
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 }
8513
8514 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8516 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 sizeof(pWDICtx->wdiCachedConfigBssReq));
8518
8519 wpalMutexRelease(&pWDICtx->wptMutex);
8520
Jeff Johnsone7245742012-09-05 17:12:55 -07008521 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8522#ifdef WLAN_FEATURE_11AC
8523 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008524 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 else
8526#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008527 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008528
8529 /*-----------------------------------------------------------------------
8530 Get message buffer
8531 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8534 ( usSendSize < (usDataOffset + uMsgSize )))
8535 {
8536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008537 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008538 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 }
8542
8543 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008544#ifdef WLAN_FEATURE_11AC
8545 if (WDI_getFwWlanFeatCaps(DOT11AC))
8546 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8547 &pwdiConfigBSSParams->wdiReqInfo);
8548 else
8549#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 &pwdiConfigBSSParams->wdiReqInfo);
8552
8553 /* Need to fill in the STA Index to invalid, since at this point we have not
8554 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008556
8557 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8559
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008560#ifdef WLAN_FEATURE_11AC
8561 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8562 wpalMemoryCopy( pSendBuffer+usDataOffset,
8563 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8564 uMsgSize);
8565 }else
8566#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008567 {
8568 if ( uMsgSize <= sizeof(tConfigBssParams) )
8569 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008570 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008571 &halConfigBssReqMsg.uBssParams.configBssParams,
8572 uMsgSize);
8573 }
8574 else
8575 {
8576 return WDI_STATUS_E_FAILURE;
8577 }
8578 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008579
8580 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008581 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308582 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008584 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8587 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 WDI_CONFIG_BSS_RESP);
8589
8590}/*WDI_ProcessConfigBSSReq*/
8591
8592
8593/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008596
8597 @param pWDICtx: pointer to the WLAN DAL context
8598 pEventData: pointer to the event information structure
8599
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 @see
8601 @return Result of the function call
8602*/
8603WDI_Status
8604WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008605(
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 WDI_ControlBlockType* pWDICtx,
8607 WDI_EventInfoType* pEventData
8608)
8609{
8610 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8611 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008612 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 wpt_uint16 usDataOffset = 0;
8616 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008617 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008618
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8621
8622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 -------------------------------------------------------------------------*/
8625 if (( NULL == pEventData ) ||
8626 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8627 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8628 {
8629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008630 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008633 }
8634
8635 /*-------------------------------------------------------------------------
8636 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 -------------------------------------------------------------------------*/
8639 wpalMutexAcquire(&pWDICtx->wptMutex);
8640
8641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8645 pwdiDelBSSParams->ucBssIdx,
8646 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008647
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 {
8650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 "%s: BSS does not yet exist. ucBssIdx %d",
8652 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008653
8654 wpalMutexRelease(&pWDICtx->wptMutex);
8655
8656 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008658
8659 /*------------------------------------------------------------------------
8660 Check if this BSS is being currently processed or queued,
8661 if queued - queue the new request as well
8662 ------------------------------------------------------------------------*/
8663 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8666 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8667 __func__, pwdiDelBSSParams->ucBssIdx);
8668
8669 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8670
8671 wpalMutexRelease(&pWDICtx->wptMutex);
8672
8673 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008675
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 /*-----------------------------------------------------------------------
8677 If we receive a Del BSS request for an association that is already in
8678 progress, it indicates that the assoc has failed => we no longer have
8679 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 -----------------------------------------------------------------------*/
8682 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8683 {
8684 /*We can switch to false here because even if a subsequent Join comes in
8685 it will only be processed when DAL transitions out of BUSY state which
8686 happens when the Del BSS request comes */
8687 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8688
8689 /*Former association is complete - prepare next pending assoc for
8690 processing */
8691 WDI_DequeueAssocRequest(pWDICtx);
8692 }
8693
8694 wpalMutexRelease(&pWDICtx->wptMutex);
8695 /*-----------------------------------------------------------------------
8696 Get message buffer
8697 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 sizeof(halBssReqMsg.deleteBssParams),
8700 &pSendBuffer, &usDataOffset, &usSendSize))||
8701 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8702 {
8703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008704 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 }
8709
8710 /*Fill in the message request structure*/
8711
8712 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008713 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008714
Jeff Johnsone7245742012-09-05 17:12:55 -07008715 wpalMemoryCopy( pSendBuffer+usDataOffset,
8716 &halBssReqMsg.deleteBssParams,
8717 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008718
8719 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008720 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008721
Jeff Johnsone7245742012-09-05 17:12:55 -07008722
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008727 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8728
Jeff Johnsone7245742012-09-05 17:12:55 -07008729
Jeff Johnson295189b2012-06-20 16:38:30 -07008730}/*WDI_ProcessDelBSSReq*/
8731
8732/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008735
8736 @param pWDICtx: pointer to the WLAN DAL context
8737 pEventData: pointer to the event information structure
8738
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 @see
8740 @return Result of the function call
8741*/
8742WDI_Status
8743WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008744(
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 WDI_ControlBlockType* pWDICtx,
8746 WDI_EventInfoType* pEventData
8747)
8748{
8749 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8750 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008753 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008754 wpt_uint16 usDataOffset = 0;
8755 wpt_uint16 usSendSize = 0;
8756 wpt_uint16 uMsgSize = 0;
8757 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008759
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8762
8763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 -------------------------------------------------------------------------*/
8766 if (( NULL == pEventData ) ||
8767 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8768 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8769 {
8770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008771 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 }
8775
8776 /*-------------------------------------------------------------------------
8777 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008779 -------------------------------------------------------------------------*/
8780 wpalMutexAcquire(&pWDICtx->wptMutex);
8781
8782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8786 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8787 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008788
8789 if ( NULL == pBSSSes )
8790 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8792 "%s: Association sequence for this BSS does not yet exist - "
8793 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8794 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008795
8796 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 }
8799
8800 /*------------------------------------------------------------------------
8801 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 ------------------------------------------------------------------------*/
8804 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8805 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8807 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8808 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008809
Jeff Johnsone7245742012-09-05 17:12:55 -07008810 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008811
8812 wpalMutexRelease(&pWDICtx->wptMutex);
8813
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 }
8816
8817 /*-----------------------------------------------------------------------
8818 If Post Assoc was not yet received - the current association must
8819 be in progress
8820 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008822 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8823 {
8824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8825 "Association sequence for this BSS association no longer in "
8826 "progress - not allowed");
8827
8828 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008829 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008830 }
8831
8832 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 -----------------------------------------------------------------------*/
8835 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8836 {
8837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8838 "Post Assoc not allowed before JOIN - failing request");
8839
8840 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008842 }
8843
8844 wpalMutexRelease(&pWDICtx->wptMutex);
8845
8846 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8847 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8848 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008851 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8853 ( usSendSize < (usDataOffset + uMsgSize )))
8854 {
8855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008856 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008857 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8858 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008860 }
8861
8862 /*Copy the STA parameters */
8863 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8864 &pwdiPostAssocParams->wdiSTAParams );
8865
8866 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008868 WDI_STATableFindStaidByAddr(pWDICtx,
8869 pwdiPostAssocParams->wdiSTAParams.macSTA,
8870 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8871 {
8872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008873 MAC_ADDRESS_STR
8874 ": This station does not exist in the WDI Station Table",
8875 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008877 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008879 }
8880
8881 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 pBSSSes->ucBSSIdx;
8884
8885 /*Copy the BSS parameters */
8886 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8887 &pwdiPostAssocParams->wdiBSSParams);
8888
8889 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008890 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008891 WDI_STATableFindStaidByAddr(pWDICtx,
8892 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 {
8895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008896 MAC_ADDRESS_STR
8897 ": This station does not exist in the WDI Station Table",
8898 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008900 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 }
8903
8904 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008905 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 pBSSSes->ucBSSIdx;
8907
Jeff Johnsone7245742012-09-05 17:12:55 -07008908
8909 wpalMemoryCopy( pSendBuffer+usDataOffset,
8910 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8911 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008912
8913 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8914
Jeff Johnsone7245742012-09-05 17:12:55 -07008915 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8916 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8917 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008918
Jeff Johnsone7245742012-09-05 17:12:55 -07008919
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008922
Jeff Johnsone7245742012-09-05 17:12:55 -07008923
8924 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008927
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308928 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008930 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8934
Jeff Johnsone7245742012-09-05 17:12:55 -07008935
Jeff Johnson295189b2012-06-20 16:38:30 -07008936}/*WDI_ProcessPostAssocReq*/
8937
8938/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008941
8942 @param pWDICtx: pointer to the WLAN DAL context
8943 pEventData: pointer to the event information structure
8944
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 @see
8946 @return Result of the function call
8947*/
8948WDI_Status
8949WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008950(
Jeff Johnson295189b2012-06-20 16:38:30 -07008951 WDI_ControlBlockType* pWDICtx,
8952 WDI_EventInfoType* pEventData
8953)
8954{
8955 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8956 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 wpt_uint16 usDataOffset = 0;
8961 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8964
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8967
8968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 -------------------------------------------------------------------------*/
8971 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8972 ( NULL == pEventData->pCBfnc ))
8973 {
8974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008978 }
8979
8980 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8981 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8982 /*-------------------------------------------------------------------------
8983 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 -------------------------------------------------------------------------*/
8986 wpalMutexAcquire(&pWDICtx->wptMutex);
8987
8988 /*------------------------------------------------------------------------
8989 Find the BSS for which the request is made and identify WDI session
8990 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008991 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8992 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 &macBSSID))
8994 {
8995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008996 "This station does not exist in the WDI Station Table %d",
8997 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009000 }
9001
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9003 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9006 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9007 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009008
9009 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 }
9012
9013 /*------------------------------------------------------------------------
9014 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009016 ------------------------------------------------------------------------*/
9017 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9018 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9020 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9021 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009022
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009025 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 }
9027
9028 wpalMutexRelease(&pWDICtx->wptMutex);
9029 /*-----------------------------------------------------------------------
9030 Get message buffer
9031 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 sizeof(halDelStaReqMsg.delStaParams),
9034 &pSendBuffer, &usDataOffset, &usSendSize))||
9035 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9036 {
9037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009038 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009039 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 }
9043
Jeff Johnsone7245742012-09-05 17:12:55 -07009044 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9045 wpalMemoryCopy( pSendBuffer+usDataOffset,
9046 &halDelStaReqMsg.delStaParams,
9047 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009048
9049 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009051
9052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9057
9058}/*WDI_ProcessDelSTAReq*/
9059
9060
9061/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009063==========================================================================*/
9064/**
9065 @brief Process Set BSS Key Request function (called when Main FSM
9066 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009067
9068 @param pWDICtx: pointer to the WLAN DAL context
9069 pEventData: pointer to the event information structure
9070
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 @see
9072 @return Result of the function call
9073*/
9074WDI_Status
9075WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009076(
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 WDI_ControlBlockType* pWDICtx,
9078 WDI_EventInfoType* pEventData
9079)
9080{
9081 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9082 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 wpt_uint16 usDataOffset = 0;
9087 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9090 wpt_uint8 keyIndex = 0;
9091
9092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9093
9094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 -------------------------------------------------------------------------*/
9097 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9098 ( NULL == pEventData->pCBfnc ))
9099 {
9100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 }
9105
9106 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9107 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9108 /*-------------------------------------------------------------------------
9109 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009110 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 -------------------------------------------------------------------------*/
9112 wpalMutexAcquire(&pWDICtx->wptMutex);
9113
9114 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9118 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9119 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009120
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 {
9123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9125 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009126
9127 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 }
9130
9131 /*------------------------------------------------------------------------
9132 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009133 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 ------------------------------------------------------------------------*/
9135 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9136 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9138 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9139 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009140
Jeff Johnsone7245742012-09-05 17:12:55 -07009141 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 }
9145
9146
9147 wpalMutexRelease(&pWDICtx->wptMutex);
9148 /*-----------------------------------------------------------------------
9149 Get message buffer
9150 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9153 &pSendBuffer, &usDataOffset, &usSendSize))||
9154 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9155 {
9156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009157 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009158 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 }
9162
9163 /*-----------------------------------------------------------------------
9164 Copy the Key parameters into the HAL message
9165 -----------------------------------------------------------------------*/
9166
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009168
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9171
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9174
9175 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9176 keyIndex++)
9177 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9180 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9181 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9182 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9183 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
9184 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009187 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009188 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
9191 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 WDI_MAX_KEY_LENGTH);
9194 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009195
9196 wpalMemoryCopy( pSendBuffer+usDataOffset,
9197 &halSetBssKeyReqMsg.setBssKeyParams,
9198 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009199
9200 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009202
9203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9207 wdiSetBSSKeyRspCb, pEventData->pUserData,
9208 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009209
9210}/*WDI_ProcessSetBssKeyReq*/
9211
9212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009215
9216 @param pWDICtx: pointer to the WLAN DAL context
9217 pEventData: pointer to the event information structure
9218
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 @see
9220 @return Result of the function call
9221*/
9222WDI_Status
9223WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009224(
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 WDI_ControlBlockType* pWDICtx,
9226 WDI_EventInfoType* pEventData
9227)
9228{
9229 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9230 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 wpt_uint16 usDataOffset = 0;
9235 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009236 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9239
9240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 -------------------------------------------------------------------------*/
9243 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9244 ( NULL == pEventData->pCBfnc ))
9245 {
9246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 }
9251
9252 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9253 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9254 /*-------------------------------------------------------------------------
9255 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 -------------------------------------------------------------------------*/
9258 wpalMutexAcquire(&pWDICtx->wptMutex);
9259
9260 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009261 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009262 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9264 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9265 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009266
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 {
9269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9271 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009272
9273 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 }
9276
9277 /*------------------------------------------------------------------------
9278 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 ------------------------------------------------------------------------*/
9281 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9282 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9284 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9285 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009286
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 }
9291
9292
9293 wpalMutexRelease(&pWDICtx->wptMutex);
9294
9295 /*-----------------------------------------------------------------------
9296 Get message buffer
9297 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9300 &pSendBuffer, &usDataOffset, &usSendSize))||
9301 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9302 {
9303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009304 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 }
9309 /*-----------------------------------------------------------------------
9310 Copy the Key parameters into the HAL message
9311 -----------------------------------------------------------------------*/
9312 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9313
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9316
9317 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9318
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9321
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 wpalMemoryCopy( pSendBuffer+usDataOffset,
9323 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9324 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009325
9326 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009328
9329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009335}/*WDI_ProcessRemoveBssKeyReq*/
9336
9337/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009340
9341 @param pWDICtx: pointer to the WLAN DAL context
9342 pEventData: pointer to the event information structure
9343
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 @see
9345 @return Result of the function call
9346*/
9347WDI_Status
9348WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009349(
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 WDI_ControlBlockType* pWDICtx,
9351 WDI_EventInfoType* pEventData
9352)
9353{
9354 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9355 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9356 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 wpt_uint16 usDataOffset = 0;
9359 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009360 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009361 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009362 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9364 wpt_uint8 keyIndex = 0;
9365
9366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9367
9368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 -------------------------------------------------------------------------*/
9371 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9372 ( NULL == pEventData->pCBfnc ))
9373 {
9374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 }
9379
9380 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9381 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9382 /*-------------------------------------------------------------------------
9383 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 -------------------------------------------------------------------------*/
9386 wpalMutexAcquire(&pWDICtx->wptMutex);
9387
9388 /*------------------------------------------------------------------------
9389 Find the BSS for which the request is made and identify WDI session
9390 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009391 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9392 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 &macBSSID))
9394 {
9395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009396 "This station does not exist in the WDI Station Table %d",
9397 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 }
9401
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9403 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9406 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9407 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009408
9409 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009412
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 /*------------------------------------------------------------------------
9414 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 ------------------------------------------------------------------------*/
9417 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9418 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9420 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9421 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009422
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009424 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009425 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 }
9427
9428
9429 wpalMutexRelease(&pWDICtx->wptMutex);
9430 /*-----------------------------------------------------------------------
9431 Get message buffer
9432 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9435 &pSendBuffer, &usDataOffset, &usSendSize))||
9436 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9437 {
9438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009439 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 }
9444 /*-----------------------------------------------------------------------
9445 Copy the STA Key parameters into the HAL message
9446 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9449
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9452
9453 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9454
9455 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9456
9457 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9458
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9460 keyIndex++)
9461 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9464 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9465 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9466 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9467 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9468 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9475 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009476 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 WDI_MAX_KEY_LENGTH);
9478 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009479
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 wpalMemoryCopy( pSendBuffer+usDataOffset,
9481 &halSetStaKeyReqMsg.setStaKeyParams,
9482 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
9484 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309486 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9491 wdiSetSTAKeyRspCb, pEventData->pUserData,
9492 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009493
9494}/*WDI_ProcessSetSTAKeyReq*/
9495
9496/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009499
9500 @param pWDICtx: pointer to the WLAN DAL context
9501 pEventData: pointer to the event information structure
9502
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 @see
9504 @return Result of the function call
9505*/
9506WDI_Status
9507WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009508(
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 WDI_ControlBlockType* pWDICtx,
9510 WDI_EventInfoType* pEventData
9511)
9512{
9513 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9514 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9515 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 wpt_uint16 usDataOffset = 0;
9518 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009519 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009520 wpt_macAddr macBSSID;
9521 wpt_uint8 ucCurrentBSSSesIdx;
9522 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9524
9525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 -------------------------------------------------------------------------*/
9528 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9529 ( NULL == pEventData->pCBfnc ))
9530 {
9531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009535 }
9536
9537 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9538 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9539 /*-------------------------------------------------------------------------
9540 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009541 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009542 -------------------------------------------------------------------------*/
9543 wpalMutexAcquire(&pWDICtx->wptMutex);
9544
9545 /*------------------------------------------------------------------------
9546 Find the BSS for which the request is made and identify WDI session
9547 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9549 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 &macBSSID))
9551 {
9552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009553 "This station does not exist in the WDI Station Table %d",
9554 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 }
9558
Jeff Johnsone7245742012-09-05 17:12:55 -07009559 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9560 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9563 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9564 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009565
9566 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009569
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 /*------------------------------------------------------------------------
9571 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 ------------------------------------------------------------------------*/
9574 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9575 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9577 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9578 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009579
Jeff Johnsone7245742012-09-05 17:12:55 -07009580 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009581 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 }
9584
9585
9586
9587 wpalMutexRelease(&pWDICtx->wptMutex);
9588 /*-----------------------------------------------------------------------
9589 Get message buffer
9590 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9593 &pSendBuffer, &usDataOffset, &usSendSize))||
9594 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9595 {
9596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009597 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 }
9602
9603 /*-----------------------------------------------------------------------
9604 Copy the Key parameters into the HAL message
9605 -----------------------------------------------------------------------*/
9606
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9609
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9612
Jeff Johnsone7245742012-09-05 17:12:55 -07009613 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009614 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9615
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9618
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 wpalMemoryCopy( pSendBuffer+usDataOffset,
9620 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9621 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009622
9623 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009625
9626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009632
9633}/*WDI_ProcessRemoveSTAKeyReq*/
9634
9635/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009638
9639 @param pWDICtx: pointer to the WLAN DAL context
9640 pEventData: pointer to the event information structure
9641
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 @see
9643 @return Result of the function call
9644*/
9645WDI_Status
9646WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009647(
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 WDI_ControlBlockType* pWDICtx,
9649 WDI_EventInfoType* pEventData
9650)
9651{
9652 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9653 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9654 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 wpt_uint16 usDataOffset = 0;
9657 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009659 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9662 wpt_uint8 keyIndex = 0;
9663
9664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9665
9666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009668 -------------------------------------------------------------------------*/
9669 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9670 ( NULL == pEventData->pCBfnc ))
9671 {
9672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 }
9677
9678 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9679 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9680 /*-------------------------------------------------------------------------
9681 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 -------------------------------------------------------------------------*/
9684 wpalMutexAcquire(&pWDICtx->wptMutex);
9685
9686 /*------------------------------------------------------------------------
9687 Find the BSS for which the request is made and identify WDI session
9688 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009689 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9690 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 &macBSSID))
9692 {
9693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009694 "This station does not exist in the WDI Station Table %d",
9695 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 }
9699
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9701 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 {
9703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009704 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009705 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009706
9707 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009710
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 /*------------------------------------------------------------------------
9712 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009714 ------------------------------------------------------------------------*/
9715 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9716 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9718 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9719 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009720
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 }
9725
9726
9727 wpalMutexRelease(&pWDICtx->wptMutex);
9728 /*-----------------------------------------------------------------------
9729 Get message buffer
9730 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9733 &pSendBuffer, &usDataOffset, &usSendSize))||
9734 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9735 {
9736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009737 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009741 }
9742 /*-----------------------------------------------------------------------
9743 Copy the STA Key parameters into the HAL message
9744 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009745 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9747
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9750
9751 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9752
9753 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9754
9755 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9756
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9758 keyIndex++)
9759 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9762 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9763 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9764 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9765 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9766 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9773 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 WDI_MAX_KEY_LENGTH);
9776 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009777
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 wpalMemoryCopy( pSendBuffer+usDataOffset,
9779 &halSetStaKeyReqMsg.setStaKeyParams,
9780 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009781
9782 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009784
9785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9789 wdiSetSTAKeyRspCb, pEventData->pUserData,
9790 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009791
9792}/*WDI_ProcessSetSTABcastKeyReq*/
9793
9794/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009797
9798 @param pWDICtx: pointer to the WLAN DAL context
9799 pEventData: pointer to the event information structure
9800
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 @see
9802 @return Result of the function call
9803*/
9804WDI_Status
9805WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009806(
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 WDI_ControlBlockType* pWDICtx,
9808 WDI_EventInfoType* pEventData
9809)
9810{
9811 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9812 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9813 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 wpt_uint16 usDataOffset = 0;
9816 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 wpt_macAddr macBSSID;
9819 wpt_uint8 ucCurrentBSSSesIdx;
9820 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9822
9823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 -------------------------------------------------------------------------*/
9826 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9827 ( NULL == pEventData->pCBfnc ))
9828 {
9829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 }
9834
9835 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9836 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9837 /*-------------------------------------------------------------------------
9838 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 -------------------------------------------------------------------------*/
9841 wpalMutexAcquire(&pWDICtx->wptMutex);
9842
9843 /*------------------------------------------------------------------------
9844 Find the BSS for which the request is made and identify WDI session
9845 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9847 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 &macBSSID))
9849 {
9850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009851 "This station does not exist in the WDI Station Table %d",
9852 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 }
9856
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9858 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9861 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9862 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009863
9864 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009867
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 /*------------------------------------------------------------------------
9869 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 ------------------------------------------------------------------------*/
9872 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9873 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9875 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9876 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009877
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 }
9882
9883
9884
9885 wpalMutexRelease(&pWDICtx->wptMutex);
9886 /*-----------------------------------------------------------------------
9887 Get message buffer
9888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9891 &pSendBuffer, &usDataOffset, &usSendSize))||
9892 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9893 {
9894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009895 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 }
9900
9901 /*-----------------------------------------------------------------------
9902 Copy the Key parameters into the HAL message
9903 -----------------------------------------------------------------------*/
9904
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9907
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9910
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9913
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9916
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 wpalMemoryCopy( pSendBuffer+usDataOffset,
9918 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9919 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009920
9921 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009923
9924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009930
9931}/*WDI_ProcessRemoveSTABcastKeyReq*/
9932
9933/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009935==========================================================================*/
9936/**
9937 @brief Process Add TSpec Request function (called when Main FSM
9938 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009939
9940 @param pWDICtx: pointer to the WLAN DAL context
9941 pEventData: pointer to the event information structure
9942
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 @see
9944 @return Result of the function call
9945*/
9946WDI_Status
9947WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009948(
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 WDI_ControlBlockType* pWDICtx,
9950 WDI_EventInfoType* pEventData
9951)
9952{
9953 WDI_AddTSReqParamsType* pwdiAddTSParams;
9954 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009955 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009956 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 wpt_uint16 usDataOffset = 0;
9959 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 wpt_macAddr macBSSID;
9962 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009963
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9965
9966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 -------------------------------------------------------------------------*/
9969 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9970 ( NULL == pEventData->pCBfnc ))
9971 {
9972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009976 }
9977
9978 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9979 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9980 /*-------------------------------------------------------------------------
9981 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 -------------------------------------------------------------------------*/
9984 wpalMutexAcquire(&pWDICtx->wptMutex);
9985
9986 /*------------------------------------------------------------------------
9987 Find the BSS for which the request is made and identify WDI session
9988 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9990 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 &macBSSID))
9992 {
9993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009994 "This station does not exist in the WDI Station Table %d",
9995 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009996 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 }
9999
Jeff Johnsone7245742012-09-05 17:12:55 -070010000 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10001 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10004 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10005 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010006
10007 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010010
Jeff Johnson295189b2012-06-20 16:38:30 -070010011 /*------------------------------------------------------------------------
10012 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 ------------------------------------------------------------------------*/
10015 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10016 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10018 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10019 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010020
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 }
10025
10026 wpalMutexRelease(&pWDICtx->wptMutex);
10027 /*-----------------------------------------------------------------------
10028 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10032 sizeof(halAddTsParams),
10033 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 &usSendSize))||
10035 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10036 {
10037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010038 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 }
10043
10044 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10045 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10046
10047 //TSPEC IE
10048 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10049 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010051 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010053 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010055 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010056 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010060 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010064 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010066 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010067 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010070 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010072 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010073 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010078 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010079 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10080
10081 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010082 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010084 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010085 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010087 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010091 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010093 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10096
10097 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010098 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010099 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10102
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 wpalMemoryCopy( pSendBuffer+usDataOffset,
10104 &halAddTsParams,
10105 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010106
10107 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010109
10110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010113 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010114 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010116}/*WDI_ProcessAddTSpecReq*/
10117
10118
10119/**
10120 @brief Process Del TSpec Request function (called when Main FSM
10121 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010122
10123 @param pWDICtx: pointer to the WLAN DAL context
10124 pEventData: pointer to the event information structure
10125
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 @see
10127 @return Result of the function call
10128*/
10129WDI_Status
10130WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010131(
Jeff Johnson295189b2012-06-20 16:38:30 -070010132 WDI_ControlBlockType* pWDICtx,
10133 WDI_EventInfoType* pEventData
10134)
10135{
10136 WDI_DelTSReqParamsType* pwdiDelTSParams;
10137 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010138 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010139 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010140 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010141 wpt_uint16 usDataOffset = 0;
10142 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10145
10146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010147 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010148 -------------------------------------------------------------------------*/
10149 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10150 ( NULL == pEventData->pCBfnc ))
10151 {
10152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010153 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 }
10157
10158 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10159 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10160
10161 /*-------------------------------------------------------------------------
10162 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 -------------------------------------------------------------------------*/
10165 wpalMutexAcquire(&pWDICtx->wptMutex);
10166
10167 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10171 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10172 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010173
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010175 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10177 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10178 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10179
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 }
10183
10184 /*------------------------------------------------------------------------
10185 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 ------------------------------------------------------------------------*/
10188 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10189 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10191 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10192 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010193
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010195 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 }
10198
10199
10200 wpalMutexRelease(&pWDICtx->wptMutex);
10201 /*-----------------------------------------------------------------------
10202 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010203 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10207 &pSendBuffer, &usDataOffset, &usSendSize))||
10208 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10209 {
10210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010211 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010212 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010215 }
10216
Jeff Johnsone7245742012-09-05 17:12:55 -070010217 wpalMemoryCopy( pSendBuffer+usDataOffset,
10218 &pwdiDelTSParams->wdiDelTSInfo,
10219 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010220
10221 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010222 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010223
10224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010225 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10228 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010229}/*WDI_ProcessDelTSpecReq*/
10230
10231/**
10232 @brief Process Update EDCA Params Request function (called when
10233 Main FSM 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_ProcessUpdateEDCAParamsReq
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_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10249 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010252 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010253 wpt_uint16 usDataOffset = 0;
10254 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10257
10258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 -------------------------------------------------------------------------*/
10261 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10262 ( NULL == pEventData->pCBfnc ))
10263 {
10264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010268 }
10269
10270 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10271 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10272 /*-------------------------------------------------------------------------
10273 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 -------------------------------------------------------------------------*/
10276 wpalMutexAcquire(&pWDICtx->wptMutex);
10277
10278 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010280 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010281 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10282 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10283 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010284
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 {
10287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10289 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010290
10291 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010292 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010293 }
10294
10295 /*------------------------------------------------------------------------
10296 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 ------------------------------------------------------------------------*/
10299 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10300 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10302 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10303 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010304
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 }
10309
10310
10311 wpalMutexRelease(&pWDICtx->wptMutex);
10312 /*-----------------------------------------------------------------------
10313 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10318 &pSendBuffer, &usDataOffset, &usSendSize))||
10319 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10320 {
10321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010322 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010326 }
10327
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 wpalMemoryCopy( pSendBuffer+usDataOffset,
10329 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10330 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010331
10332 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010333 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010334
10335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010336 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010337 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10339 wdiUpdateEDCARspCb, pEventData->pUserData,
10340 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010341}/*WDI_ProcessUpdateEDCAParamsReq*/
10342
10343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010346
10347 @param pWDICtx: pointer to the WLAN DAL context
10348 pEventData: pointer to the event information structure
10349
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 @see
10351 @return Result of the function call
10352*/
10353WDI_Status
10354WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010355(
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 WDI_ControlBlockType* pWDICtx,
10357 WDI_EventInfoType* pEventData
10358)
10359{
10360 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10361 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010364 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010365 wpt_uint16 usDataOffset = 0;
10366 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010368 wpt_macAddr macBSSID;
10369
10370 tAddBASessionReqMsg halAddBASessionReq;
10371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10372
10373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 -------------------------------------------------------------------------*/
10376 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10377 ( NULL == pEventData->pCBfnc ))
10378 {
10379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010383 }
10384
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10389 /*-------------------------------------------------------------------------
10390 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 -------------------------------------------------------------------------*/
10393 wpalMutexAcquire(&pWDICtx->wptMutex);
10394
10395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010396 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010398 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10399 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 &macBSSID))
10401 {
10402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010403 "This station does not exist in the WDI Station Table %d",
10404 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 }
10408
10409
Jeff Johnsone7245742012-09-05 17:12:55 -070010410 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010411
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10415 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10416 __func__, MAC_ADDR_ARRAY(macBSSID));
10417
Jeff Johnson295189b2012-06-20 16:38:30 -070010418 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 }
10421
10422 /*------------------------------------------------------------------------
10423 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010424 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010425 ------------------------------------------------------------------------*/
10426 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10427 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10429 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10430 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010431
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 }
10436
10437
10438 wpalMutexRelease(&pWDICtx->wptMutex);
10439 /*-----------------------------------------------------------------------
10440 Get message buffer
10441 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10443 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 sizeof(halAddBASessionReq.addBASessionParams),
10445 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10448 {
10449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010450 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 }
10455
10456 halAddBASessionReq.addBASessionParams.staIdx =
10457 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10458 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10459 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10460 WDI_MAC_ADDR_LEN);
10461 halAddBASessionReq.addBASessionParams.baTID =
10462 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10463 halAddBASessionReq.addBASessionParams.baPolicy =
10464 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10465 halAddBASessionReq.addBASessionParams.baBufferSize =
10466 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10467 halAddBASessionReq.addBASessionParams.baTimeout =
10468 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10469 halAddBASessionReq.addBASessionParams.baSSN =
10470 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10471 halAddBASessionReq.addBASessionParams.baDirection =
10472 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10473
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 wpalMemoryCopy( pSendBuffer+usDataOffset,
10475 &halAddBASessionReq.addBASessionParams,
10476 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010477
10478 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010480
10481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010482 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010483 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10485 wdiAddBASessionRspCb, pEventData->pUserData,
10486 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010487}/*WDI_ProcessAddBASessionReq*/
10488
10489/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010492
10493 @param pWDICtx: pointer to the WLAN DAL context
10494 pEventData: pointer to the event information structure
10495
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 @see
10497 @return Result of the function call
10498*/
10499WDI_Status
10500WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010501(
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 WDI_ControlBlockType* pWDICtx,
10503 WDI_EventInfoType* pEventData
10504)
10505{
10506 WDI_DelBAReqParamsType* pwdiDelBAParams;
10507 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010508 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010509 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 wpt_uint16 usDataOffset = 0;
10512 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010513 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010514 wpt_macAddr macBSSID;
10515 tDelBAParams halDelBAparam;
10516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10517
10518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 -------------------------------------------------------------------------*/
10521 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10522 ( NULL == pEventData->pCBfnc ))
10523 {
10524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010528 }
10529
10530 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10531 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10532 /*-------------------------------------------------------------------------
10533 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010534 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010535 -------------------------------------------------------------------------*/
10536 wpalMutexAcquire(&pWDICtx->wptMutex);
10537
10538 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010539 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010540 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010541 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10542 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010543 &macBSSID))
10544 {
10545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010546 "This station does not exist in the WDI Station Table %d",
10547 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010548 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 }
10551
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010553
Jeff Johnsone7245742012-09-05 17:12:55 -070010554 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010555 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10557 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10558 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010559
10560 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010561 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 }
10563
10564 /*------------------------------------------------------------------------
10565 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 ------------------------------------------------------------------------*/
10568 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10569 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10571 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10572 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010573
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 }
10578
10579 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 sizeof(halDelBAparam),
10582 &pSendBuffer, &usDataOffset, &usSendSize))||
10583 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10584 {
10585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010586 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 }
10591
10592 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10593 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10594 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10595
Jeff Johnsone7245742012-09-05 17:12:55 -070010596 wpalMemoryCopy( pSendBuffer+usDataOffset,
10597 &halDelBAparam,
10598 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010599
10600 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010602
10603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010604 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010605 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10607 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010608}/*WDI_ProcessDelBAReq*/
10609
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010610#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010611
10612WDI_Status
10613WDI_ProcessTSMStatsReq
10614(
10615 WDI_ControlBlockType* pWDICtx,
10616 WDI_EventInfoType* pEventData
10617)
10618{
10619 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10620 WDI_TsmRspCb wdiTSMRspCb;
10621 wpt_uint8 ucCurrentBSSSesIdx = 0;
10622 WDI_BSSSessionType* pBSSSes = NULL;
10623 wpt_uint8* pSendBuffer = NULL;
10624 wpt_uint16 usDataOffset = 0;
10625 wpt_uint16 usSendSize = 0;
10626 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10627 tTsmStatsParams halTsmStatsReqParams = {0};
10628
10629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10630
10631 /*-------------------------------------------------------------------------
10632 Sanity check
10633 -------------------------------------------------------------------------*/
10634 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10635 ( NULL == pEventData->pCBfnc ))
10636 {
10637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010639 WDI_ASSERT(0);
10640 return WDI_STATUS_E_FAILURE;
10641 }
10642
10643 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10644 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10645 /*-------------------------------------------------------------------------
10646 Check to see if we are in the middle of an association, if so queue, if
10647 not it means it is free to process request
10648 -------------------------------------------------------------------------*/
10649 wpalMutexAcquire(&pWDICtx->wptMutex);
10650
10651 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10652 if ( NULL == pBSSSes )
10653 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10655 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10656 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010657
10658 wpalMutexRelease(&pWDICtx->wptMutex);
10659 return WDI_STATUS_E_NOT_ALLOWED;
10660 }
10661
10662 /*------------------------------------------------------------------------
10663 Check if this BSS is being currently processed or queued,
10664 if queued - queue the new request as well
10665 ------------------------------------------------------------------------*/
10666 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10667 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010669 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010671
10672 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10673 wpalMutexRelease(&pWDICtx->wptMutex);
10674 return wdiStatus;
10675 }
10676
10677 wpalMutexRelease(&pWDICtx->wptMutex);
10678 /*-----------------------------------------------------------------------
10679 Get message buffer
10680 ! TO DO : proper conversion into the HAL Message Request Format
10681 -----------------------------------------------------------------------*/
10682 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10683 sizeof(halTsmStatsReqParams),
10684 &pSendBuffer, &usDataOffset, &usSendSize))||
10685 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10686 {
10687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010688 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 pEventData, pwdiTSMParams, wdiTSMRspCb);
10690 WDI_ASSERT(0);
10691 return WDI_STATUS_E_FAILURE;
10692 }
10693
10694 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10695 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10696 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10697 WDI_MAC_ADDR_LEN);
10698 wpalMemoryCopy( pSendBuffer+usDataOffset,
10699 &halTsmStatsReqParams,
10700 sizeof(halTsmStatsReqParams));
10701
10702 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10703 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10704
10705 /*-------------------------------------------------------------------------
10706 Send TSM Stats Request to HAL
10707 -------------------------------------------------------------------------*/
10708 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10709 wdiTSMRspCb, pEventData->pUserData,
10710 WDI_TSM_STATS_RESP);
10711}/*WDI_ProcessTSMStatsReq*/
10712
10713#endif
10714
10715
10716/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010719
10720 @param pWDICtx: pointer to the WLAN DAL context
10721 pEventData: pointer to the event information structure
10722
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 @see
10724 @return Result of the function call
10725*/
10726WDI_Status
10727WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010728(
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 WDI_ControlBlockType* pWDICtx,
10730 WDI_EventInfoType* pEventData
10731)
10732{
10733 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10734 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010736 wpt_uint16 usDataOffset = 0;
10737 wpt_uint16 usSendSize = 0;
10738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10739
10740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010742 -------------------------------------------------------------------------*/
10743 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10744 ( NULL == pEventData->pCBfnc ))
10745 {
10746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010750 }
10751
10752 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10753 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10754 /*-----------------------------------------------------------------------
10755 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010756 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10760 &pSendBuffer, &usDataOffset, &usSendSize))||
10761 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10762 {
10763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010764 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 }
10769
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 wpalMemoryCopy( pSendBuffer+usDataOffset,
10771 &pwdiFlushAcParams->wdiFlushAcInfo,
10772 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010773
10774 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010776
10777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10781 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010782}/*WDI_ProcessFlushAcReq*/
10783
10784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010787
10788 @param pWDICtx: pointer to the WLAN DAL context
10789 pEventData: pointer to the event information structure
10790
Jeff Johnson295189b2012-06-20 16:38:30 -070010791 @see
10792 @return Result of the function call
10793*/
10794WDI_Status
10795WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010796(
Jeff Johnson295189b2012-06-20 16:38:30 -070010797 WDI_ControlBlockType* pWDICtx,
10798 WDI_EventInfoType* pEventData
10799)
10800{
10801 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10802 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 wpt_uint16 usDataOffset = 0;
10805 wpt_uint16 usSendSize = 0;
10806
10807 tBtAmpEventMsg haltBtAmpEventMsg;
10808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10809
10810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 -------------------------------------------------------------------------*/
10813 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10814 ( NULL == pEventData->pCBfnc ))
10815 {
10816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 }
10821
10822 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10823 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10824 /*-----------------------------------------------------------------------
10825 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010826 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10830 &pSendBuffer, &usDataOffset, &usSendSize))||
10831 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10832 {
10833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010834 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 }
10839
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010842 wpalMemoryCopy( pSendBuffer+usDataOffset,
10843 &haltBtAmpEventMsg.btAmpEventParams,
10844 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010845
10846 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010848
10849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010850 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010852 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10853 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010854}/*WDI_ProcessBtAmpEventReq*/
10855
10856/**
10857 @brief Process Add STA self Request function (called when Main FSM
10858 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010859
10860 @param pWDICtx: pointer to the WLAN DAL context
10861 pEventData: pointer to the event information structure
10862
Jeff Johnson295189b2012-06-20 16:38:30 -070010863 @see
10864 @return Result of the function call
10865*/
10866WDI_Status
10867WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010868(
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 WDI_ControlBlockType* pWDICtx,
10870 WDI_EventInfoType* pEventData
10871)
10872{
10873 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10874 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 wpt_uint16 usDataOffset = 0;
10877 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010878 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10880
10881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010882 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010883 -------------------------------------------------------------------------*/
10884 if (( NULL == pEventData ) ||
10885 ( NULL == pEventData->pEventData) ||
10886 ( NULL == pEventData->pCBfnc))
10887 {
10888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010892 }
10893
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010895 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010896 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10898 /*-----------------------------------------------------------------------
10899 Get message buffer
10900 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10902 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010903 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010904 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010905 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 {
10907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010908 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010909 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 }
10913
10914 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10917
Jeff Johnsone7245742012-09-05 17:12:55 -070010918 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010919 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10920 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10921 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10922 {
10923 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10924 }
10925 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10926 VOS_P2P_CLIENT_MODE) ||
10927 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10928 VOS_P2P_DEVICE))
10929 {
10930 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10931 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010933 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010934
10935 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010936 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010937
10938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10942 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10943 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010944}/*WDI_ProcessAddSTASelfReq*/
10945
10946
10947
10948/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010949 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010950 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010951
10952 @param pWDICtx: pointer to the WLAN DAL context
10953 pEventData: pointer to the event information structure
10954
Jeff Johnson295189b2012-06-20 16:38:30 -070010955 @see
10956 @return Result of the function call
10957*/
10958WDI_Status
10959WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010960(
Jeff Johnson295189b2012-06-20 16:38:30 -070010961 WDI_ControlBlockType* pWDICtx,
10962 WDI_EventInfoType* pEventData
10963)
10964{
10965 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10966 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010967 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010968 wpt_uint16 usDataOffset = 0;
10969 wpt_uint16 usSendSize = 0;
10970 tDelStaSelfParams halSetDelSelfSTAParams;
10971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10972
10973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 -------------------------------------------------------------------------*/
10976 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10977 ( NULL == pEventData->pCBfnc ))
10978 {
10979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010983 }
10984
Jeff Johnsone7245742012-09-05 17:12:55 -070010985 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010986 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10987 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10988
10989 /*-----------------------------------------------------------------------
10990 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010992 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010994 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10995 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010996 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10998 {
10999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011000 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011001 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011004 }
11005
Jeff Johnsone7245742012-09-05 17:12:55 -070011006 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011007 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11008
Jeff Johnsone7245742012-09-05 17:12:55 -070011009 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11010 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011011
11012 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011013 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011014
11015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011016 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011017 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011018 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11019 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011020 WDI_DEL_STA_SELF_RESP);
11021
11022}
11023
Jeff Johnsone7245742012-09-05 17:12:55 -070011024#ifdef FEATURE_OEM_DATA_SUPPORT
11025/**
11026 @brief Process Start Oem Data Request function (called when Main
11027 FSM allows it)
11028
11029 @param pWDICtx: pointer to the WLAN DAL context
11030 pEventData: pointer to the event information structure
11031
11032 @see
11033 @return Result of the function call
11034*/
11035WDI_Status
11036WDI_ProcessStartOemDataReq
11037(
11038 WDI_ControlBlockType* pWDICtx,
11039 WDI_EventInfoType* pEventData
11040)
11041{
11042 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11043 WDI_oemDataRspCb wdiOemDataRspCb;
11044 wpt_uint8* pSendBuffer = NULL;
11045 wpt_uint16 usDataOffset = 0;
11046 wpt_uint16 usSendSize = 0;
11047 wpt_uint16 reqLen;
11048 tStartOemDataReqParams* halStartOemDataReqParams;
11049
11050 /*-------------------------------------------------------------------------
11051 Sanity check
11052 -------------------------------------------------------------------------*/
11053 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11054 ( NULL == pEventData->pCBfnc ))
11055 {
11056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011057 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011058 WDI_ASSERT(0);
11059 return WDI_STATUS_E_FAILURE;
11060 }
11061
11062 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11063 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11064
11065 /*-----------------------------------------------------------------------
11066 Get message buffer
11067 -----------------------------------------------------------------------*/
11068
11069 reqLen = sizeof(tStartOemDataReqParams);
11070
11071 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11072 WDI_START_OEM_DATA_REQ, reqLen,
11073 &pSendBuffer, &usDataOffset, &usSendSize))||
11074 (usSendSize < (usDataOffset + reqLen)))
11075 {
11076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011077 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011078 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11079 WDI_ASSERT(0);
11080 return WDI_STATUS_E_FAILURE;
11081 }
11082
11083 //copying WDI OEM DATA REQ PARAMS to shared memory
11084 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11085
11086 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11087 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11088
11089 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11090 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11091
11092 /*-------------------------------------------------------------------------
11093 Send Start Request to HAL
11094 -------------------------------------------------------------------------*/
11095 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11096 wdiOemDataRspCb, pEventData->pUserData,
11097 WDI_START_OEM_DATA_RESP);
11098}/*WDI_ProcessStartOemDataReq*/
11099#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011100
11101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011102 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011103 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011104
11105 @param pWDICtx: pointer to the WLAN DAL context
11106 pEventData: pointer to the event information structure
11107
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 @see
11109 @return Result of the function call
11110*/
11111WDI_Status
11112WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011113(
Jeff Johnson295189b2012-06-20 16:38:30 -070011114 WDI_ControlBlockType* pWDICtx,
11115 WDI_EventInfoType* pEventData
11116)
11117{
11118 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11119 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 wpt_uint16 usDataOffset = 0;
11122 wpt_uint16 usSendSize = 0;
11123 tHalWlanHostResumeReqParam halResumeReqParams;
11124
11125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11126
11127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011129 -------------------------------------------------------------------------*/
11130 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11131 ( NULL == pEventData->pCBfnc ))
11132 {
11133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011134 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 }
11138
11139 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11140 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11141
11142 /*-----------------------------------------------------------------------
11143 Get message buffer
11144 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011146 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11147 &pSendBuffer, &usDataOffset, &usSendSize))||
11148 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11149 {
11150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011151 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011155 }
11156
Jeff Johnsone7245742012-09-05 17:12:55 -070011157 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011158 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011159
11160 wpalMemoryCopy( pSendBuffer+usDataOffset,
11161 &halResumeReqParams,
11162 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011163
11164 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011165 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011166
11167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011170 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11171 wdiHostResumeRspCb, pEventData->pUserData,
11172 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011173}/*WDI_ProcessHostResumeReq*/
11174
11175/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011176 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011178
11179 @param pWDICtx: pointer to the WLAN DAL context
11180 pEventData: pointer to the event information structure
11181
Jeff Johnson295189b2012-06-20 16:38:30 -070011182 @see
11183 @return Result of the function call
11184*/
11185WDI_Status
11186WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011187(
Jeff Johnson295189b2012-06-20 16:38:30 -070011188 WDI_ControlBlockType* pWDICtx,
11189 WDI_EventInfoType* pEventData
11190)
11191{
11192 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11193 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011195 wpt_uint16 usDataOffset = 0;
11196 wpt_uint16 usSendSize = 0;
11197 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11199
11200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011202 -------------------------------------------------------------------------*/
11203 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11204 ( NULL == pEventData->pCBfnc ))
11205 {
11206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011207 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 }
11211
11212 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11213 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011214
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 /*-----------------------------------------------------------------------
11216 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011217 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 sizeof(halTxPerTrackingReqParam),
11221 &pSendBuffer, &usDataOffset, &usSendSize))||
11222 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11223 {
11224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011225 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011229 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011230
Jeff Johnson295189b2012-06-20 16:38:30 -070011231 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11232 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11233 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11234 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011235
11236 wpalMemoryCopy( pSendBuffer+usDataOffset,
11237 &halTxPerTrackingReqParam,
11238 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011239
11240 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011241 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011242
11243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011244 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11247 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011248}/*WDI_ProcessSetTxPerTrackingReq*/
11249
11250/*=========================================================================
11251 Indications
11252=========================================================================*/
11253
11254/**
11255 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011256
11257 @param pWDICtx: pointer to the WLAN DAL context
11258 pEventData: pointer to the event information structure
11259
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 @see
11261 @return Result of the function call
11262*/
11263WDI_Status
11264WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011265(
Jeff Johnson295189b2012-06-20 16:38:30 -070011266 WDI_ControlBlockType* pWDICtx,
11267 WDI_EventInfoType* pEventData
11268)
11269{
11270 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011271 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011272 wpt_uint16 usDataOffset = 0;
11273 wpt_uint16 usSendSize = 0;
11274 WDI_Status wdiStatus;
11275 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11277
11278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 -------------------------------------------------------------------------*/
11281 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11282 {
11283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011284 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 }
11288
11289 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11290
11291 /*-----------------------------------------------------------------------
11292 Get message buffer
11293 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011294 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11295 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011296 sizeof(halWlanSuspendIndparams),
11297 &pSendBuffer, &usDataOffset, &usSendSize))||
11298 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11299 {
11300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11301 "Unable to get send buffer in Suspend Ind ");
11302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011304 }
11305
11306 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11307 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11308
Jeff Johnsone7245742012-09-05 17:12:55 -070011309 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011310 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011311
Jeff Johnsone7245742012-09-05 17:12:55 -070011312 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11313 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011314
11315 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 -------------------------------------------------------------------------*/
11318 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011320
Jeff Johnsone7245742012-09-05 17:12:55 -070011321 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011322 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11323}/*WDI_ProcessHostSuspendInd*/
11324
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011325
11326
11327/**
11328 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11329
11330 @param pWDICtx: pointer to the WLAN DAL context
11331 pEventData: pointer to the event information structure
11332
11333 @see
11334 @return Result of the function call
11335*/
11336WDI_Status
11337WDI_ProcessTrafficStatsInd
11338(
11339 WDI_ControlBlockType* pWDICtx,
11340 WDI_EventInfoType* pEventData
11341)
11342{
11343 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11344 wpt_uint8* pSendBuffer = NULL;
11345 wpt_uint16 usDataOffset = 0;
11346 wpt_uint16 usSendSize = 0;
11347 WDI_Status wdiStatus;
11348 tStatsClassBIndParams* pStatsClassBIndParams;
11349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11350
11351 /*-------------------------------------------------------------------------
11352 Sanity check
11353 -------------------------------------------------------------------------*/
11354 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11355 {
11356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11357 "%s: Invalid parameters in Traffic Stats ind",__func__);
11358 WDI_ASSERT(0);
11359 return WDI_STATUS_E_FAILURE;
11360 }
11361
11362 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11363
11364 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11365 {
11366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11367 "%s: Invalid parameters in Traffic Stats ind",__func__);
11368 WDI_ASSERT(0);
11369 return WDI_STATUS_E_FAILURE;
11370 }
11371
11372 /*-----------------------------------------------------------------------
11373 Get message buffer
11374 -----------------------------------------------------------------------*/
11375 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11376 WDI_TRAFFIC_STATS_IND,
11377 sizeof(tStatsClassBIndParams),
11378 &pSendBuffer, &usDataOffset, &usSendSize))||
11379 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11380 {
11381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11382 "Unable to get send buffer in Traffic Stats Ind ");
11383 WDI_ASSERT(0);
11384 return WDI_STATUS_E_FAILURE;
11385 }
11386
11387 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11388
11389 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11390
11391 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11392 pTrafficStatsIndParams->pTrafficStats,
11393 pTrafficStatsIndParams->length);
11394
11395 /*-------------------------------------------------------------------------
11396 Send Suspend Request to HAL
11397 -------------------------------------------------------------------------*/
11398 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11399 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11400
11401 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11402 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11403}/*WDI_ProcessTrafficStatsInd*/
11404
Chet Lanctot186b5732013-03-18 10:26:30 -070011405#ifdef WLAN_FEATURE_11W
11406/**
11407 @brief Process Exclude Unencrypted Indications function (called
11408 when Main FSM allows it)
11409
11410 @param pWDICtx: pointer to the WLAN DAL context
11411 pEventData: pointer to the event information structure
11412
11413 @see
11414 @return Result of the function call
11415*/
11416WDI_Status
11417WDI_ProcessExcludeUnencryptInd
11418(
11419 WDI_ControlBlockType* pWDICtx,
11420 WDI_EventInfoType* pEventData
11421)
11422{
11423 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11424 wpt_uint8* pSendBuffer = NULL;
11425 wpt_uint16 usDataOffset = 0;
11426 wpt_uint16 usSendSize = 0;
11427 WDI_Status wdiStatus;
11428 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11430
11431 /*-------------------------------------------------------------------------
11432 Sanity check
11433 -------------------------------------------------------------------------*/
11434 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11435 {
11436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11437 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11438 WDI_ASSERT(0);
11439 return WDI_STATUS_E_FAILURE;
11440 }
11441
11442 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11443
11444 /*-----------------------------------------------------------------------
11445 Get message buffer
11446 -----------------------------------------------------------------------*/
11447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11448 WDI_EXCLUDE_UNENCRYPTED_IND,
11449 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11450 &pSendBuffer, &usDataOffset, &usSendSize))||
11451 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11452 {
11453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11454 "Unable to get send buffer in Exclude Unencrypted Ind ");
11455 WDI_ASSERT(0);
11456 return WDI_STATUS_E_FAILURE;
11457 }
11458
11459 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11460
11461 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11462
11463 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11464 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11465
11466 /*-------------------------------------------------------------------------
11467 Send Suspend Request to HAL
11468 -------------------------------------------------------------------------*/
11469 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11470 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11471
11472 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11473 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11474}/*WDI_ProcessExcludeUnencryptInd*/
11475#endif
11476
Yue Mab9c86f42013-08-14 15:59:08 -070011477/**
11478 @brief Process Add Periodic Tx Pattern Indication function (called when
11479 Main FSM allows it)
11480
11481 @param pWDICtx: pointer to the WLAN DAL context
11482 pEventData: pointer to the event information structure
11483
11484 @see
11485 @return Result of the function call
11486*/
11487WDI_Status
11488WDI_ProcessAddPeriodicTxPtrnInd
11489(
11490 WDI_ControlBlockType* pWDICtx,
11491 WDI_EventInfoType* pEventData
11492)
11493{
11494 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11495 wpt_uint8* pSendBuffer = NULL;
11496 wpt_uint16 usDataOffset = 0;
11497 wpt_uint16 usSendSize = 0;
11498 WDI_Status wdiStatus;
11499 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11500 wpt_uint8 selfStaIdx = 0;
11501
11502 /*-------------------------------------------------------------------------
11503 Sanity check
11504 -------------------------------------------------------------------------*/
11505 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11506 {
11507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11508 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11509 WDI_ASSERT(0);
11510 return WDI_STATUS_E_FAILURE;
11511 }
11512
11513 pAddPeriodicTxPtrnParams =
11514 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11515
11516 /*------------------------------------------------------------------------
11517 Get message buffer
11518 ------------------------------------------------------------------------*/
11519 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11520 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11521 &pSendBuffer, &usDataOffset, &usSendSize))||
11522 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11523 {
11524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11525 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11526 __func__);
11527 WDI_ASSERT(0);
11528 return WDI_STATUS_E_FAILURE;
11529 }
11530
11531 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11532
11533 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11534 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11535 &selfStaIdx))
11536 {
11537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11538 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011539 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011540
11541 return WDI_STATUS_E_FAILURE;
11542 }
11543
11544 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11545 halAddPeriodicTxPtrn->ucPtrnId =
11546 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11547 halAddPeriodicTxPtrn->usPtrnSize =
11548 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11549 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11550 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11551
11552 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11553 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11554 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11555
11556 /*-------------------------------------------------------------------------
11557 Send Indication to HAL
11558 -------------------------------------------------------------------------*/
11559 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11560 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11561
11562 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11563
11564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11565 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11566
11567 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11568} /* WDI_ProcessAddPeriodicTxPtrnInd */
11569
11570/**
11571 @brief Process Delete Periodic Tx Pattern Indication function (called when
11572 Main FSM allows it)
11573
11574 @param pWDICtx: pointer to the WLAN DAL context
11575 pEventData: pointer to the event information structure
11576
11577 @see
11578 @return Result of the function call
11579*/
11580WDI_Status
11581WDI_ProcessDelPeriodicTxPtrnInd
11582(
11583 WDI_ControlBlockType* pWDICtx,
11584 WDI_EventInfoType* pEventData
11585)
11586{
11587 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11588 wpt_uint8* pSendBuffer = NULL;
11589 wpt_uint16 usDataOffset = 0;
11590 wpt_uint16 usSendSize = 0;
11591 WDI_Status wdiStatus;
11592 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11593 wpt_uint8 selfStaIdx = 0;
11594
11595 /*-------------------------------------------------------------------------
11596 Sanity check
11597 -------------------------------------------------------------------------*/
11598 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11599 {
11600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11601 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11602 WDI_ASSERT(0);
11603 return WDI_STATUS_E_FAILURE;
11604 }
11605
11606 pDelPeriodicTxPtrnParams =
11607 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11608
11609 /*------------------------------------------------------------------------
11610 Get message buffer
11611 ------------------------------------------------------------------------*/
11612 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11613 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11614 &pSendBuffer, &usDataOffset, &usSendSize))||
11615 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11616 {
11617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11618 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11619 __func__);
11620 WDI_ASSERT(0);
11621 return WDI_STATUS_E_FAILURE;
11622 }
11623
11624 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11625
11626 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11627 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11628 &selfStaIdx))
11629 {
11630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11631 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011632 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011633
11634 return WDI_STATUS_E_FAILURE;
11635 }
11636
11637 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11638 halDelPeriodicTxPtrn->uPatternIdBitmap =
11639 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11640
11641 /*-------------------------------------------------------------------------
11642 Send Indication to HAL
11643 -------------------------------------------------------------------------*/
11644 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11645 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11646
11647 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11648
11649 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11650 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11651
11652 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11653} /* WDI_ProcessDelPeriodicTxPtrnInd */
11654
Jeff Johnson295189b2012-06-20 16:38:30 -070011655/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011656 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011657==========================================================================*/
11658/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011659 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011661
11662 @param pWDICtx: pointer to the WLAN DAL context
11663 pEventData: pointer to the event information structure
11664
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 @see
11666 @return Result of the function call
11667*/
11668WDI_Status
11669WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011670(
Jeff Johnson295189b2012-06-20 16:38:30 -070011671 WDI_ControlBlockType* pWDICtx,
11672 WDI_EventInfoType* pEventData
11673)
11674{
11675 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11676 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011678 wpt_uint16 usDataOffset = 0;
11679 wpt_uint16 usSendSize = 0;
11680 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11682
11683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011684 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011685 -------------------------------------------------------------------------*/
11686 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11687 ( NULL == pEventData->pCBfnc ))
11688 {
11689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011690 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 }
11694
11695 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11696 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11697 /*-----------------------------------------------------------------------
11698 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011702 sizeof(halSwitchChannelReq.switchChannelParams),
11703 &pSendBuffer, &usDataOffset, &usSendSize))||
11704 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11705 {
11706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011707 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011711 }
11712
Jeff Johnsone7245742012-09-05 17:12:55 -070011713 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011714 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011715#ifndef WLAN_FEATURE_VOWIFI
11716 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011717 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11718#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11721
11722#ifdef WLAN_FEATURE_VOWIFI
11723 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011724 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011725 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11726 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11727 WDI_MAC_ADDR_LEN);
11728 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11729 pwdiSwitchChParams->wdiChInfo.macBSSId,
11730 WDI_MAC_ADDR_LEN);
11731#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011732 wpalMemoryCopy( pSendBuffer+usDataOffset,
11733 &halSwitchChannelReq.switchChannelParams,
11734 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011735
11736 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011737 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011738
11739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011740 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011741 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011742 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11743 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011744}/*WDI_ProcessChannelSwitchReq*/
11745
11746/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011747 @brief Process Channel Switch Request function (called when
11748 Main FSM allows it)
11749
11750 @param pWDICtx: pointer to the WLAN DAL context
11751 pEventData: pointer to the event information structure
11752
11753 @see
11754 @return Result of the function call
11755*/
11756WDI_Status WDI_ProcessChannelSwitchReq_V1
11757(
11758 WDI_ControlBlockType* pWDICtx,
11759 WDI_EventInfoType* pEventData
11760)
11761{
11762 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11763 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11764 wpt_uint8* pSendBuffer = NULL;
11765 wpt_uint16 usDataOffset = 0;
11766 wpt_uint16 usSendSize = 0;
11767 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11769
11770 /*-------------------------------------------------------------------------
11771 Sanity check
11772 -------------------------------------------------------------------------*/
11773 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11774 ( NULL == pEventData->pCBfnc ))
11775 {
11776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11777 "%s: Invalid parameters", __func__);
11778 WDI_ASSERT(0);
11779 return WDI_STATUS_E_FAILURE;
11780 }
11781
11782 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11783 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11784 /*-----------------------------------------------------------------------
11785 Get message buffer
11786 ! TO DO : proper conversion into the HAL Message Request Format
11787 -----------------------------------------------------------------------*/
11788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11789 WDI_CH_SWITCH_REQ_V1,
11790 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11791 &pSendBuffer, &usDataOffset, &usSendSize))||
11792 ( usSendSize < (usDataOffset +
11793 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11794 {
11795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11796 "Unable to get send buffer in channel switch req %p %p %p",
11797 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11798 WDI_ASSERT(0);
11799 return WDI_STATUS_E_FAILURE;
11800 }
11801
11802 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11803 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11804
11805 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11806 pwdiSwitchChParams->wdiChInfo.ucChannel;
11807#ifndef WLAN_FEATURE_VOWIFI
11808 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11809 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11810#endif
11811 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11812 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11813
11814#ifdef WLAN_FEATURE_VOWIFI
11815 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11816 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11817 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11818 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11819 WDI_MAC_ADDR_LEN);
11820 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11821 pwdiSwitchChParams->wdiChInfo.macBSSId,
11822 WDI_MAC_ADDR_LEN);
11823#endif
11824 wpalMemoryCopy( pSendBuffer+usDataOffset,
11825 &halSwitchChannelReq.switchChannelParams_V1,
11826 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11827
11828 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11829 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11830
11831 /*-------------------------------------------------------------------------
11832 Send Switch Channel Request to HAL
11833 -------------------------------------------------------------------------*/
11834 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11835 wdiSwitchChRspCb, pEventData->pUserData,
11836 WDI_CH_SWITCH_RESP_V1);
11837}/*WDI_ProcessChannelSwitchReq_V1*/
11838
11839/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011840 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011841 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011842
11843 @param pWDICtx: pointer to the WLAN DAL context
11844 pEventData: pointer to the event information structure
11845
Jeff Johnson295189b2012-06-20 16:38:30 -070011846 @see
11847 @return Result of the function call
11848*/
11849WDI_Status
11850WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011851(
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 WDI_ControlBlockType* pWDICtx,
11853 WDI_EventInfoType* pEventData
11854)
11855{
11856 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11857 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011861 wpt_uint16 usDataOffset = 0;
11862 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011863 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011864
Jeff Johnsone7245742012-09-05 17:12:55 -070011865 tConfigStaReqMsg halConfigStaReqMsg;
11866 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11868
11869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011871 -------------------------------------------------------------------------*/
11872 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11873 ( NULL == pEventData->pCBfnc ))
11874 {
11875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011879 }
11880
Abhishek Singh6927fa02014-06-27 17:19:55 +053011881 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11883 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11884 /*-------------------------------------------------------------------------
11885 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 -------------------------------------------------------------------------*/
11888 wpalMutexAcquire(&pWDICtx->wptMutex);
11889
11890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011893 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11894 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11895 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011896
Jeff Johnsone7245742012-09-05 17:12:55 -070011897 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11900 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11901 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011902
11903 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 }
11906
11907 /*------------------------------------------------------------------------
11908 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011909 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011910 ------------------------------------------------------------------------*/
11911 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11912 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11914 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11915 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011916
Jeff Johnsone7245742012-09-05 17:12:55 -070011917 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011919 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011920 }
11921
11922 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011923
11924 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11925#ifdef WLAN_FEATURE_11AC
11926 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011927 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 else
11929#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011930 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011931
Jeff Johnson295189b2012-06-20 16:38:30 -070011932 /*-----------------------------------------------------------------------
11933 Get message buffer
11934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11936 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011937 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011938 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011939 {
11940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011941 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011945 }
11946
11947 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 &pwdiConfigSTAParams->wdiReqInfo);
11950
11951 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11952 {
11953 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 WDI_STATableFindStaidByAddr(pWDICtx,
11956 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 {
11959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011960 MAC_ADDRESS_STR
11961 ": This station does not exist in the WDI Station Table",
11962 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011964 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011966 }
11967 }
11968 else
11969 {
11970 /* Need to fill in the STA Index to invalid, since at this point we have not
11971 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011972 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011973 }
11974
11975 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011977
Jeff Johnsone7245742012-09-05 17:12:55 -070011978 wpalMemoryCopy( pSendBuffer+usDataOffset,
11979 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011980 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011981
11982 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011984
Jeff Johnsone7245742012-09-05 17:12:55 -070011985 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11986 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 sizeof(pWDICtx->wdiCachedConfigStaReq));
11988
11989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011990 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11993 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011994}/*WDI_ProcessConfigStaReq*/
11995
11996
11997/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011998 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012000
12001 @param pWDICtx: pointer to the WLAN DAL context
12002 pEventData: pointer to the event information structure
12003
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 @see
12005 @return Result of the function call
12006*/
12007WDI_Status
12008WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012009(
Jeff Johnson295189b2012-06-20 16:38:30 -070012010 WDI_ControlBlockType* pWDICtx,
12011 WDI_EventInfoType* pEventData
12012)
12013{
12014 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12015 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012018 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 wpt_uint16 usDataOffset = 0;
12020 wpt_uint16 usSendSize = 0;
12021 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12024
12025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 -------------------------------------------------------------------------*/
12028 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12029 ( NULL == pEventData->pCBfnc ))
12030 {
12031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 }
12036
12037 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12038 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12039 /*-------------------------------------------------------------------------
12040 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012041 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012042 -------------------------------------------------------------------------*/
12043 wpalMutexAcquire(&pWDICtx->wptMutex);
12044
12045 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12049 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12050 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012051
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012053 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12056 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012057 }
12058 else
12059 {
12060 /*------------------------------------------------------------------------
12061 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 ------------------------------------------------------------------------*/
12064 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12065 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12067 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12068 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12069
12070 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012071 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012072 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012073 }
12074 }
12075 /* If the link is set to enter IDLE - the Session allocated for this BSS
12076 will be deleted on the Set Link State response coming from HAL
12077 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12080
12081 wpalMutexRelease(&pWDICtx->wptMutex);
12082 /*-----------------------------------------------------------------------
12083 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012086
12087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 sizeof(halLinkStateReqMsg),
12089 &pSendBuffer, &usDataOffset, &usSendSize))||
12090 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12091 {
12092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012093 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012094 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 }
12098
12099 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12100 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12101
12102 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12103 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12104
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12107
Jeff Johnsone7245742012-09-05 17:12:55 -070012108 wpalMemoryCopy( pSendBuffer+usDataOffset,
12109 &halLinkStateReqMsg,
12110 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012111
12112 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012113 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012114
12115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012116 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012117 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012118 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12119 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012120}/*WDI_ProcessSetLinkStateReq*/
12121
12122
12123/**
12124 @brief Process Get Stats Request function (called when Main FSM
12125 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012126
12127 @param pWDICtx: pointer to the WLAN DAL context
12128 pEventData: pointer to the event information structure
12129
Jeff Johnson295189b2012-06-20 16:38:30 -070012130 @see
12131 @return Result of the function call
12132*/
12133WDI_Status
12134WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012135(
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 WDI_ControlBlockType* pWDICtx,
12137 WDI_EventInfoType* pEventData
12138)
12139{
12140 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12141 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 wpt_uint16 usDataOffset = 0;
12144 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012145 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012146 WDI_BSSSessionType* pBSSSes = NULL;
12147 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012148 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012149 tHalStatsReqMsg halStatsReqMsg;
12150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12151
12152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012153 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 -------------------------------------------------------------------------*/
12155 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12156 ( NULL == pEventData->pCBfnc ) )
12157 {
12158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 }
12163
12164 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12165 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12166
12167 /*-------------------------------------------------------------------------
12168 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012169 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 -------------------------------------------------------------------------*/
12171 wpalMutexAcquire(&pWDICtx->wptMutex);
12172
12173 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012174 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012175 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12177 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012178 &macBSSID))
12179 {
12180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012181 "This station does not exist in the WDI Station Table %d",
12182 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012183 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 }
12186
Jeff Johnsone7245742012-09-05 17:12:55 -070012187 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12188 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12191 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12192 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012193
12194 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 }
12197
12198 /*------------------------------------------------------------------------
12199 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 ------------------------------------------------------------------------*/
12202 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12203 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12205 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12206 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012207
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 }
12212
12213
12214 wpalMutexRelease(&pWDICtx->wptMutex);
12215
12216 /*-----------------------------------------------------------------------
12217 Get message buffer
12218 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012219 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012220 sizeof(halStatsReqMsg.statsReqParams),
12221 &pSendBuffer, &usDataOffset, &usSendSize))||
12222 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12223 {
12224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012225 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012229 }
12230
Jeff Johnsone7245742012-09-05 17:12:55 -070012231 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012235 wpalMemoryCopy( pSendBuffer+usDataOffset,
12236 &halStatsReqMsg.statsReqParams,
12237 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012238
12239 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012241
12242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012243 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12246 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012247}/*WDI_ProcessGetStatsReq*/
12248
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012249#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012250/**
12251 @brief Process Get Roam Rssi Request function (called when Main FSM
12252 allows it)
12253
12254 @param pWDICtx: pointer to the WLAN DAL context
12255 pEventData: pointer to the event information structure
12256
12257 @see
12258 @return Result of the function call
12259*/
12260WDI_Status
12261WDI_ProcessGetRoamRssiReq
12262(
12263 WDI_ControlBlockType* pWDICtx,
12264 WDI_EventInfoType* pEventData
12265)
12266{
12267 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12268 WDI_GetStatsRspCb wdiGetStatsRspCb;
12269 wpt_uint8* pSendBuffer = NULL;
12270 wpt_uint16 usDataOffset = 0;
12271 wpt_uint16 usSendSize = 0;
12272 wpt_uint8 ucCurrentBSSSesIdx = 0;
12273 WDI_BSSSessionType* pBSSSes = NULL;
12274 wpt_macAddr macBSSID;
12275 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12276 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12278 /*-------------------------------------------------------------------------
12279 Sanity check
12280 -------------------------------------------------------------------------*/
12281 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12282 ( NULL == pEventData->pCBfnc ) )
12283 {
12284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12285 "%s: Invalid parameters", __func__);
12286 WDI_ASSERT(0);
12287 return WDI_STATUS_E_FAILURE;
12288 }
12289
12290 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12291 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12292
12293 /*-------------------------------------------------------------------------
12294 Check to see if we are in the middle of an association, if so queue, if
12295 not it means it is free to process request
12296 -------------------------------------------------------------------------*/
12297 wpalMutexAcquire(&pWDICtx->wptMutex);
12298
12299 /*------------------------------------------------------------------------
12300 Find the BSS for which the request is made
12301 ------------------------------------------------------------------------*/
12302 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12303 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12304 &macBSSID))
12305 {
12306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012307 "This station does not exist in the WDI Station Table %d",
12308 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012309 wpalMutexRelease(&pWDICtx->wptMutex);
12310 return WDI_STATUS_E_FAILURE;
12311 }
12312
12313 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12314 if ( NULL == pBSSSes )
12315 {
12316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12317 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12318 __func__, MAC_ADDR_ARRAY(macBSSID));
12319
12320 wpalMutexRelease(&pWDICtx->wptMutex);
12321 return WDI_STATUS_E_NOT_ALLOWED;
12322 }
12323
12324 /*------------------------------------------------------------------------
12325 Check if this BSS is being currently processed or queued,
12326 if queued - queue the new request as well
12327 ------------------------------------------------------------------------*/
12328 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12329 {
12330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12331 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12332 __func__, MAC_ADDR_ARRAY(macBSSID));
12333
12334 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12335 wpalMutexRelease(&pWDICtx->wptMutex);
12336 return wdiStatus;
12337 }
12338
12339 wpalMutexRelease(&pWDICtx->wptMutex);
12340
12341 /*-----------------------------------------------------------------------
12342 Get message buffer
12343 -----------------------------------------------------------------------*/
12344 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12345 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12346 &pSendBuffer, &usDataOffset, &usSendSize))||
12347 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12348 {
12349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012350 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012351 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12352 WDI_ASSERT(0);
12353 return WDI_STATUS_E_FAILURE;
12354 }
12355
12356 halRssiRoamReqMsg.roamRssiReqParams.staId =
12357 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12358 wpalMemoryCopy( pSendBuffer+usDataOffset,
12359 &halRssiRoamReqMsg.roamRssiReqParams,
12360 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12361
12362 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12363 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12364
12365 /*-------------------------------------------------------------------------
12366 Send Get STA Request to HAL
12367 -------------------------------------------------------------------------*/
12368 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12369 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12370}/*WDI_ProcessGetRoamRssiReq*/
12371#endif
12372
Jeff Johnson295189b2012-06-20 16:38:30 -070012373/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012374 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012376
12377 @param pWDICtx: pointer to the WLAN DAL context
12378 pEventData: pointer to the event information structure
12379
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 @see
12381 @return Result of the function call
12382*/
12383WDI_Status
12384WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012385(
Jeff Johnson295189b2012-06-20 16:38:30 -070012386 WDI_ControlBlockType* pWDICtx,
12387 WDI_EventInfoType* pEventData
12388)
12389{
12390 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12391 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12392
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 wpt_uint16 usDataOffset = 0;
12395 wpt_uint16 usSendSize = 0;
12396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12397
12398 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 -------------------------------------------------------------------------*/
12401 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12402 ( NULL == pEventData->pCBfnc))
12403 {
12404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 }
12409
12410 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12411 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12412
12413 /*-----------------------------------------------------------------------
12414 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012415 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012416 -----------------------------------------------------------------------*/
12417
Jeff Johnsone7245742012-09-05 17:12:55 -070012418 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012419 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12420 &pSendBuffer, &usDataOffset, &usSendSize))||
12421 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12422 {
12423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012424 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012425 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 }
12429
Jeff Johnsone7245742012-09-05 17:12:55 -070012430 wpalMemoryCopy( pSendBuffer+usDataOffset,
12431 &pwdiUpdateCfgParams->uConfigBufferLen,
12432 sizeof(wpt_uint32));
12433 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12434 pwdiUpdateCfgParams->pConfigBuffer,
12435 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012436
12437 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012439
12440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 -------------------------------------------------------------------------*/
12443
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12445 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012446
12447}/*WDI_ProcessUpdateCfgReq*/
12448
12449
12450/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012453
12454 @param pWDICtx: pointer to the WLAN DAL context
12455 pEventData: pointer to the event information structure
12456
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 @see
12458 @return Result of the function call
12459*/
12460WDI_Status
12461WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012462(
Jeff Johnson295189b2012-06-20 16:38:30 -070012463 WDI_ControlBlockType* pWDICtx,
12464 WDI_EventInfoType* pEventData
12465)
12466{
12467 WDI_AddBAReqParamsType* pwdiAddBAParams;
12468 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012472 wpt_uint16 usDataOffset = 0;
12473 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012474 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 wpt_macAddr macBSSID;
12476
12477 tAddBAReqMsg halAddBAReq;
12478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12479
12480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 -------------------------------------------------------------------------*/
12483 if (( NULL == pEventData ) ||
12484 ( NULL == pEventData->pEventData) ||
12485 ( NULL == pEventData->pCBfnc ))
12486 {
12487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 }
12492
12493 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12494 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12495
12496 /*-------------------------------------------------------------------------
12497 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012499 -------------------------------------------------------------------------*/
12500 wpalMutexAcquire(&pWDICtx->wptMutex);
12501
12502 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12506 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 &macBSSID))
12508 {
12509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012510 "This station does not exist in the WDI Station Table %d",
12511 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 }
12515
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12517 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12520 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12521 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012522
12523 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012525 }
12526
12527 /*------------------------------------------------------------------------
12528 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 ------------------------------------------------------------------------*/
12531 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12532 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12534 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12535 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012536
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012538 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012540 }
12541
12542
12543 wpalMutexRelease(&pWDICtx->wptMutex);
12544 /*-----------------------------------------------------------------------
12545 Get message buffer
12546 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 sizeof(halAddBAReq.addBAParams),
12549 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12552 {
12553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012554 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012558 }
12559
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12562 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12563#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12566#endif
12567
Jeff Johnsone7245742012-09-05 17:12:55 -070012568 wpalMemoryCopy( pSendBuffer+usDataOffset,
12569 &halAddBAReq.addBAParams,
12570 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012571
12572 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012573 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012574
12575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12579 wdiAddBARspCb, pEventData->pUserData,
12580 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012581}/*WDI_ProcessAddBAReq*/
12582
12583
12584
12585/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012588
12589 @param pWDICtx: pointer to the WLAN DAL context
12590 pEventData: pointer to the event information structure
12591
Jeff Johnson295189b2012-06-20 16:38:30 -070012592 @see
12593 @return Result of the function call
12594*/
12595WDI_Status
12596WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012597(
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 WDI_ControlBlockType* pWDICtx,
12599 WDI_EventInfoType* pEventData
12600)
12601{
12602 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12603 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012606 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012607 wpt_uint16 usDataOffset = 0;
12608 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 wpt_uint16 index;
12611 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012612
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 tTriggerBAReqMsg halTriggerBAReq;
12614 tTriggerBaReqCandidate* halTriggerBACandidate;
12615 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12617
12618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 -------------------------------------------------------------------------*/
12621 if (( NULL == pEventData ) ||
12622 ( NULL == pEventData->pEventData ) ||
12623 ( NULL == pEventData->pCBfnc ))
12624 {
12625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 }
12630
12631 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12632 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12633 /*-------------------------------------------------------------------------
12634 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012635 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 -------------------------------------------------------------------------*/
12637 wpalMutexAcquire(&pWDICtx->wptMutex);
12638
12639 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012640 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012641 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012642 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12643 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 &macBSSID))
12645 {
12646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012647 "This station does not exist in the WDI Station Table %d",
12648 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 }
12652
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12654 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012655 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12657 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12658 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012659
12660 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012661 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012662 }
12663
12664 /*------------------------------------------------------------------------
12665 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 ------------------------------------------------------------------------*/
12668 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12669 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12671 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12672 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012673
Jeff Johnsone7245742012-09-05 17:12:55 -070012674 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012675 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012676 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012677 }
12678
12679
12680 wpalMutexRelease(&pWDICtx->wptMutex);
12681 /*-----------------------------------------------------------------------
12682 Get message buffer
12683 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12685 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012686 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012688 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12689 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12694 {
12695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012696 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012700 }
12701
Jeff Johnsone7245742012-09-05 17:12:55 -070012702 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012703 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012704 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12706
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 wpalMemoryCopy( pSendBuffer+usDataOffset,
12708 &halTriggerBAReq.triggerBAParams,
12709 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012710
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12713 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12714 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012715
12716 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012717 index++)
12718 {
12719 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12720 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12721 halTriggerBACandidate++;
12722 wdiTriggerBACandidate++;
12723 }
12724
12725 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012726 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012727
12728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012729 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012730 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012731 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12732 wdiTriggerBARspCb, pEventData->pUserData,
12733 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012734}/*WDI_ProcessTriggerBAReq*/
12735
12736
12737
12738/**
12739 @brief Process Update Beacon Params Request function (called when Main FSM
12740 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012741
12742 @param pWDICtx: pointer to the WLAN DAL context
12743 pEventData: pointer to the event information structure
12744
Jeff Johnson295189b2012-06-20 16:38:30 -070012745 @see
12746 @return Result of the function call
12747*/
12748WDI_Status
12749WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012750(
Jeff Johnson295189b2012-06-20 16:38:30 -070012751 WDI_ControlBlockType* pWDICtx,
12752 WDI_EventInfoType* pEventData
12753)
12754{
12755 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12756 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 wpt_uint16 usDataOffset = 0;
12759 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12762
12763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012765 -------------------------------------------------------------------------*/
12766 if (( NULL == pEventData ) ||
12767 ( NULL == pEventData->pEventData) ||
12768 ( NULL == pEventData->pCBfnc))
12769 {
12770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012771 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012774 }
12775
12776 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12777 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12778 /*-----------------------------------------------------------------------
12779 Get message buffer
12780 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 sizeof(halUpdateBeaconParams),
12783 &pSendBuffer, &usDataOffset, &usSendSize))||
12784 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12785 {
12786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012787 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012788 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 }
12792
12793 /*BSS Index of the BSS*/
12794 halUpdateBeaconParams.bssIdx =
12795 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12796 /*shortPreamble mode. HAL should update all the STA rates when it
12797 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012798 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012799 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12800 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012801 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012802 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12803 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012804 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012805 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12806
12807 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012809 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012810 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012811 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012815 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012816 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012817 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012818 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12820 halUpdateBeaconParams.fRIFSMode =
12821 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12824
Jeff Johnsone7245742012-09-05 17:12:55 -070012825 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12826 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012827
12828 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012830
12831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012834 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12835 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012836}/*WDI_ProcessUpdateBeaconParamsReq*/
12837
12838
12839
12840/**
12841 @brief Process Send Beacon template Request function (called when Main FSM
12842 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012843
12844 @param pWDICtx: pointer to the WLAN DAL context
12845 pEventData: pointer to the event information structure
12846
Jeff Johnson295189b2012-06-20 16:38:30 -070012847 @see
12848 @return Result of the function call
12849*/
12850WDI_Status
12851WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012852(
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 WDI_ControlBlockType* pWDICtx,
12854 WDI_EventInfoType* pEventData
12855)
12856{
12857 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12858 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012859 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012860 wpt_uint16 usDataOffset = 0;
12861 wpt_uint16 usSendSize = 0;
12862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12863
12864 tSendBeaconReqMsg halSendBeaconReq;
12865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 -------------------------------------------------------------------------*/
12868 if (( NULL == pEventData ) ||
12869 ( NULL == pEventData->pEventData ) ||
12870 ( NULL == pEventData->pCBfnc ))
12871 {
12872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 }
12877
12878 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12879 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12880 /*-----------------------------------------------------------------------
12881 Get message buffer
12882 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 sizeof(halSendBeaconReq.sendBeaconParam),
12885 &pSendBuffer, &usDataOffset, &usSendSize))||
12886 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12887 {
12888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012889 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 }
12894
12895 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12896 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12897 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12900 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12901 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12902 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012905 /* usP2PIeOffset should be atleast greater than timIeOffset */
12906 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12907 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12908 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12909 {
12910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12911 "Invalid usP2PIeOffset %hu",
12912 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12913 WDI_ASSERT(0);
12914 return WDI_STATUS_E_FAILURE;
12915 }
12916
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012919
Jeff Johnsone7245742012-09-05 17:12:55 -070012920 wpalMemoryCopy( pSendBuffer+usDataOffset,
12921 &halSendBeaconReq.sendBeaconParam,
12922 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012923
12924 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012926
12927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12931 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012932}/*WDI_ProcessSendBeaconParamsReq*/
12933
12934/**
12935 @brief Process Update Beacon Params Request function (called when Main FSM
12936 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012937
12938 @param pWDICtx: pointer to the WLAN DAL context
12939 pEventData: pointer to the event information structure
12940
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 @see
12942 @return Result of the function call
12943*/
12944WDI_Status
12945WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012946(
Jeff Johnson295189b2012-06-20 16:38:30 -070012947 WDI_ControlBlockType* pWDICtx,
12948 WDI_EventInfoType* pEventData
12949)
12950{
12951 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12952 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 wpt_uint16 usDataOffset = 0;
12955 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12958
12959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 -------------------------------------------------------------------------*/
12962 if (( NULL == pEventData ) ||
12963 ( NULL == pEventData->pEventData) ||
12964 ( NULL == pEventData->pCBfnc))
12965 {
12966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012967 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 }
12971
Jeff Johnsone7245742012-09-05 17:12:55 -070012972 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012973 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012974 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012975 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12976 /*-----------------------------------------------------------------------
12977 Get message buffer
12978 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012979 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012980 sizeof(halUpdateProbeRspTmplParams),
12981 &pSendBuffer, &usDataOffset, &usSendSize))||
12982 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12983 {
12984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012985 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012986 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012989 }
12990
12991 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012992 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012993 WDI_MAC_ADDR_LEN);
12994
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12997
12998 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12999 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013000 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013001
13002
13003 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13004 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13005 WDI_PROBE_REQ_BITMAP_IE_LEN);
13006
Jeff Johnsone7245742012-09-05 17:12:55 -070013007 wpalMemoryCopy( pSendBuffer+usDataOffset,
13008 &halUpdateProbeRspTmplParams,
13009 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013010
13011 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013013
13014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013015 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013016 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013017 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13018 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13019 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013020}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13021
13022/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013025
13026 @param pWDICtx: pointer to the WLAN DAL context
13027 pEventData: pointer to the event information structure
13028
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 @see
13030 @return Result of the function call
13031*/
13032WDI_Status
13033WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013034(
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 WDI_ControlBlockType* pWDICtx,
13036 WDI_EventInfoType* pEventData
13037)
13038{
13039
13040 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13041 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13042
13043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 -------------------------------------------------------------------------*/
13046 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13051 {
13052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013053 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013054 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 }
13057
13058 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13061
13062 /*cache the wdi nv request message here if the the first fragment
13063 * To issue the request to HAL for the next fragment */
13064 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13065 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013066 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13067 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13069
13070 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13071 pWDICtx->pRspCBUserData = pEventData->pUserData;
13072 }
13073
13074 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13075}
13076
13077/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013080
13081 @param pWDICtx: pointer to the WLAN DAL context
13082 pEventData: pointer to the event information structure
13083
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 @see
13085 @return Result of the function call
13086*/
13087WDI_Status WDI_ProcessSetMaxTxPowerReq
13088(
13089 WDI_ControlBlockType* pWDICtx,
13090 WDI_EventInfoType* pEventData
13091)
13092{
13093 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13094 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013095 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013096 wpt_uint16 usDataOffset = 0;
13097 wpt_uint16 usSendSize = 0;
13098 tSetMaxTxPwrReq halSetMaxTxPower;
13099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13100
13101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 -------------------------------------------------------------------------*/
13104 if (( NULL == pEventData ) ||
13105 ( NULL == pEventData->pEventData ) ||
13106 ( NULL == pEventData->pCBfnc ))
13107 {
13108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013112 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013113 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013114 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13117
13118 /*-----------------------------------------------------------------------
13119 Get message buffer
13120 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013121if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13123 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013124 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013125)))
13126 {
13127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013128 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013129 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 }
13133
13134 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13135 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13136 WDI_MAC_ADDR_LEN);
13137
13138 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13139 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13140 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013141 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013143
13144 wpalMemoryCopy( pSendBuffer+usDataOffset,
13145 &halSetMaxTxPower.setMaxTxPwrParams,
13146 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013147
13148 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013149 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013150
13151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013152 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013154 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13155 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13156 WDI_SET_MAX_TX_POWER_RESP);
13157
Jeff Johnson295189b2012-06-20 16:38:30 -070013158}
13159
Arif Hussaina5ebce02013-08-09 15:09:58 -070013160/*
13161 @brief Process Set Max Tx Power Per Band Request function (called when Main
13162 FSM allows it)
13163
13164 @param pWDICtx: pointer to the WLAN DAL context
13165 pEventData: pointer to the event information structure
13166
13167 @see
13168 @return Result of the function call
13169*/
13170WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13171(
13172 WDI_ControlBlockType* pWDICtx,
13173 WDI_EventInfoType* pEventData
13174)
13175{
13176 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13177 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13178 wpt_uint8* pSendBuffer = NULL;
13179 wpt_uint16 usDataOffset = 0;
13180 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013181 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013182 WDI_Status rValue = WDI_STATUS_SUCCESS;
13183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13184
13185 /*-------------------------------------------------------------------------
13186 Sanity check
13187 -------------------------------------------------------------------------*/
13188 if (( NULL == pEventData ) ||
13189 ( NULL == pEventData->pEventData ) ||
13190 ( NULL == pEventData->pCBfnc ))
13191 {
13192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13193 "%s: Invalid parameters", __func__);
13194 WDI_ASSERT(0);
13195 return WDI_STATUS_E_FAILURE;
13196 }
13197 pwdiSetMaxTxPowerPerBandParams = \
13198 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13199
13200 wdiSetMaxTxPowerPerBandRspCb = \
13201 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13202
13203 /*-----------------------------------------------------------------------
13204 Get message buffer
13205 -----------------------------------------------------------------------*/
13206
13207 rValue = WDI_GetMessageBuffer(pWDICtx,
13208 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13209 sizeof(tSetMaxTxPwrPerBandParams),
13210 &pSendBuffer, &usDataOffset, &usSendSize);
13211
13212 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13213 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13214 {
13215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13216 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13217 pEventData, pwdiSetMaxTxPowerPerBandParams,
13218 wdiSetMaxTxPowerPerBandRspCb);
13219 WDI_ASSERT(0);
13220 return WDI_STATUS_E_FAILURE;
13221 }
13222
13223
Arif Hussainf8f080c2014-04-03 09:48:36 -070013224 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13225 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013226 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13227
Arif Hussainf8f080c2014-04-03 09:48:36 -070013228 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013229 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13230
13231 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13232 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13233
13234 /*-------------------------------------------------------------------------
13235 Send Set Max Tx Power Per Band Request to HAL
13236 -------------------------------------------------------------------------*/
13237 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13238 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13239 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13240}
13241
schang86c22c42013-03-13 18:41:24 -070013242/**
13243 @brief Process Set Tx Power Request function (called when Main
13244 FSM allows it)
13245
13246 @param pWDICtx: pointer to the WLAN DAL context
13247 pEventData: pointer to the event information structure
13248
13249 @see
13250 @return Result of the function call
13251*/
13252WDI_Status WDI_ProcessSetTxPowerReq
13253(
13254 WDI_ControlBlockType* pWDICtx,
13255 WDI_EventInfoType* pEventData
13256)
13257{
13258 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13259 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13260 wpt_uint8* pSendBuffer = NULL;
13261 wpt_uint16 usDataOffset = 0;
13262 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013263 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13265
13266 /*-------------------------------------------------------------------------
13267 Sanity check
13268 -------------------------------------------------------------------------*/
13269 if (( NULL == pEventData ) ||
13270 ( NULL == pEventData->pEventData ) ||
13271 ( NULL == pEventData->pCBfnc ))
13272 {
13273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13274 "%s: Invalid parameters", __func__);
13275 WDI_ASSERT(0);
13276 return WDI_STATUS_E_FAILURE;
13277 }
13278
13279 pwdiSetTxPowerParams =
13280 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13281 wdiSetTxPowerRspCb =
13282 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13283
13284 /*-----------------------------------------------------------------------
13285 Get message buffer
13286 -----------------------------------------------------------------------*/
13287 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13288 sizeof(tSetTxPwrReqParams),
13289 &pSendBuffer, &usDataOffset, &usSendSize))||
13290 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13291 )))
13292 {
13293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013294 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013295 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13296 WDI_ASSERT(0);
13297 return WDI_STATUS_E_FAILURE;
13298 }
13299
Leo Chang9a43db92013-03-25 17:39:58 -070013300 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13301 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13302 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013303
13304 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13305 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13306
13307 /*-------------------------------------------------------------------------
13308 Send Set Tx Power Request to HAL
13309 -------------------------------------------------------------------------*/
13310 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13311 wdiSetTxPowerRspCb, pEventData->pUserData,
13312 WDI_SET_TX_POWER_RESP);
13313}
Jeff Johnson295189b2012-06-20 16:38:30 -070013314
13315/**
13316 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13317 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013318
13319 @param pWDICtx: pointer to the WLAN DAL context
13320 pEventData: pointer to the event information structure
13321
Jeff Johnson295189b2012-06-20 16:38:30 -070013322 @see
13323 @return Result of the function call
13324*/
13325WDI_Status
13326WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013327(
Jeff Johnson295189b2012-06-20 16:38:30 -070013328 WDI_ControlBlockType* pWDICtx,
13329 WDI_EventInfoType* pEventData
13330)
13331{
13332 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13333 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013334 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013335 wpt_uint16 usDataOffset = 0;
13336 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013337 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13339
13340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 -------------------------------------------------------------------------*/
13343 if (( NULL == pEventData ) ||
13344 ( NULL == pEventData->pEventData) ||
13345 ( NULL == pEventData->pCBfnc))
13346 {
13347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013351 }
13352
Jeff Johnsone7245742012-09-05 17:12:55 -070013353 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013354 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013355 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13357 /*-----------------------------------------------------------------------
13358 Get message buffer
13359 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013360 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13361 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013362 sizeof(halSetP2PGONOAParams),
13363 &pSendBuffer, &usDataOffset, &usSendSize))||
13364 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13365 {
13366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013367 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 }
13372
Jeff Johnsone7245742012-09-05 17:12:55 -070013373 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013375 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013376 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13377 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013382 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013383 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013384 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13386
Jeff Johnsone7245742012-09-05 17:12:55 -070013387 wpalMemoryCopy( pSendBuffer+usDataOffset,
13388 &halSetP2PGONOAParams,
13389 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013390
13391 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013393
13394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013395 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013396 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013397 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13398 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13399 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013400}/*WDI_ProcessP2PGONOAReq*/
13401
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013402#ifdef FEATURE_WLAN_TDLS
13403
13404/**
13405 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13406 allows it)
13407
13408 @param pWDICtx: pointer to the WLAN DAL context
13409 pEventData: pointer to the event information structure
13410
13411 @see
13412 @return Result of the function call
13413*/
13414WDI_Status
13415WDI_ProcessTdlsLinkEstablishReq
13416(
13417 WDI_ControlBlockType* pWDICtx,
13418 WDI_EventInfoType* pEventData
13419)
13420{
13421 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13422 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13423 wpt_uint8* pSendBuffer = NULL;
13424 wpt_uint16 usDataOffset = 0;
13425 wpt_uint16 usSendSize = 0;
13426
13427 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13429
13430 /*-------------------------------------------------------------------------
13431 Sanity check
13432 -------------------------------------------------------------------------*/
13433 if (( NULL == pEventData ) ||
13434 ( NULL == pEventData->pEventData) ||
13435 ( NULL == pEventData->pCBfnc))
13436 {
13437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13438 "%s: Invalid parameters", __func__);
13439 WDI_ASSERT(0);
13440 return WDI_STATUS_E_FAILURE;
13441 }
13442 pwdiTDLSLinkEstablishReqParams =
13443 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13444 wdiTDLSLinkEstablishReqRspCb =
13445 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13446
13447
13448 /*-----------------------------------------------------------------------
13449 Get message buffer
13450 -----------------------------------------------------------------------*/
13451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13452 WDI_TDLS_LINK_ESTABLISH_REQ,
13453 sizeof(halSetTDLSLinkEstablishParams),
13454 &pSendBuffer, &usDataOffset, &usSendSize))||
13455 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13456 {
13457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013458 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013459 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13460 WDI_ASSERT(0);
13461 return WDI_STATUS_E_FAILURE;
13462 }
13463
13464 halSetTDLSLinkEstablishParams.staIdx =
13465 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13466 halSetTDLSLinkEstablishParams.bIsResponder =
13467 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13468 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13469 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13470 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13471 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13472 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13473 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13474 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13475 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13476 halSetTDLSLinkEstablishParams.aAck = 0;
13477 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13478 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13479 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013480 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13481 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13482
13483 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13484 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13485 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13486 halSetTDLSLinkEstablishParams.validChannelsLen =
13487 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13488
13489 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13490 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13491 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13492 halSetTDLSLinkEstablishParams.validOperClassesLen =
13493 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013494
13495 wpalMemoryCopy( pSendBuffer+usDataOffset,
13496 &halSetTDLSLinkEstablishParams,
13497 sizeof(halSetTDLSLinkEstablishParams));
13498
13499 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13500 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13501
13502 /*-------------------------------------------------------------------------
13503 Send Update Probe Resp Template Request to HAL
13504 -------------------------------------------------------------------------*/
13505 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13506 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13507 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13508 return 0;
13509}/*WDI_ProcessTdlsLinkEstablishReq*/
13510
13511
Atul Mittalc0f739f2014-07-31 13:47:47 +053013512/**
13513 @brief sends the channel switch command to f/w (called when Main FSM
13514 allows it)
13515
13516 @param pWDICtx: pointer to the WLAN DAL context
13517 pEventData: pointer to the event information structure
13518
13519 @see
13520 @return Result of the function call
13521*/
13522WDI_Status
13523WDI_ProcessTdlsChanSwitchReq
13524(
13525 WDI_ControlBlockType* pWDICtx,
13526 WDI_EventInfoType* pEventData
13527)
13528{
13529 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13530 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13531 wpt_uint8* pSendBuffer = NULL;
13532 wpt_uint16 usDataOffset = 0;
13533 wpt_uint16 usSendSize = 0;
13534 //WDI_Status wdiStatus;
13535 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13537
13538 /*-------------------------------------------------------------------------
13539 Sanity check
13540 -------------------------------------------------------------------------*/
13541 if (( NULL == pEventData ) ||
13542 ( NULL == pEventData->pEventData))
13543 {
13544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13545 "%s: Invalid parameters", __func__);
13546 WDI_ASSERT(0);
13547 return WDI_STATUS_E_FAILURE;
13548 }
13549 pwdiTDLSChanSwitchReqParams =
13550 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13551 wdiTDLSChanSwitchReqRspCb =
13552 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13553
13554 /*-----------------------------------------------------------------------
13555 Get message buffer
13556 -----------------------------------------------------------------------*/
13557 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13558 WDI_TDLS_CHAN_SWITCH_REQ,
13559 sizeof(halSetTDLSChanSwitchParams),
13560 &pSendBuffer, &usDataOffset, &usSendSize))||
13561 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13562 {
13563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13564 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13565 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13566 WDI_ASSERT(0);
13567 return WDI_STATUS_E_FAILURE;
13568 }
13569
13570 halSetTDLSChanSwitchParams.staIdx =
13571 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13572 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13573 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13574 halSetTDLSChanSwitchParams.targetOperClass =
13575 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13576 halSetTDLSChanSwitchParams.targetChannel =
13577 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13578 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13579 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13580 wpalMemoryCopy( pSendBuffer+usDataOffset,
13581 &halSetTDLSChanSwitchParams,
13582 sizeof(halSetTDLSChanSwitchParams));
13583
13584 pWDICtx->wdiReqStatusCB = NULL;
13585 pWDICtx->pReqStatusUserData = NULL;
13586
13587 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13588 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13589 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13590}/*WDI_ProcessTdlsChanSwitchReq*/
13591
13592#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013593
Jeff Johnson295189b2012-06-20 16:38:30 -070013594
13595
13596/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013597 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013598 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013599 @param None
13600
13601 @see
13602 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013603*/
13604void
13605WDI_SetPowerStateCb
13606(
13607 wpt_status status,
13608 unsigned int dxePhyAddr,
13609 void *pContext
13610)
13611{
13612 wpt_status wptStatus;
13613 WDI_ControlBlockType *pCB = NULL;
13614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013615 /*
13616 * Trigger the event to bring the Enter BMPS req function to come
13617 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013618*/
13619 if( NULL != pContext )
13620 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 }
13623 else
13624 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013625 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 pCB = &gWDICb;
13627 }
Mihir Shetea4306052014-03-25 00:02:54 +053013628
13629 if(eWLAN_PAL_STATUS_SUCCESS == status )
13630 {
13631 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13632 }
13633 else
13634 {
13635 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13636 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013637 pCB->dxePhyAddr = dxePhyAddr;
13638 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13639 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13640 {
13641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13642 "Failed to set an event");
13643
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 }
13646 return;
13647}
13648
13649
13650/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013651 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013653
13654 @param pWDICtx: pointer to the WLAN DAL context
13655 pEventData: pointer to the event information structure
13656
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 @see
13658 @return Result of the function call
13659*/
13660WDI_Status
13661WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013662(
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 WDI_ControlBlockType* pWDICtx,
13664 WDI_EventInfoType* pEventData
13665)
13666{
Jeff Johnson43971f52012-07-17 12:26:56 -070013667 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013668 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013669 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013670 wpt_uint16 usDataOffset = 0;
13671 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013672 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13674
13675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013678 if ((NULL == pEventData ) ||
13679 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13680 (NULL == (pwdiEnterImpsReqParams =
13681 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013682 {
13683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013686 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 }
13688
13689 /*-----------------------------------------------------------------------
13690 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 0,
13695 &pSendBuffer, &usDataOffset, &usSendSize))||
13696 ( usSendSize < (usDataOffset )))
13697 {
13698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013699 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 pEventData, wdiEnterImpsRspCb);
13701 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013702 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 }
13704
13705 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013706 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13707 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 {
13709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13710 "WDI Init failed to reset an event");
13711
Jeff Johnsone7245742012-09-05 17:12:55 -070013712 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013713 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 }
13715
13716 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013717 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13718 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013720 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013721 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013722 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013723 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013724
13725 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013726 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013728 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13729 WDI_SET_POWER_STATE_TIMEOUT);
13730 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 {
13732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13733 "WDI Init failed to wait on an event");
13734
Jeff Johnsone7245742012-09-05 17:12:55 -070013735 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013736 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013737 }
13738
Mihir Shetea4306052014-03-25 00:02:54 +053013739 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13740 {
13741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13742 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13743
13744 goto fail;
13745 }
13746
13747 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13748 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013750 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013752 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13753 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013754
13755fail:
13756 // Release the message buffer so we don't leak
13757 wpalMemoryFree(pSendBuffer);
13758
13759failRequest:
13760 //WDA should have failure check to avoid the memory leak
13761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013762}/*WDI_ProcessEnterImpsReq*/
13763
13764/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013767
13768 @param pWDICtx: pointer to the WLAN DAL context
13769 pEventData: pointer to the event information structure
13770
Jeff Johnson295189b2012-06-20 16:38:30 -070013771 @see
13772 @return Result of the function call
13773*/
13774WDI_Status
13775WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013776(
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 WDI_ControlBlockType* pWDICtx,
13778 WDI_EventInfoType* pEventData
13779)
13780{
13781 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013783 wpt_uint16 usDataOffset = 0;
13784 wpt_uint16 usSendSize = 0;
13785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13786
13787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013789 -------------------------------------------------------------------------*/
13790 if (( NULL == pEventData ) ||
13791 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13792 {
13793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013797 }
13798
13799 /*-----------------------------------------------------------------------
13800 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013801 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013802 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 0,
13805 &pSendBuffer, &usDataOffset, &usSendSize))||
13806 ( usSendSize < (usDataOffset )))
13807 {
13808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013809 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013810 pEventData, wdiExitImpsRspCb);
13811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 }
13814
13815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013816 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013817 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013818 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13819 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013820}/*WDI_ProcessExitImpsReq*/
13821
13822/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013823 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013824 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013825
13826 @param pWDICtx: pointer to the WLAN DAL context
13827 pEventData: pointer to the event information structure
13828
Jeff Johnson295189b2012-06-20 16:38:30 -070013829 @see
13830 @return Result of the function call
13831*/
13832WDI_Status
13833WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013834(
Jeff Johnson295189b2012-06-20 16:38:30 -070013835 WDI_ControlBlockType* pWDICtx,
13836 WDI_EventInfoType* pEventData
13837)
13838{
13839 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13840 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013841 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013842 wpt_uint16 usDataOffset = 0;
13843 wpt_uint16 usSendSize = 0;
13844 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013845 wpt_status wptStatus;
13846
Jeff Johnson295189b2012-06-20 16:38:30 -070013847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13848
13849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013850 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 -------------------------------------------------------------------------*/
13852 if (( NULL == pEventData ) ||
13853 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13854 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13855 {
13856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013857 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013859 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013860 }
13861
13862 /*-----------------------------------------------------------------------
13863 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013866 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013867 sizeof(enterBmpsReq),
13868 &pSendBuffer, &usDataOffset, &usSendSize))||
13869 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13870 {
13871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013872 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13874 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013875 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 }
13877
13878 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013879 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13880 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 {
13882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13883 "WDI Init failed to reset an event");
13884
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013886 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 }
13888
13889 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013890 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13891 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13892 {
13893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013894 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013895 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013896 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013897 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013898
13899/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013900 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013902 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13903 WDI_SET_POWER_STATE_TIMEOUT);
13904 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013905 {
13906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13907 "WDI Init failed to wait on an event");
13908
Jeff Johnsone7245742012-09-05 17:12:55 -070013909 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013910 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013911 }
13912
13913 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13914
13915 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13916 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13917 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13918 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13919
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013920 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070013921 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13922 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13923 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13924
13925 wpalMemoryCopy( pSendBuffer+usDataOffset,
13926 &enterBmpsReq,
13927 sizeof(enterBmpsReq));
13928
13929 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013930 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013931
13932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013933 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013934 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013935 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13936 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013937
13938fail:
13939 // Release the message buffer so we don't leak
13940 wpalMemoryFree(pSendBuffer);
13941
13942failRequest:
13943 //WDA should have failure check to avoid the memory leak
13944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013945}/*WDI_ProcessEnterBmpsReq*/
13946
13947/**
13948 @brief Process Exit BMPS Request function (called when Main FSM
13949 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013950
13951 @param pWDICtx: pointer to the WLAN DAL context
13952 pEventData: pointer to the event information structure
13953
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 @see
13955 @return Result of the function call
13956*/
13957WDI_Status
13958WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013959(
Jeff Johnson295189b2012-06-20 16:38:30 -070013960 WDI_ControlBlockType* pWDICtx,
13961 WDI_EventInfoType* pEventData
13962)
13963{
13964 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13965 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 wpt_uint16 usDataOffset = 0;
13968 wpt_uint16 usSendSize = 0;
13969 tHalExitBmpsReqParams exitBmpsReq;
13970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13971
13972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 -------------------------------------------------------------------------*/
13975 if (( NULL == pEventData ) ||
13976 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13977 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13978 {
13979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 }
13984
13985 /*-----------------------------------------------------------------------
13986 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 sizeof(exitBmpsReq),
13991 &pSendBuffer, &usDataOffset, &usSendSize))||
13992 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13993 {
13994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013995 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013999 }
14000 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14001
Jeff Johnsone7245742012-09-05 17:12:55 -070014002 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14003
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 wpalMemoryCopy( pSendBuffer+usDataOffset,
14005 &exitBmpsReq,
14006 sizeof(exitBmpsReq));
14007
14008 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014009 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014010
14011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014014 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14015 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014016}/*WDI_ProcessExitBmpsReq*/
14017
14018/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014019 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014020 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014021
14022 @param pWDICtx: pointer to the WLAN DAL context
14023 pEventData: pointer to the event information structure
14024
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 @see
14026 @return Result of the function call
14027*/
14028WDI_Status
14029WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014030(
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 WDI_ControlBlockType* pWDICtx,
14032 WDI_EventInfoType* pEventData
14033)
14034{
14035 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14036 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014037 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 wpt_uint16 usDataOffset = 0;
14039 wpt_uint16 usSendSize = 0;
14040 tUapsdReqParams enterUapsdReq;
14041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14042
14043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 -------------------------------------------------------------------------*/
14046 if (( NULL == pEventData ) ||
14047 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14048 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14049 {
14050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 }
14055
14056 /*-----------------------------------------------------------------------
14057 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014058 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014059 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014060 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014061 sizeof(enterUapsdReq),
14062 &pSendBuffer, &usDataOffset, &usSendSize))||
14063 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14064 {
14065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014066 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014067 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 }
14071
14072 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14073 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14074 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14075 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14076 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14077 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14078 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14079 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014080 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014081
Jeff Johnsone7245742012-09-05 17:12:55 -070014082 wpalMemoryCopy( pSendBuffer+usDataOffset,
14083 &enterUapsdReq,
14084 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014085
14086 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014087 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014088
14089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14093 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014094}/*WDI_ProcessEnterUapsdReq*/
14095
14096/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014097 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014099
14100 @param pWDICtx: pointer to the WLAN DAL context
14101 pEventData: pointer to the event information structure
14102
Jeff Johnson295189b2012-06-20 16:38:30 -070014103 @see
14104 @return Result of the function call
14105*/
14106WDI_Status
14107WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014108(
Jeff Johnson295189b2012-06-20 16:38:30 -070014109 WDI_ControlBlockType* pWDICtx,
14110 WDI_EventInfoType* pEventData
14111)
14112{
14113 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014114 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 wpt_uint16 usDataOffset = 0;
14116 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014117 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14118 wpt_uint8 bssIdx = 0;
14119
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14121
14122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 -------------------------------------------------------------------------*/
14125 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014126 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14128 {
14129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014133 }
14134
14135 /*-----------------------------------------------------------------------
14136 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014140 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014142 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 {
14144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014145 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014146 pEventData, wdiExitUapsdRspCb);
14147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 }
14150
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014151 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14152
14153 wpalMemoryCopy( pSendBuffer+usDataOffset,
14154 &bssIdx,
14155 sizeof(wpt_uint8));
14156
14157 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14158 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14159
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014161 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014162 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014163 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14164 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014165}/*WDI_ProcessExitUapsdReq*/
14166
14167/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014168 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014170
14171 @param pWDICtx: pointer to the WLAN DAL context
14172 pEventData: pointer to the event information structure
14173
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 @see
14175 @return Result of the function call
14176*/
14177WDI_Status
14178WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014179(
Jeff Johnson295189b2012-06-20 16:38:30 -070014180 WDI_ControlBlockType* pWDICtx,
14181 WDI_EventInfoType* pEventData
14182)
14183{
14184 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14185 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014186 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 wpt_uint16 usDataOffset = 0;
14188 wpt_uint16 usSendSize = 0;
14189 tUapsdInfo uapsdAcParamsReq;
14190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14191
14192 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014193 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014194 -------------------------------------------------------------------------*/
14195 if (( NULL == pEventData ) ||
14196 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14197 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14198 {
14199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014200 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014203 }
14204
14205 /*-----------------------------------------------------------------------
14206 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014207 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014208 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014210 sizeof(uapsdAcParamsReq),
14211 &pSendBuffer, &usDataOffset, &usSendSize))||
14212 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14213 {
14214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014215 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014216 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014219 }
14220
14221 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14222 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14223 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14224 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14225 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14226 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14227
Jeff Johnsone7245742012-09-05 17:12:55 -070014228 wpalMemoryCopy( pSendBuffer+usDataOffset,
14229 &uapsdAcParamsReq,
14230 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014231
14232 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014233 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014234
14235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014236 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014238 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14239 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014240}/*WDI_ProcessSetUapsdAcParamsReq*/
14241
14242/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014243 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014245
14246 @param pWDICtx: pointer to the WLAN DAL context
14247 pEventData: pointer to the event information structure
14248
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 @see
14250 @return Result of the function call
14251*/
14252WDI_Status
14253WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014254(
Jeff Johnson295189b2012-06-20 16:38:30 -070014255 WDI_ControlBlockType* pWDICtx,
14256 WDI_EventInfoType* pEventData
14257)
14258{
14259 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14260 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 wpt_uint16 usDataOffset = 0;
14263 wpt_uint16 usSendSize = 0;
14264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14265
14266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014267 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 -------------------------------------------------------------------------*/
14269 if (( NULL == pEventData ) ||
14270 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14271 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14272 {
14273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 }
14278
14279 /*-----------------------------------------------------------------------
14280 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014281 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014283 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14285 &pSendBuffer, &usDataOffset, &usSendSize))||
14286 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14287 {
14288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014289 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014293 }
14294
Jeff Johnsone7245742012-09-05 17:12:55 -070014295 wpalMemoryCopy( pSendBuffer+usDataOffset,
14296 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14297 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014298
14299 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014301
14302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14306 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014307}/*WDI_ProcessUpdateUapsdParamsReq*/
14308
14309/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014310 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014312
14313 @param pWDICtx: pointer to the WLAN DAL context
14314 pEventData: pointer to the event information structure
14315
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 @see
14317 @return Result of the function call
14318*/
14319WDI_Status
14320WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014321(
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 WDI_ControlBlockType* pWDICtx,
14323 WDI_EventInfoType* pEventData
14324)
14325{
14326 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14327 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014328 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 wpt_uint16 usDataOffset = 0;
14330 wpt_uint16 usSendSize = 0;
14331 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14332
14333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14334
14335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014337 -------------------------------------------------------------------------*/
14338 if (( NULL == pEventData ) ||
14339 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14340 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14341 {
14342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014343 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014344 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 }
14347
14348 /*-----------------------------------------------------------------------
14349 Get message buffer
14350 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014351 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 sizeof(halRxpFilterParams),
14353 &pSendBuffer, &usDataOffset, &usSendSize))||
14354 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14355 {
14356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014357 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 }
14362
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014365 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14367
Jeff Johnsone7245742012-09-05 17:12:55 -070014368 wpalMemoryCopy( pSendBuffer+usDataOffset,
14369 &halRxpFilterParams,
14370 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014371
14372 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014373 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014374
14375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14379 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014380}/*WDI_ProcessConfigureRxpFilterReq*/
14381
14382/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014385
14386 @param pWDICtx: pointer to the WLAN DAL context
14387 pEventData: pointer to the event information structure
14388
Jeff Johnson295189b2012-06-20 16:38:30 -070014389 @see
14390 @return Result of the function call
14391*/
14392WDI_Status
14393WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014394(
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 WDI_ControlBlockType* pWDICtx,
14396 WDI_EventInfoType* pEventData
14397)
14398{
14399 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14400 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 wpt_uint16 usDataOffset = 0;
14403 wpt_uint16 usSendSize = 0;
14404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14405
14406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 -------------------------------------------------------------------------*/
14409 if (( NULL == pEventData ) ||
14410 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14411 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14412 {
14413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014414 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 }
14418
14419 /*-----------------------------------------------------------------------
14420 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14425 &pSendBuffer, &usDataOffset, &usSendSize))||
14426 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14427 {
14428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014429 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 }
14434
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 wpalMemoryCopy( pSendBuffer+usDataOffset,
14436 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14437 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14438 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14439 &pwdiBeaconFilterParams->aFilters[0],
14440 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014441
14442 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014443 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014444
14445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014446 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14449 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014450}/*WDI_ProcessSetBeaconFilterReq*/
14451
14452/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014453 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014455
14456 @param pWDICtx: pointer to the WLAN DAL context
14457 pEventData: pointer to the event information structure
14458
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 @see
14460 @return Result of the function call
14461*/
14462WDI_Status
14463WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014464(
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 WDI_ControlBlockType* pWDICtx,
14466 WDI_EventInfoType* pEventData
14467)
14468{
14469 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14470 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 wpt_uint16 usDataOffset = 0;
14473 wpt_uint16 usSendSize = 0;
14474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14475
14476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 -------------------------------------------------------------------------*/
14479 if (( NULL == pEventData ) ||
14480 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14481 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14482 {
14483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 }
14488
14489 /*-----------------------------------------------------------------------
14490 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14495 &pSendBuffer, &usDataOffset, &usSendSize))||
14496 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14497 {
14498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014499 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014500 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 }
14504
Jeff Johnsone7245742012-09-05 17:12:55 -070014505 wpalMemoryCopy( pSendBuffer+usDataOffset,
14506 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14507 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014508
14509 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014511
14512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014513 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014514 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014515 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14516 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014517}
14518
14519/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014520 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014522
14523 @param pWDICtx: pointer to the WLAN DAL context
14524 pEventData: pointer to the event information structure
14525
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 @see
14527 @return Result of the function call
14528*/
14529WDI_Status
14530WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014531(
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 WDI_ControlBlockType* pWDICtx,
14533 WDI_EventInfoType* pEventData
14534)
14535{
14536 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14537 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014538 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014539 wpt_uint16 usDataOffset = 0;
14540 wpt_uint16 usSendSize = 0;
14541 tHalRSSIThresholds rssiThresholdsReq;
14542 WDI_Status ret_status = 0;
14543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14544
14545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014546 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014547 -------------------------------------------------------------------------*/
14548 if (( NULL == pEventData ) ||
14549 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14550 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14551 {
14552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014553 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 }
14557
14558 /*-----------------------------------------------------------------------
14559 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014560 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014562 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 sizeof(rssiThresholdsReq),
14564 &pSendBuffer, &usDataOffset, &usSendSize))||
14565 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14566 {
14567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014568 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014569 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 }
14573
Jeff Johnsone7245742012-09-05 17:12:55 -070014574 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014575 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014576 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14594
Jeff Johnsone7245742012-09-05 17:12:55 -070014595 wpalMemoryCopy( pSendBuffer+usDataOffset,
14596 &rssiThresholdsReq,
14597 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014598
14599 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014600 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014601
14602 /*-------------------------------------------------------------------------
14603 Send Set threshold req to HAL
14604 -------------------------------------------------------------------------*/
14605 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14606 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14607 {
14608 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14609 // req. Then as a result of processing the threshold cross ind, we trigger
14610 // a Set threshold req, then we need to indicate to WDI that it needs to
14611 // go to busy state as a result of the indication as we sent a req in the
14612 // same WDI context.
14613 // Hence expected state transition is to busy.
14614 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14615 }
14616
14617 return ret_status;
14618}
14619
14620/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014621 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014623
14624 @param pWDICtx: pointer to the WLAN DAL context
14625 pEventData: pointer to the event information structure
14626
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 @see
14628 @return Result of the function call
14629*/
14630WDI_Status
14631WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014632(
Jeff Johnson295189b2012-06-20 16:38:30 -070014633 WDI_ControlBlockType* pWDICtx,
14634 WDI_EventInfoType* pEventData
14635)
14636{
14637 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14638 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 wpt_uint16 usDataOffset = 0;
14641 wpt_uint16 usSendSize = 0;
14642 tHalHostOffloadReq hostOffloadParams;
14643 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014644 wpt_uint8 ucCurrentBSSSesIdx = 0;
14645 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014646
14647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14648
14649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 -------------------------------------------------------------------------*/
14652 if (( NULL == pEventData ) ||
14653 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14654 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14655 {
14656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014659 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014660 }
14661
14662 /*-----------------------------------------------------------------------
14663 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014664 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014667 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14668 &pSendBuffer, &usDataOffset, &usSendSize))||
14669 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14670 {
14671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014672 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014673 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14674 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014675 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 }
14677
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014678 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14679 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14680 &pBSSSes);
14681 if ( NULL == pBSSSes )
14682 {
c_hpothu86feba52014-10-28 15:51:18 +053014683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014684 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14685 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014686 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014687 }
14688
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14690 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014691
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14693 {
14694 // ARP Offload
14695 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14696 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14697 4);
14698 }
14699 else
14700 {
14701 // NS Offload
14702 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14703 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14704 16);
14705
14706#ifdef WLAN_NS_OFFLOAD
14707 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14708 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14709 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14710 16);
14711 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14712 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14713 16);
14714 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14715 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14716 16);
14717 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14718 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14719 16);
14720 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14721 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14722 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014723 nsOffloadParams.srcIPv6AddrValid =
14724 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14725
14726 nsOffloadParams.targetIPv6Addr1Valid =
14727 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14728
14729 nsOffloadParams.targetIPv6Addr2Valid =
14730 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14731
14732 nsOffloadParams.slotIndex =
14733 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014734
Jeff Johnson295189b2012-06-20 16:38:30 -070014735#endif // WLAN_NS_OFFLOAD
14736 }
14737
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014738 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14739
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 // copy hostOffloadParams into pSendBuffer
14741 wpalMemoryCopy( pSendBuffer+usDataOffset,
14742 &hostOffloadParams,
14743 sizeof(hostOffloadParams));
14744
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014745 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014747 // copy nsOffloadParams into pSendBuffer
14748 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 &nsOffloadParams,
14750 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014751 }
14752 else
14753 {
14754#ifdef WLAN_NS_OFFLOAD
14755 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14756 {
14757 // copy nsOffloadParams into pSendBuffer
14758 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14759 &nsOffloadParams,
14760 sizeof(nsOffloadParams));
14761 }
14762#endif
14763 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014764
14765 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014766 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014767
14768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014771 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14772 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014773
14774fail:
14775 // Release the message buffer so we don't leak
14776 wpalMemoryFree(pSendBuffer);
14777
14778failRequest:
14779 //WDA should have failure check to avoid the memory leak
14780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014781}/*WDI_ProcessHostOffloadReq*/
14782
14783/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014786
14787 @param pWDICtx: pointer to the WLAN DAL context
14788 pEventData: pointer to the event information structure
14789
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 @see
14791 @return Result of the function call
14792*/
14793WDI_Status
14794WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014795(
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 WDI_ControlBlockType* pWDICtx,
14797 WDI_EventInfoType* pEventData
14798)
14799{
14800 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14801 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 wpt_uint16 usDataOffset = 0;
14804 wpt_uint16 usSendSize = 0;
14805 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014806 wpt_uint8 ucCurrentBSSSesIdx = 0;
14807 WDI_BSSSessionType* pBSSSes = NULL;
14808
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14810
14811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014812 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014813 -------------------------------------------------------------------------*/
14814 if (( NULL == pEventData ) ||
14815 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14816 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14817 {
14818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14819 "Invalid parameters in Keep Alive req");
14820 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014821 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014822 }
14823
14824 /*-----------------------------------------------------------------------
14825 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 sizeof(keepAliveReq),
14830 &pSendBuffer, &usDataOffset, &usSendSize))||
14831 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14832 {
14833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014834 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14836 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014837 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 }
14839
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014840 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14841 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14842 &pBSSSes);
14843 if ( NULL == pBSSSes )
14844 {
14845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014846 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014847 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014848 }
14849
Jeff Johnson295189b2012-06-20 16:38:30 -070014850 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14851 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14852
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014853 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014854
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14856 {
14857 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14858 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14859 HAL_IPV4_ADDR_LEN);
14860 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14861 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014862 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014863 wpalMemoryCopy(keepAliveReq.destMacAddr,
14864 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14865 HAL_MAC_ADDR_LEN);
14866 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014867
14868 wpalMemoryCopy( pSendBuffer+usDataOffset,
14869 &keepAliveReq,
14870 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014871
14872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014873 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014874
14875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014876 "Process keep alive req time period %d",
14877 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014878
14879 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881
14882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14883 "Sending keep alive req to HAL");
14884
14885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14889 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014890
14891fail:
14892 // Release the message buffer so we don't leak
14893 wpalMemoryFree(pSendBuffer);
14894
14895failRequest:
14896 //WDA should have failure check to avoid the memory leak
14897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014898}/*WDI_ProcessKeepAliveReq*/
14899
14900
14901/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014904
14905 @param pWDICtx: pointer to the WLAN DAL context
14906 pEventData: pointer to the event information structure
14907
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 @see
14909 @return Result of the function call
14910*/
14911WDI_Status
14912WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014913(
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 WDI_ControlBlockType* pWDICtx,
14915 WDI_EventInfoType* pEventData
14916)
14917{
14918 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14919 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 wpt_uint16 usDataOffset = 0;
14922 wpt_uint16 usSendSize = 0;
14923 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014924 wpt_uint8 ucCurrentBSSSesIdx = 0;
14925 WDI_BSSSessionType* pBSSSes = NULL;
14926
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14928
14929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 -------------------------------------------------------------------------*/
14932 if (( NULL == pEventData ) ||
14933 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14934 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14935 {
14936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014939 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 }
14941
14942 /*-----------------------------------------------------------------------
14943 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 sizeof(wowlAddBcPtrnReq),
14948 &pSendBuffer, &usDataOffset, &usSendSize))||
14949 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14950 {
14951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014952 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14954 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014955 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 }
14957
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014958 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14959 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14960 &pBSSSes);
14961 if ( NULL == pBSSSes )
14962 {
14963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014964 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014965 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014966 }
14967
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014970 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014972 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14976
14977 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14978 {
14979 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14980 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14981 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14982 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14983 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14984 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14985 }
14986 else
14987 {
14988 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14989 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14990 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14991 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14992 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14993 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14994
14995 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14996 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14997 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14998 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14999 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15000 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15001 }
15002
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015003 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15004
Jeff Johnson295189b2012-06-20 16:38:30 -070015005 wpalMemoryCopy( pSendBuffer+usDataOffset,
15006 &wowlAddBcPtrnReq,
15007 sizeof(wowlAddBcPtrnReq));
15008
15009 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015010 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015011
15012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015013 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15016 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015017fail:
15018 // Release the message buffer so we don't leak
15019 wpalMemoryFree(pSendBuffer);
15020
15021failRequest:
15022 //WDA should have failure check to avoid the memory leak
15023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015024}/*WDI_ProcessWowlAddBcPtrnReq*/
15025
15026/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015027 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015028 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015029
15030 @param pWDICtx: pointer to the WLAN DAL context
15031 pEventData: pointer to the event information structure
15032
Jeff Johnson295189b2012-06-20 16:38:30 -070015033 @see
15034 @return Result of the function call
15035*/
15036WDI_Status
15037WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015038(
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 WDI_ControlBlockType* pWDICtx,
15040 WDI_EventInfoType* pEventData
15041)
15042{
15043 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15044 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015046 wpt_uint16 usDataOffset = 0;
15047 wpt_uint16 usSendSize = 0;
15048 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015049 wpt_uint8 ucCurrentBSSSesIdx = 0;
15050 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15052
15053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 -------------------------------------------------------------------------*/
15056 if (( NULL == pEventData ) ||
15057 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15058 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15059 {
15060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015063 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 }
15065
15066 /*-----------------------------------------------------------------------
15067 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 sizeof(wowlDelBcPtrnReq),
15072 &pSendBuffer, &usDataOffset, &usSendSize))||
15073 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15074 {
15075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015076 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15078 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015079 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 }
15081
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015082 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15083 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15084 &pBSSSes);
15085 if ( NULL == pBSSSes )
15086 {
15087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015088 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015089 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015090 }
15091
Jeff Johnsone7245742012-09-05 17:12:55 -070015092 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015094
15095 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15096
Jeff Johnsone7245742012-09-05 17:12:55 -070015097 wpalMemoryCopy( pSendBuffer+usDataOffset,
15098 &wowlDelBcPtrnReq,
15099 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015100
15101 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015102 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015103
15104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15108 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015109
15110fail:
15111 // Release the message buffer so we don't leak
15112 wpalMemoryFree(pSendBuffer);
15113
15114failRequest:
15115 //WDA should have failure check to avoid the memory leak
15116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015117}/*WDI_ProcessWowlDelBcPtrnReq*/
15118
15119/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015120 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015121 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015122
15123 @param pWDICtx: pointer to the WLAN DAL context
15124 pEventData: pointer to the event information structure
15125
Jeff Johnson295189b2012-06-20 16:38:30 -070015126 @see
15127 @return Result of the function call
15128*/
15129WDI_Status
15130WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015131(
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 WDI_ControlBlockType* pWDICtx,
15133 WDI_EventInfoType* pEventData
15134)
15135{
15136 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15137 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015138 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 wpt_uint16 usDataOffset = 0;
15140 wpt_uint16 usSendSize = 0;
15141 tHalWowlEnterParams wowlEnterReq;
15142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15143
15144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015146 -------------------------------------------------------------------------*/
15147 if (( NULL == pEventData ) ||
15148 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15149 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15150 {
15151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015155 }
15156
15157 /*-----------------------------------------------------------------------
15158 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015159 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015161 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 sizeof(wowlEnterReq),
15163 &pSendBuffer, &usDataOffset, &usSendSize))||
15164 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15165 {
15166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015167 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015171 }
15172
Kumar Anandaca924e2013-07-22 14:35:34 -070015173 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15174
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015177 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015183 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015184 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015185 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15191
15192#ifdef WLAN_WAKEUP_EVENTS
15193 wowlEnterReq.ucWoWEAPIDRequestEnable =
15194 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15195
15196 wowlEnterReq.ucWoWEAPOL4WayEnable =
15197 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15198
15199 wowlEnterReq.ucWowNetScanOffloadMatch =
15200 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15201
15202 wowlEnterReq.ucWowGTKRekeyError =
15203 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15204
15205 wowlEnterReq.ucWoWBSSConnLoss =
15206 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15207#endif // WLAN_WAKEUP_EVENTS
15208
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015209 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15210
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15212 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15213 sizeof(tSirMacAddr));
15214
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 wpalMemoryCopy( pSendBuffer+usDataOffset,
15216 &wowlEnterReq,
15217 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015218
15219 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015221
15222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15226 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015227}/*WDI_ProcessWowlEnterReq*/
15228
15229/**
15230 @brief Process Wowl exit Request function (called when Main FSM
15231 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015232
15233 @param pWDICtx: pointer to the WLAN DAL context
15234 pEventData: pointer to the event information structure
15235
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 @see
15237 @return Result of the function call
15238*/
15239WDI_Status
15240WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015241(
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 WDI_ControlBlockType* pWDICtx,
15243 WDI_EventInfoType* pEventData
15244)
15245{
15246 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015247 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015248 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 wpt_uint16 usDataOffset = 0;
15250 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015251 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15253
15254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 -------------------------------------------------------------------------*/
15257 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015258 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15260 {
15261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 }
15266
15267 /*-----------------------------------------------------------------------
15268 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015272 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015274 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015275 {
15276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015277 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 pEventData, wdiWowlExitCb);
15279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 }
15282
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015283 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15284
15285 wpalMemoryCopy( pSendBuffer+usDataOffset,
15286 &wowlExitparams,
15287 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015289 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015290 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15292 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015293}/*WDI_ProcessWowlExitReq*/
15294
15295/**
15296 @brief Process Configure Apps Cpu Wakeup State Request function
15297 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015298
15299 @param pWDICtx: pointer to the WLAN DAL context
15300 pEventData: pointer to the event information structure
15301
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 @see
15303 @return Result of the function call
15304*/
15305WDI_Status
15306WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015307(
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 WDI_ControlBlockType* pWDICtx,
15309 WDI_EventInfoType* pEventData
15310)
15311{
15312 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15313 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 wpt_uint16 usDataOffset = 0;
15316 wpt_uint16 usSendSize = 0;
15317 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15319
15320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015321 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015322 -------------------------------------------------------------------------*/
15323 if (( NULL == pEventData ) ||
15324 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15325 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15326 {
15327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015328 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 }
15332
15333 /*-----------------------------------------------------------------------
15334 Get message buffer
15335 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015336 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 sizeof(halCfgAppsCpuWakeupStateReqParams),
15338 &pSendBuffer, &usDataOffset, &usSendSize))||
15339 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15340 {
15341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015342 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15344 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015346 }
15347
Jeff Johnsone7245742012-09-05 17:12:55 -070015348 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15350
Jeff Johnsone7245742012-09-05 17:12:55 -070015351 wpalMemoryCopy( pSendBuffer+usDataOffset,
15352 &halCfgAppsCpuWakeupStateReqParams,
15353 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015354
15355 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015357
15358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015359 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015361 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15362 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15363 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015364}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15365
15366#ifdef WLAN_FEATURE_VOWIFI_11R
15367/**
15368 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15369 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015370
15371 @param pWDICtx: pointer to the WLAN DAL context
15372 pEventData: pointer to the event information structure
15373
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 @see
15375 @return Result of the function call
15376*/
15377WDI_Status
15378WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015379(
Jeff Johnson295189b2012-06-20 16:38:30 -070015380 WDI_ControlBlockType* pWDICtx,
15381 WDI_EventInfoType* pEventData
15382)
15383{
15384 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15385 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015386 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015388 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 wpt_uint16 usDataOffset = 0;
15390 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 wpt_macAddr macBSSID;
15393 tAggrAddTsReq halAggrAddTsReq;
15394 int i;
15395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15396
15397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 -------------------------------------------------------------------------*/
15400 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15401 ( NULL == pEventData->pCBfnc ))
15402 {
15403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015407 }
15408 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15409 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15410 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15411 /*-------------------------------------------------------------------------
15412 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015413 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015414 -------------------------------------------------------------------------*/
15415 wpalMutexAcquire(&pWDICtx->wptMutex);
15416
15417 /*------------------------------------------------------------------------
15418 Find the BSS for which the request is made and identify WDI session
15419 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015420 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15421 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 &macBSSID))
15423 {
15424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015425 "This station does not exist in the WDI Station Table %d",
15426 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015429 }
15430
Jeff Johnsone7245742012-09-05 17:12:55 -070015431 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15432 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15435 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15436 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015437
15438 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015441
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 /*------------------------------------------------------------------------
15443 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015444 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 ------------------------------------------------------------------------*/
15446 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15447 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15449 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15450 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015451
Jeff Johnsone7245742012-09-05 17:12:55 -070015452 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015453 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015454 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015455 }
15456
15457 wpalMutexRelease(&pWDICtx->wptMutex);
15458 /*-----------------------------------------------------------------------
15459 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015461 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015463 sizeof(tAggrAddTsParams),
15464 &pSendBuffer, &usDataOffset, &usSendSize))||
15465 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15466 {
15467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015468 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015472 }
15473
Jeff Johnsone7245742012-09-05 17:12:55 -070015474 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015475 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015476 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015477 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15478
15479 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15480 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015481 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015482 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015483 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015484 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015485 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15487 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015488 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015489 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15490 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015491 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015492 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15493 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015494 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15496 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15499 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015500 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015501 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15502 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015503 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015504 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15505 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015507 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15508 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015511 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015512 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015513
15514
15515 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015517 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015518 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015519 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015520 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015521 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015522 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015524 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015525 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015529 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015531 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015532 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015533 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015534 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015535 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015540 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015541 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015542 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015543 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15545 }
15546
Jeff Johnsone7245742012-09-05 17:12:55 -070015547 wpalMemoryCopy( pSendBuffer+usDataOffset,
15548 &halAggrAddTsReq,
15549 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015550
15551 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015553
15554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015559 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015560}/*WDI_ProcessAggrAddTSpecReq*/
15561#endif /* WLAN_FEATURE_VOWIFI_11R */
15562
15563/**
15564 @brief Process Shutdown Request function (called when Main FSM
15565 allows it)
15566
15567 @param pWDICtx: pointer to the WLAN DAL context
15568 pEventData: pointer to the event information structure
15569
15570 @see
15571 @return Result of the function call
15572*/
15573WDI_Status
15574WDI_ProcessShutdownReq
15575(
15576 WDI_ControlBlockType* pWDICtx,
15577 WDI_EventInfoType* pEventData
15578 )
15579{
15580 wpt_status wptStatus;
15581
15582
15583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15584
15585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 -------------------------------------------------------------------------*/
15588 if ( NULL == pEventData )
15589 {
15590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 WDI_ASSERT(0);
15593 return WDI_STATUS_E_FAILURE;
15594 }
15595
15596 wpalMutexAcquire(&pWDICtx->wptMutex);
15597
15598
15599 gWDIInitialized = eWLAN_PAL_FALSE;
15600 /*! TO DO: stop the data services */
15601 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15602 {
15603 /*Stop the STA Table !UT- check this logic again
15604 It is safer to do it here than on the response - because a stop is imminent*/
15605 WDI_STATableStop(pWDICtx);
15606
15607 /* Stop Transport Driver, DXE */
15608 WDTS_Stop(pWDICtx);
15609 }
15610
15611 /*Clear all pending request*/
15612 WDI_ClearPendingRequests(pWDICtx);
15613 /* Close Data transport*/
15614 /* FTM mode does not open Data Path */
15615 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15616 {
15617 WDTS_Close(pWDICtx);
15618 }
15619 /*Close the STA Table !UT- check this logic again*/
15620 WDI_STATableClose(pWDICtx);
15621 /*close the PAL */
15622 wptStatus = wpalClose(pWDICtx->pPALContext);
15623 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15624 {
15625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15626 "Failed to wpal Close %d", wptStatus);
15627 WDI_ASSERT(0);
15628 }
15629
15630 /*Transition back to init state*/
15631 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15632
15633 wpalMutexRelease(&pWDICtx->wptMutex);
15634
15635 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015637
15638
Jeff Johnsone7245742012-09-05 17:12:55 -070015639 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015640}/*WDI_ProcessShutdownReq*/
15641
15642/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015643 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015644========================================================================*/
15645
15646/**
15647 @brief Process Start Response function (called when a response
15648 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015649
15650 @param pWDICtx: pointer to the WLAN DAL context
15651 pEventData: pointer to the event information structure
15652
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 @see
15654 @return Result of the function call
15655*/
15656WDI_Status
15657WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015658(
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 WDI_ControlBlockType* pWDICtx,
15660 WDI_EventInfoType* pEventData
15661)
15662{
15663 WDI_StartRspParamsType wdiRspParams;
15664 WDI_StartRspCb wdiStartRspCb = NULL;
15665
15666 tHalMacStartRspParams* startRspParams;
15667
15668#ifndef HAL_SELF_STA_PER_BSS
15669 WDI_AddStaParams wdiAddSTAParam = {0};
15670#endif
15671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15672
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 -------------------------------------------------------------------------*/
15677 if (( NULL == pEventData ) ||
15678 ( NULL == pEventData->pEventData) ||
15679 ( NULL == wdiStartRspCb ))
15680 {
15681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 }
15686
15687 /*-------------------------------------------------------------------------
15688 Extract response and send it to UMAC
15689 -------------------------------------------------------------------------*/
15690 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15691 {
15692 // not enough data was received
15693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015694 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015698 }
15699
15700 /*-------------------------------------------------------------------------
15701 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015702 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 -------------------------------------------------------------------------*/
15704 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15705
15706 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15707 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15708 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15709 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15710 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15711 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15712 wdiRspParams.wlanReportedVersion.major =
15713 startRspParams->wcnssWlanVersion.major;
15714 wdiRspParams.wlanReportedVersion.minor =
15715 startRspParams->wcnssWlanVersion.minor;
15716 wdiRspParams.wlanReportedVersion.version =
15717 startRspParams->wcnssWlanVersion.version;
15718 wdiRspParams.wlanReportedVersion.revision =
15719 startRspParams->wcnssWlanVersion.revision;
15720 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15721 startRspParams->wcnssCrmVersionString,
15722 sizeof(wdiRspParams.wcnssSoftwareVersion));
15723 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15724 startRspParams->wcnssWlanVersionString,
15725 sizeof(wdiRspParams.wcnssHardwareVersion));
15726 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15727
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015728 /*Save the HAL Version*/
15729 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15730
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 wpalMutexAcquire(&pWDICtx->wptMutex);
15732 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15733 {
15734 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15735
15736 /*Cache the start response for further use*/
15737 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015739 sizeof(pWDICtx->wdiCachedStartRspParams));
15740
15741 }
15742 else
15743 {
15744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15745 "Failed to start device with status %s(%d)",
15746 WDI_getHALStatusMsgString(startRspParams->status),
15747 startRspParams->status);
15748
15749 /*Set the expected state transition to stopped - because the start has
15750 failed*/
15751 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15752
15753 wpalMutexRelease(&pWDICtx->wptMutex);
15754
15755 /*Notify UMAC*/
15756 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015757
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015759 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015760
15761 /*Although the response is an error - it was processed by our function
15762 so as far as the caller is concerned this is a succesful reponse processing*/
15763 return WDI_STATUS_SUCCESS;
15764 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015765
Jeff Johnson295189b2012-06-20 16:38:30 -070015766 wpalMutexRelease(&pWDICtx->wptMutex);
15767
15768 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15769 {
15770 /* FTM mode does not need to execute below */
15771 /* Notify UMAC */
15772 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15773 return WDI_STATUS_SUCCESS;
15774 }
15775
15776 /* START the Data transport */
15777 WDTS_startTransport(pWDICtx);
15778
15779 /*Start the STA Table !- check this logic again*/
15780 WDI_STATableStart(pWDICtx);
15781
15782#ifndef HAL_SELF_STA_PER_BSS
15783 /* Store the Self STA Index */
15784 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15785
15786 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15787 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15788 WDI_MAC_ADDR_LEN);
15789
15790 /* At this point add the self-STA */
15791
15792 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15793 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15794 /*! TO DO: wdiAddSTAParam.dpuSig */
15795 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15796 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15797 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15798
15799 //all DPU indices are the same for self STA
15800 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15801 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015802 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015803 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15804 WDI_MAC_ADDR_LEN);
15805 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15806 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15807
15808 /* Note: Since we don't get an explicit config STA request for self STA, we
15809 add the self STA upon receiving the Start response message. But the
15810 self STA entry in the table is deleted when WDI gets an explicit delete STA
15811 request */
15812 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15813#endif
15814
15815 /*Notify UMAC*/
15816 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15817
Jeff Johnsone7245742012-09-05 17:12:55 -070015818 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015819}/*WDI_ProcessStartRsp*/
15820
15821
15822/**
15823 @brief Process Stop Response function (called when a response
15824 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015825
15826 @param pWDICtx: pointer to the WLAN DAL context
15827 pEventData: pointer to the event information structure
15828
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 @see
15830 @return Result of the function call
15831*/
15832WDI_Status
15833WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015834(
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 WDI_ControlBlockType* pWDICtx,
15836 WDI_EventInfoType* pEventData
15837)
15838{
15839 WDI_Status wdiStatus;
15840 WDI_StopRspCb wdiStopRspCb = NULL;
15841
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15844
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015847 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 -------------------------------------------------------------------------*/
15849 if (( NULL == pEventData ) ||
15850 ( NULL == pEventData->pEventData) ||
15851 ( NULL == wdiStopRspCb ))
15852 {
15853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 }
15858
15859 /*-------------------------------------------------------------------------
15860 Extract response and send it to UMAC
15861 -------------------------------------------------------------------------*/
15862 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15863 {
15864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015865 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 pEventData->uEventDataSize);
15867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 }
15870
15871 /*-------------------------------------------------------------------------
15872 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15876 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015877 sizeof(halMacStopRspMsg.stopRspParams));
15878
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015880
15881 wpalMutexAcquire(&pWDICtx->wptMutex);
15882
15883 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015885 --------------------------------------------------------------------------*/
15886 if ( WDI_STATUS_SUCCESS != wdiStatus )
15887 {
15888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15889 "Failed to stop the device with status %s (%d)",
15890 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15891 halMacStopRspMsg.stopRspParams.status);
15892
Jeff Johnsone7245742012-09-05 17:12:55 -070015893 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053015894 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070015895
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015898 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015899
Jeff Johnson295189b2012-06-20 16:38:30 -070015900 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15901
15902 /*Transition now as WDI may get preempted imediately after it sends
15903 up the Stop Response and it will not get to process the state transition
15904 from Main Rsp function*/
15905 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15906 wpalMutexRelease(&pWDICtx->wptMutex);
15907
15908 /*! TO DO: - STOP the Data transport */
15909
15910 /*Notify UMAC*/
15911 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15912
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015914}/*WDI_ProcessStopRsp*/
15915
15916/**
15917 @brief Process Close Rsp function (called when a response
15918 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015919
15920 @param pWDICtx: pointer to the WLAN DAL context
15921 pEventData: pointer to the event information structure
15922
Jeff Johnson295189b2012-06-20 16:38:30 -070015923 @see
15924 @return Result of the function call
15925*/
15926WDI_Status
15927WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015928(
Jeff Johnson295189b2012-06-20 16:38:30 -070015929 WDI_ControlBlockType* pWDICtx,
15930 WDI_EventInfoType* pEventData
15931)
15932{
15933 /*There is no close response comming from HAL - function just kept for
15934 simmetry */
15935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015936 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015937}/*WDI_ProcessCloseRsp*/
15938
15939
15940/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015942============================================================================*/
15943
15944/**
15945 @brief Process Init Scan Rsp function (called when a response
15946 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015947
15948 @param pWDICtx: pointer to the WLAN DAL context
15949 pEventData: pointer to the event information structure
15950
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 @see
15952 @return Result of the function call
15953*/
15954WDI_Status
15955WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015956(
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 WDI_ControlBlockType* pWDICtx,
15958 WDI_EventInfoType* pEventData
15959)
15960{
15961 WDI_Status wdiStatus;
15962 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015963 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015964 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15966
15967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015969 -------------------------------------------------------------------------*/
15970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15971 ( NULL == pEventData->pEventData))
15972 {
15973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015974 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015977 }
15978
15979 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15980 if( NULL == wdiInitScanRspCb)
15981 {
15982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015983 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 }
15987
15988 /*-------------------------------------------------------------------------
15989 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015990 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015992 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15993 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015994 sizeof(halInitScanRspMsg.initScanRspParams));
15995
Jeff Johnsone7245742012-09-05 17:12:55 -070015996 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015997
15998 if ( pWDICtx->bInBmps )
15999 {
16000 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016001 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16002 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016004 "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 -080016005 WDI_ASSERT(0);
16006 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 }
16008
16009 /*Notify UMAC*/
16010 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16011
Jeff Johnsone7245742012-09-05 17:12:55 -070016012 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016013}/*WDI_ProcessInitScanRsp*/
16014
16015
16016/**
16017 @brief Process Start Scan Rsp function (called when a response
16018 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016019
16020 @param pWDICtx: pointer to the WLAN DAL context
16021 pEventData: pointer to the event information structure
16022
Jeff Johnson295189b2012-06-20 16:38:30 -070016023 @see
16024 @return Result of the function call
16025*/
16026WDI_Status
16027WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016028(
Jeff Johnson295189b2012-06-20 16:38:30 -070016029 WDI_ControlBlockType* pWDICtx,
16030 WDI_EventInfoType* pEventData
16031)
16032{
16033 WDI_StartScanRspParamsType wdiStartScanParams;
16034 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016035
16036 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16038
16039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016040 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016041 -------------------------------------------------------------------------*/
16042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16043 ( NULL == pEventData->pEventData))
16044 {
16045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016046 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016049 }
16050
16051 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16052 if( NULL == wdiStartScanRspCb)
16053 {
16054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016055 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016058 }
16059
16060 /*-------------------------------------------------------------------------
16061 Extract response and send it to UMAC
16062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016063 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16064 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 sizeof(halStartScanRspMsg.startScanRspParams));
16066
16067 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16068 halStartScanRspMsg.startScanRspParams.status);
16069#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016070 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016071 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016072 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 halStartScanRspMsg.startScanRspParams.startTSF,
16074 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016075#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016076
16077 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16078 {
16079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16080 "Start scan failed with status %s (%d)",
16081 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16082 halStartScanRspMsg.startScanRspParams.status);
16083 /* send the status to UMAC, don't return from here*/
16084 }
16085
16086 /*Notify UMAC*/
16087 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16088
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016090
16091}/*WDI_ProcessStartScanRsp*/
16092
16093
16094/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016096 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016097
16098 @param pWDICtx: pointer to the WLAN DAL context
16099 pEventData: pointer to the event information structure
16100
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 @see
16102 @return Result of the function call
16103*/
16104WDI_Status
16105WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016106(
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 WDI_ControlBlockType* pWDICtx,
16108 WDI_EventInfoType* pEventData
16109)
16110{
16111 WDI_Status wdiStatus;
16112 tHalEndScanRspMsg halEndScanRspMsg;
16113 WDI_EndScanRspCb wdiEndScanRspCb;
16114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16115
16116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 -------------------------------------------------------------------------*/
16119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16120 ( NULL == pEventData->pEventData))
16121 {
16122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016126 }
16127
16128 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16129
16130 /*-------------------------------------------------------------------------
16131 Extract response and send it to UMAC
16132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016133 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16134 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016135 sizeof(halEndScanRspMsg.endScanRspParams));
16136
Jeff Johnsone7245742012-09-05 17:12:55 -070016137 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016138
16139 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16140 {
16141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16142 "End Scan failed with status %s (%d )",
16143 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16144 halEndScanRspMsg.endScanRspParams.status);
16145 /* send the status to UMAC, don't return from here*/
16146 }
16147
16148 /*Notify UMAC*/
16149 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16150
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016152}/*WDI_ProcessEndScanRsp*/
16153
16154
16155/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016157 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016158
16159 @param pWDICtx: pointer to the WLAN DAL context
16160 pEventData: pointer to the event information structure
16161
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 @see
16163 @return Result of the function call
16164*/
16165WDI_Status
16166WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016167(
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 WDI_ControlBlockType* pWDICtx,
16169 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016170)
Jeff Johnson295189b2012-06-20 16:38:30 -070016171{
16172 WDI_Status wdiStatus;
16173 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016174
16175 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16177
16178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 -------------------------------------------------------------------------*/
16181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16182 ( NULL == pEventData->pEventData))
16183 {
16184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 }
16189
16190 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16191
16192 /*-------------------------------------------------------------------------
16193 Extract response and send it to UMAC
16194 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16196 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16198
Jeff Johnsone7245742012-09-05 17:12:55 -070016199 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016200
16201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016203 halFinishScanRspMsg.finishScanRspParams.status);
16204
16205 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16206 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16207 {
16208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16209 "Finish Scan failed with status %s (%d)",
16210 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16211 halFinishScanRspMsg.finishScanRspParams.status);
16212 /* send the status to UMAC, don't return from here*/
16213 }
16214
16215 /*Notify UMAC*/
16216 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16217
Jeff Johnsone7245742012-09-05 17:12:55 -070016218 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016219}/*WDI_ProcessFinishScanRsp*/
16220
16221/**
16222 @brief Process Join Response function (called when a response
16223 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016224
16225 @param pWDICtx: pointer to the WLAN DAL context
16226 pEventData: pointer to the event information structure
16227
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 @see
16229 @return Result of the function call
16230*/
16231WDI_Status
16232WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016233(
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 WDI_ControlBlockType* pWDICtx,
16235 WDI_EventInfoType* pEventData
16236)
16237{
16238 WDI_Status wdiStatus;
16239 WDI_JoinRspCb wdiJoinRspCb;
16240 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016241
16242 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16244
16245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016247 -------------------------------------------------------------------------*/
16248 if (( NULL == pWDICtx ) ||
16249 ( NULL == pWDICtx->pfncRspCB ) ||
16250 ( NULL == pEventData ) ||
16251 ( NULL == pEventData->pEventData))
16252 {
16253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016254 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 }
16258
16259 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16260
16261 /*-------------------------------------------------------------------------
16262 Extract response and send it to UMAC
16263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16265 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 sizeof(halJoinRspMsg.joinRspParams));
16267
Jeff Johnsone7245742012-09-05 17:12:55 -070016268 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016269
16270 wpalMutexAcquire(&pWDICtx->wptMutex);
16271
16272 /*-----------------------------------------------------------------------
16273 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016274 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16278 {
16279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016280 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16281 "association no longer in progress %d - mysterious HAL response",
16282 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016283
Jeff Johnsone7245742012-09-05 17:12:55 -070016284 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016286 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 }
16288
16289 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16290
16291 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016292 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 -----------------------------------------------------------------------*/
16294 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16295 {
16296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16297 "Join only allowed in Joining state - failure state is %d "
16298 "strange HAL response", pBSSSes->wdiAssocState);
16299
Jeff Johnsone7245742012-09-05 17:12:55 -070016300 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16301
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016303 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016304 }
16305
16306
16307 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016308 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 -----------------------------------------------------------------------*/
16310 if ( WDI_STATUS_SUCCESS != wdiStatus )
16311 {
16312 /*Association was failed by HAL - remove session*/
16313 WDI_DeleteSession(pWDICtx, pBSSSes);
16314
16315 /*Association no longer in progress */
16316 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16317
16318 /*Association no longer in progress - prepare pending assoc for processing*/
16319 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016320
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 }
16322 else
16323 {
16324 /*Transition to state Joining - this may be redundant as we are supposed
16325 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016326 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016327 }
16328
16329 wpalMutexRelease(&pWDICtx->wptMutex);
16330
16331 /*Notify UMAC*/
16332 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16333
Jeff Johnsone7245742012-09-05 17:12:55 -070016334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016335}/*WDI_ProcessJoinRsp*/
16336
16337
16338/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016339 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016340 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016341
16342 @param pWDICtx: pointer to the WLAN DAL context
16343 pEventData: pointer to the event information structure
16344
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 @see
16346 @return Result of the function call
16347*/
16348WDI_Status
16349WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016350(
Jeff Johnson295189b2012-06-20 16:38:30 -070016351 WDI_ControlBlockType* pWDICtx,
16352 WDI_EventInfoType* pEventData
16353)
16354{
16355 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16356 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016357 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016358 WDI_BSSSessionType* pBSSSes = NULL;
16359
Jeff Johnsone7245742012-09-05 17:12:55 -070016360 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016361 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16362 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016363
Jeff Johnson295189b2012-06-20 16:38:30 -070016364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16365
16366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016368 -------------------------------------------------------------------------*/
16369 if (( NULL == pEventData ) ||
16370 ( NULL == pEventData->pEventData))
16371 {
16372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016376 }
16377
16378 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16379
16380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016381 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016382 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016383 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16384 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016385 sizeof(halConfigBssRspMsg.configBssRspParams));
16386
16387 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16388 halConfigBssRspMsg.configBssRspParams.status);
16389 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16390 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016391 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016392 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16393 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016394
Jeff Johnson295189b2012-06-20 16:38:30 -070016395 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016396
16397 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016399
16400 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016402
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016404
Jeff Johnson295189b2012-06-20 16:38:30 -070016405 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016406 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016407 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16408 #endif
16409 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16410 halConfigBssRspMsg.configBssRspParams.staMac,
16411 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016412
Jeff Johnson295189b2012-06-20 16:38:30 -070016413 wpalMutexAcquire(&pWDICtx->wptMutex);
16414 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016415 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016416 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016417 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16418 wdiConfigBSSParams.macBSSID,
16419 &pBSSSes);
16420
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 /*-----------------------------------------------------------------------
16422 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016423 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016424 -----------------------------------------------------------------------*/
16425 if ( NULL == pBSSSes )
16426 {
16427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16428 "Association sequence for this BSS does not yet exist "
16429 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016430
16431 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16432
Jeff Johnson295189b2012-06-20 16:38:30 -070016433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016435 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016436
Jeff Johnson295189b2012-06-20 16:38:30 -070016437 /*Save data for this BSS*/
16438 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16439 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016440 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016441 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016443 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016444 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016445 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016446 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016447 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016448 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016449 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16450 pBSSSes->bcastStaIdx =
16451 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016452
Jeff Johnson295189b2012-06-20 16:38:30 -070016453 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016454
Jeff Johnson295189b2012-06-20 16:38:30 -070016455 /*-------------------------------------------------------------------------
16456 Add Peer STA
16457 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016458 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16460 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016461
Jeff Johnson295189b2012-06-20 16:38:30 -070016462 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016463 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016464 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016465 wdiAddSTAParam.ucHTCapable =
16466 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16467 wdiAddSTAParam.ucStaType =
16468 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16469
Jeff Johnson295189b2012-06-20 16:38:30 -070016470 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016471 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16472 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016473 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016474
16475 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16476 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16477 WDI_MAC_ADDR_LEN);
16478
Jeff Johnson295189b2012-06-20 16:38:30 -070016479 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016480 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016481 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016484 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016488 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016489 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016490 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016491 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016492
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16494 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016495
Jeff Johnson295189b2012-06-20 16:38:30 -070016496 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16497 /*-------------------------------------------------------------------------
16498 Add Broadcast STA only in AP mode
16499 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016500 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016501 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016502 {
16503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16504 "Add BCAST STA to table for index: %d",
16505 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016506
16507 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016508 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016509
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16511 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16512 }
16513 wpalMutexRelease(&pWDICtx->wptMutex);
16514 }
16515 else
16516 {
16517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16518 "Config BSS RSP failed with status : %s(%d)",
16519 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 halConfigBssRspMsg.configBssRspParams.status);
16522
Jeff Johnsone7245742012-09-05 17:12:55 -070016523
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 /*Association was failed by HAL - remove session*/
16525 WDI_DeleteSession(pWDICtx, pBSSSes);
16526
16527 /*Association no longer in progress */
16528 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16529
16530 /*Association no longer in progress - prepare pending assoc for processing*/
16531 WDI_DequeueAssocRequest(pWDICtx);
16532
16533 }
16534
16535 /*Notify UMAC*/
16536 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16537
Jeff Johnsone7245742012-09-05 17:12:55 -070016538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016539}/*WDI_ProcessConfigBSSRsp*/
16540
16541
16542/**
16543 @brief Process Del BSS Response function (called when a response
16544 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016545
16546 @param pWDICtx: pointer to the WLAN DAL context
16547 pEventData: pointer to the event information structure
16548
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 @see
16550 @return Result of the function call
16551*/
16552WDI_Status
16553WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016554(
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 WDI_ControlBlockType* pWDICtx,
16556 WDI_EventInfoType* pEventData
16557)
16558{
16559 WDI_DelBSSRspParamsType wdiDelBSSParams;
16560 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 WDI_BSSSessionType* pBSSSes = NULL;
16563
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16566
16567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 -------------------------------------------------------------------------*/
16570 if (( NULL == pEventData ) ||
16571 ( NULL == pEventData->pEventData))
16572 {
16573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 }
16578
16579 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16580
16581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016582 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016583 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016584 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16585 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016586 sizeof(halDelBssRspMsg.deleteBssRspParams));
16587
16588
16589 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016590 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016591
16592 wpalMutexAcquire(&pWDICtx->wptMutex);
16593
16594 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016595 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016596 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016597 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16598 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16599 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016600
16601 /*-----------------------------------------------------------------------
16602 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016603 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016604 -----------------------------------------------------------------------*/
16605 if ( NULL == pBSSSes )
16606 {
16607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16608 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016609 "association no longer in progress - mysterious HAL response");
16610
16611 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16612
16613 wpalMutexRelease(&pWDICtx->wptMutex);
16614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016615 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016616
16617 /*Extract BSSID for the response to UMAC*/
16618 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16619 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16620
16621 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16622
16623 /*-----------------------------------------------------------------------
16624 The current session will be deleted
16625 -----------------------------------------------------------------------*/
16626 WDI_DeleteSession(pWDICtx, pBSSSes);
16627
16628
16629 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016630 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16631 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016633 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016634 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016635
16636 /* Delete the STA's in this BSS */
16637 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16638
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 wpalMutexRelease(&pWDICtx->wptMutex);
16640
16641 /*Notify UMAC*/
16642 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16643
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016645}/*WDI_ProcessDelBSSRsp*/
16646
16647/**
16648 @brief Process Post Assoc Rsp function (called when a response
16649 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016650
16651 @param pWDICtx: pointer to the WLAN DAL context
16652 pEventData: pointer to the event information structure
16653
Jeff Johnson295189b2012-06-20 16:38:30 -070016654 @see
16655 @return Result of the function call
16656*/
16657WDI_Status
16658WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016659(
Jeff Johnson295189b2012-06-20 16:38:30 -070016660 WDI_ControlBlockType* pWDICtx,
16661 WDI_EventInfoType* pEventData
16662)
16663{
16664 WDI_PostAssocRspParamsType wdiPostAssocParams;
16665 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016668 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16670
16671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 -------------------------------------------------------------------------*/
16674 if (( NULL == pEventData ) ||
16675 ( NULL == pEventData->pEventData))
16676 {
16677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016681 }
16682
16683 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16684
16685 /*-------------------------------------------------------------------------
16686 Extract response and send it to UMAC
16687 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16689 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 sizeof(halPostAssocRspMsg.postAssocRspParams));
16691
16692 /*Extract the Post Assoc STA Params */
16693
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016696 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016697 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016698 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16700
Jeff Johnsone7245742012-09-05 17:12:55 -070016701 wdiPostAssocParams.wdiStatus =
16702 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016703
16704 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16705 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16707 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016708 WDI_MAC_ADDR_LEN);
16709
16710 /* Extract Post Assoc BSS Params */
16711
Jeff Johnsone7245742012-09-05 17:12:55 -070016712 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16713 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16714 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016715
16716 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16717 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016718 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16720 .macSTA, WDI_MAC_ADDR_LEN);
16721
Jeff Johnsone7245742012-09-05 17:12:55 -070016722 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16724
Jeff Johnsone7245742012-09-05 17:12:55 -070016725 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016726 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16727
16728 wdiPostAssocParams.bssParams.ucBSSIdx =
16729 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16730
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16733
16734 wpalMutexAcquire(&pWDICtx->wptMutex);
16735
16736 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016737 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016739 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016741 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016742
16743 /*-----------------------------------------------------------------------
16744 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016745 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 -----------------------------------------------------------------------*/
16747 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016748 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16750 {
16751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16752 "Association sequence for this BSS does not yet exist or "
16753 "association no longer in progress - mysterious HAL response");
16754
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16756
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016758 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016759 }
16760
16761 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 -----------------------------------------------------------------------*/
16764 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16765 {
16766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16767 "Post Assoc not allowed before JOIN - failing request "
16768 "strange HAL response");
16769
Jeff Johnsone7245742012-09-05 17:12:55 -070016770 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16771
Jeff Johnson295189b2012-06-20 16:38:30 -070016772 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 }
16775
16776 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 -----------------------------------------------------------------------*/
16779 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16780 {
16781 /*Association was failed by HAL - remove session*/
16782 WDI_DeleteSession(pWDICtx, pBSSSes);
16783 }
16784 else
16785 {
16786 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016787 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016788
16789 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016792 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016793 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016794 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016796 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16798
Jeff Johnsone7245742012-09-05 17:12:55 -070016799 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016800 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16801 }
16802
16803 /*Association no longer in progress */
16804 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16805
16806 /*Association no longer in progress - prepare pending assoc for processing*/
16807 WDI_DequeueAssocRequest(pWDICtx);
16808
16809 wpalMutexRelease(&pWDICtx->wptMutex);
16810
16811 /*Notify UMAC*/
16812 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16813
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016815}/*WDI_ProcessPostAssocRsp*/
16816
16817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016818 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016820
16821 @param pWDICtx: pointer to the WLAN DAL context
16822 pEventData: pointer to the event information structure
16823
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 @see
16825 @return Result of the function call
16826*/
16827WDI_Status
16828WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016829(
Jeff Johnson295189b2012-06-20 16:38:30 -070016830 WDI_ControlBlockType* pWDICtx,
16831 WDI_EventInfoType* pEventData
16832)
16833{
16834 WDI_DelSTARspParamsType wdiDelSTARsp;
16835 WDI_DelSTARspCb wdiDelSTARspCb;
16836 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016837 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16839
16840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016841 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 -------------------------------------------------------------------------*/
16843 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16844 ( NULL == pEventData->pEventData))
16845 {
16846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 }
16851
16852 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16853
16854 /*-------------------------------------------------------------------------
16855 Extract response and send it to UMAC
16856 -------------------------------------------------------------------------*/
16857 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016858 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016859 sizeof(halDelStaRspMsg.delStaRspParams));
16860
16861 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016862 wdiDelSTARsp.wdiStatus =
16863 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016864
16865 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16866
16867 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16868 if(staType == WDI_STA_ENTRY_SELF)
16869 {
16870 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16871
16872 /* At this point add the self-STA */
16873
16874 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16875 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16876 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16877
16878#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16879#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16880
16881 //all DPU indices are the same for self STA
16882 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16883 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16884 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16885 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16886 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16887 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016888
16889 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 }
16891 else
16892 {
16893 //Delete the station in the table
16894 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16895 }
16896
16897 /*Notify UMAC*/
16898 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16899
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016901}/*WDI_ProcessDelSTARsp*/
16902
16903
16904/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016905 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016906==========================================================================*/
16907
16908/**
16909 @brief Process Set BSS Key Rsp function (called when a response
16910 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016911
16912 @param pWDICtx: pointer to the WLAN DAL context
16913 pEventData: pointer to the event information structure
16914
Jeff Johnson295189b2012-06-20 16:38:30 -070016915 @see
16916 @return Result of the function call
16917*/
16918WDI_Status
16919WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016920(
Jeff Johnson295189b2012-06-20 16:38:30 -070016921 WDI_ControlBlockType* pWDICtx,
16922 WDI_EventInfoType* pEventData
16923)
16924{
16925 WDI_Status wdiStatus;
16926 eHalStatus halStatus;
16927 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16929
16930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016932 -------------------------------------------------------------------------*/
16933 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16934 ( NULL == pEventData->pEventData))
16935 {
16936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 }
16941
16942 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16943
16944 /*-------------------------------------------------------------------------
16945 Extract response and send it to UMAC
16946 -------------------------------------------------------------------------*/
16947 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016948 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016949
16950 if ( eHAL_STATUS_SUCCESS != halStatus )
16951 {
16952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16953 "Set BSS Key failed with status %s (%d)",
16954 WDI_getHALStatusMsgString(halStatus),
16955 halStatus);
16956 /* send the status to UMAC, don't return from here*/
16957 }
16958
16959 /*Notify UMAC*/
16960 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16961
Jeff Johnsone7245742012-09-05 17:12:55 -070016962 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016963}/*WDI_ProcessSetBssKeyRsp*/
16964
16965/**
16966 @brief Process Remove BSS Key Rsp function (called when a response
16967 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016968
16969 @param pWDICtx: pointer to the WLAN DAL context
16970 pEventData: pointer to the event information structure
16971
Jeff Johnson295189b2012-06-20 16:38:30 -070016972 @see
16973 @return Result of the function call
16974*/
16975WDI_Status
16976WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016977(
Jeff Johnson295189b2012-06-20 16:38:30 -070016978 WDI_ControlBlockType* pWDICtx,
16979 WDI_EventInfoType* pEventData
16980)
16981{
16982 WDI_Status wdiStatus;
16983 eHalStatus halStatus;
16984 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16986
16987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016989 -------------------------------------------------------------------------*/
16990 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16991 ( NULL == pEventData->pEventData))
16992 {
16993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016997 }
16998
16999 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17000
17001 /*-------------------------------------------------------------------------
17002 Extract response and send it to UMAC
17003 -------------------------------------------------------------------------*/
17004 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017005 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017006
17007 if ( eHAL_STATUS_SUCCESS != halStatus )
17008 {
17009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17010 "Remove BSS Key failed with status %s (%d )",
17011 WDI_getHALStatusMsgString(halStatus),
17012 halStatus);
17013 /* send the status to UMAC, don't return from here*/
17014 }
17015
17016 /*Notify UMAC*/
17017 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17018
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017020}/*WDI_ProcessSetBssKeyRsp*/
17021
17022
17023/**
17024 @brief Process Set STA Key Rsp function (called when a response
17025 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017026
17027 @param pWDICtx: pointer to the WLAN DAL context
17028 pEventData: pointer to the event information structure
17029
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 @see
17031 @return Result of the function call
17032*/
17033WDI_Status
17034WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017035(
Jeff Johnson295189b2012-06-20 16:38:30 -070017036 WDI_ControlBlockType* pWDICtx,
17037 WDI_EventInfoType* pEventData
17038)
17039{
17040 WDI_Status wdiStatus;
17041 eHalStatus halStatus;
17042 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17044
17045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 -------------------------------------------------------------------------*/
17048 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17049 ( NULL == pEventData->pEventData))
17050 {
17051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 }
17056
17057 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17058
17059 /*-------------------------------------------------------------------------
17060 Extract response and send it to UMAC
17061 -------------------------------------------------------------------------*/
17062 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017064
17065 if ( eHAL_STATUS_SUCCESS != halStatus )
17066 {
17067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17068 "Set STA Key failed with status %s (%d)",
17069 WDI_getHALStatusMsgString(halStatus),
17070 halStatus);
17071 /* send the status to UMAC, don't return from here*/
17072 }
17073
17074 /*Notify UMAC*/
17075 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17076
Jeff Johnsone7245742012-09-05 17:12:55 -070017077 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017078}/*WDI_ProcessSetSTAKeyRsp*/
17079
17080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017081 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017083
17084 @param pWDICtx: pointer to the WLAN DAL context
17085 pEventData: pointer to the event information structure
17086
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 @see
17088 @return Result of the function call
17089*/
17090WDI_Status
17091WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017092(
Jeff Johnson295189b2012-06-20 16:38:30 -070017093 WDI_ControlBlockType* pWDICtx,
17094 WDI_EventInfoType* pEventData
17095)
17096{
17097 WDI_Status wdiStatus;
17098 eHalStatus halStatus;
17099 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17101
17102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017103 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 -------------------------------------------------------------------------*/
17105 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17106 ( NULL == pEventData->pEventData))
17107 {
17108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 }
17113
17114 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17115
17116 /*-------------------------------------------------------------------------
17117 Extract response and send it to UMAC
17118 -------------------------------------------------------------------------*/
17119 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017120 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017121
17122 if ( eHAL_STATUS_SUCCESS != halStatus )
17123 {
17124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17125 "Remove STA Key failed with status %s (%d)",
17126 WDI_getHALStatusMsgString(halStatus),
17127 halStatus);
17128 /* send the status to UMAC, don't return from here*/
17129 }
17130
17131 /*Notify UMAC*/
17132 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17133
Jeff Johnsone7245742012-09-05 17:12:55 -070017134 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017135}/*WDI_ProcessRemoveStaKeyRsp*/
17136
17137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017138 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017140
17141 @param pWDICtx: pointer to the WLAN DAL context
17142 pEventData: pointer to the event information structure
17143
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 @see
17145 @return Result of the function call
17146*/
17147WDI_Status
17148WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017149(
Jeff Johnson295189b2012-06-20 16:38:30 -070017150 WDI_ControlBlockType* pWDICtx,
17151 WDI_EventInfoType* pEventData
17152)
17153{
17154 WDI_Status wdiStatus;
17155 eHalStatus halStatus;
17156 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17158
17159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017161 -------------------------------------------------------------------------*/
17162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17163 ( NULL == pEventData->pEventData))
17164 {
17165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 }
17170
17171 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17172
17173 /*-------------------------------------------------------------------------
17174 Extract response and send it to UMAC
17175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017176 wpalMemoryCopy( &halStatus,
17177 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 sizeof(halStatus));
17179
Jeff Johnsone7245742012-09-05 17:12:55 -070017180 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017181
17182 if ( eHAL_STATUS_SUCCESS != halStatus )
17183 {
17184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17185 "Set STA Key failed with status %s (%d)",
17186 WDI_getHALStatusMsgString(halStatus),
17187 halStatus);
17188 /* send the status to UMAC, don't return from here*/
17189 }
17190
17191 /*Notify UMAC*/
17192 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17193
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017195}/*WDI_ProcessSetSTABcastKeyRsp*/
17196
17197/**
17198 @brief Process Remove STA Bcast Key Rsp function (called when a
17199 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017200
17201 @param pWDICtx: pointer to the WLAN DAL context
17202 pEventData: pointer to the event information structure
17203
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 @see
17205 @return Result of the function call
17206*/
17207WDI_Status
17208WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017209(
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 WDI_ControlBlockType* pWDICtx,
17211 WDI_EventInfoType* pEventData
17212)
17213{
17214 WDI_Status wdiStatus;
17215 eHalStatus halStatus;
17216 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17218
17219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017221 -------------------------------------------------------------------------*/
17222 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17223 ( NULL == pEventData->pEventData))
17224 {
17225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017229 }
17230
17231 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17232
17233 /*-------------------------------------------------------------------------
17234 Extract response and send it to UMAC
17235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017236 wpalMemoryCopy( &halStatus,
17237 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 sizeof(halStatus));
17239
Jeff Johnsone7245742012-09-05 17:12:55 -070017240 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017241
17242 if ( eHAL_STATUS_SUCCESS != halStatus )
17243 {
17244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17245 "Remove STA Key failed with status %s (%d)",
17246 WDI_getHALStatusMsgString(halStatus),
17247 halStatus);
17248 /* send the status to UMAC, don't return from here*/
17249 }
17250
17251 /*Notify UMAC*/
17252 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17253
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017255}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17256
17257
17258/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017259 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017260==========================================================================*/
17261
17262/**
17263 @brief Process Add TSpec Rsp function (called when a response
17264 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017265
17266 @param pWDICtx: pointer to the WLAN DAL context
17267 pEventData: pointer to the event information structure
17268
Jeff Johnson295189b2012-06-20 16:38:30 -070017269 @see
17270 @return Result of the function call
17271*/
17272WDI_Status
17273WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017274(
Jeff Johnson295189b2012-06-20 16:38:30 -070017275 WDI_ControlBlockType* pWDICtx,
17276 WDI_EventInfoType* pEventData
17277)
17278{
17279 WDI_Status wdiStatus;
17280 eHalStatus halStatus;
17281 WDI_AddTsRspCb wdiAddTsRspCb;
17282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17283
17284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 -------------------------------------------------------------------------*/
17287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17288 ( NULL == pEventData->pEventData))
17289 {
17290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017294 }
17295
17296 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17297
17298 /*-------------------------------------------------------------------------
17299 Extract response and send it to UMAC
17300 -------------------------------------------------------------------------*/
17301 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017302 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017303
17304 /*Notify UMAC*/
17305 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17306
Jeff Johnsone7245742012-09-05 17:12:55 -070017307 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017308}/*WDI_ProcessAddTSpecRsp*/
17309
17310
Sunil Duttbd736ed2014-05-26 21:19:41 +053017311
17312#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17313
17314WDI_Status
17315WDI_ProcessLLStatsSetRsp
17316(
17317 WDI_ControlBlockType* pWDICtx,
17318 WDI_EventInfoType* pEventData
17319)
17320{
17321 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17322
17323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17324 "%s: Enter ", __func__);
17325 /*-------------------------------------------------------------------------
17326 Sanity check
17327 -------------------------------------------------------------------------*/
17328 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17329 ( NULL == pEventData->pEventData))
17330 {
17331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17332 "%s: Invalid parameters", __func__);
17333 WDI_ASSERT(0);
17334 return WDI_STATUS_E_FAILURE;
17335 }
17336
17337 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17338
17339 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17340
17341 return WDI_STATUS_SUCCESS;
17342}
17343
17344WDI_Status
17345WDI_ProcessLLStatsGetRsp
17346(
17347 WDI_ControlBlockType* pWDICtx,
17348 WDI_EventInfoType* pEventData
17349)
17350{
17351 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17352
17353 /*-------------------------------------------------------------------------
17354 Sanity check
17355 -------------------------------------------------------------------------*/
17356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17357 ( NULL == pEventData->pEventData))
17358 {
17359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17360 "%s: Invalid parameters", __func__);
17361 WDI_ASSERT(0);
17362 return WDI_STATUS_E_FAILURE;
17363 }
17364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17365 "%s: Enter ", __func__);
17366
17367 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17368
17369 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17370
17371 return WDI_STATUS_SUCCESS;
17372}
17373
17374WDI_Status
17375WDI_ProcessLLStatsClearRsp
17376(
17377 WDI_ControlBlockType* pWDICtx,
17378 WDI_EventInfoType* pEventData
17379)
17380{
17381 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17382
17383 /*-------------------------------------------------------------------------
17384 Sanity check
17385 -------------------------------------------------------------------------*/
17386 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17387 ( NULL == pEventData->pEventData))
17388 {
17389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17390 "%s: Invalid parameters", __func__);
17391 WDI_ASSERT(0);
17392 return WDI_STATUS_E_FAILURE;
17393 }
17394
17395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17396 "%s: CLEAR RESPONSE CALL BACK", __func__);
17397 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17398
17399 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17400
17401 return WDI_STATUS_SUCCESS;
17402}
17403#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17404
Jeff Johnson295189b2012-06-20 16:38:30 -070017405/**
17406 @brief Process Del TSpec Rsp function (called when a response
17407 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017408
17409 @param pWDICtx: pointer to the WLAN DAL context
17410 pEventData: pointer to the event information structure
17411
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 @see
17413 @return Result of the function call
17414*/
17415WDI_Status
17416WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017417(
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 WDI_ControlBlockType* pWDICtx,
17419 WDI_EventInfoType* pEventData
17420)
17421{
17422 WDI_Status wdiStatus;
17423 eHalStatus halStatus;
17424 WDI_DelTsRspCb wdiDelTsRspCb;
17425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17426
17427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 -------------------------------------------------------------------------*/
17430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17431 ( NULL == pEventData->pEventData))
17432 {
17433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 }
17438
17439 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17440
17441 /*-------------------------------------------------------------------------
17442 Extract response and send it to UMAC
17443 -------------------------------------------------------------------------*/
17444 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017446
17447 /*Notify UMAC*/
17448 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17449
Jeff Johnsone7245742012-09-05 17:12:55 -070017450 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017451}/*WDI_ProcessDelTSpecRsp*/
17452
17453/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017454 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017455 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017456
17457 @param pWDICtx: pointer to the WLAN DAL context
17458 pEventData: pointer to the event information structure
17459
Jeff Johnson295189b2012-06-20 16:38:30 -070017460 @see
17461 @return Result of the function call
17462*/
17463WDI_Status
17464WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017465(
Jeff Johnson295189b2012-06-20 16:38:30 -070017466 WDI_ControlBlockType* pWDICtx,
17467 WDI_EventInfoType* pEventData
17468)
17469{
17470 WDI_Status wdiStatus;
17471 eHalStatus halStatus;
17472 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17474
17475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017477 -------------------------------------------------------------------------*/
17478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17479 ( NULL == pEventData->pEventData))
17480 {
17481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 }
17486
17487 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17488
17489 /*-------------------------------------------------------------------------
17490 Extract response and send it to UMAC
17491 -------------------------------------------------------------------------*/
17492 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017494
17495 /*Notify UMAC*/
17496 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17497
Jeff Johnsone7245742012-09-05 17:12:55 -070017498 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017499}/*WDI_ProcessUpdateEDCAParamsRsp*/
17500
17501
17502/**
17503 @brief Process Add BA Rsp function (called when a response
17504 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017505
17506 @param pWDICtx: pointer to the WLAN DAL context
17507 pEventData: pointer to the event information structure
17508
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 @see
17510 @return Result of the function call
17511*/
17512WDI_Status
17513WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017514(
Jeff Johnson295189b2012-06-20 16:38:30 -070017515 WDI_ControlBlockType* pWDICtx,
17516 WDI_EventInfoType* pEventData
17517)
17518{
17519 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17520
17521 tAddBASessionRspParams halBASessionRsp;
17522 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17523
Jeff Johnsone7245742012-09-05 17:12:55 -070017524
Jeff Johnson295189b2012-06-20 16:38:30 -070017525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17526
17527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 -------------------------------------------------------------------------*/
17530 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17531 ( NULL == pEventData->pEventData))
17532 {
17533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 }
17538
17539 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17540
17541 /*-------------------------------------------------------------------------
17542 Extract response and send it to UMAC
17543 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 wpalMemoryCopy( &halBASessionRsp,
17545 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 sizeof(halBASessionRsp));
17547
17548 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17549
Jeff Johnson43971f52012-07-17 12:26:56 -070017550 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017551 {
17552 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17553 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17554 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17555 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17556 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17557 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17558 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17559 }
17560
17561 /*Notify UMAC*/
17562 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17563
Jeff Johnsone7245742012-09-05 17:12:55 -070017564 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017565}/*WDI_ProcessAddSessionBARsp*/
17566
17567
17568/**
17569 @brief Process Del BA Rsp function (called when a response
17570 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017571
17572 @param pWDICtx: pointer to the WLAN DAL context
17573 pEventData: pointer to the event information structure
17574
Jeff Johnson295189b2012-06-20 16:38:30 -070017575 @see
17576 @return Result of the function call
17577*/
17578WDI_Status
17579WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017580(
Jeff Johnson295189b2012-06-20 16:38:30 -070017581 WDI_ControlBlockType* pWDICtx,
17582 WDI_EventInfoType* pEventData
17583)
17584{
17585 WDI_Status wdiStatus;
17586 eHalStatus halStatus;
17587 WDI_DelBARspCb wdiDelBARspCb;
17588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17589
17590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017592 -------------------------------------------------------------------------*/
17593 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17594 ( NULL == pEventData->pEventData))
17595 {
17596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017597 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017600 }
17601
17602 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17603
17604 /*-------------------------------------------------------------------------
17605 Extract response and send it to UMAC
17606 -------------------------------------------------------------------------*/
17607 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017608 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017609
17610 if ( eHAL_STATUS_SUCCESS == halStatus )
17611 {
17612 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17613 }
17614
17615 /*Notify UMAC*/
17616 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17617
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017619}/*WDI_ProcessDelBARsp*/
17620
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017621#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017622/**
17623 @brief Process TSM Stats Rsp function (called when a response
17624 is being received over the bus from HAL)
17625
17626 @param pWDICtx: pointer to the WLAN DAL context
17627 pEventData: pointer to the event information structure
17628
17629 @see
17630 @return Result of the function call
17631*/
17632WDI_Status
17633WDI_ProcessTsmStatsRsp
17634(
17635 WDI_ControlBlockType* pWDICtx,
17636 WDI_EventInfoType* pEventData
17637)
17638{
17639 WDI_TsmRspCb wdiTsmStatsRspCb;
17640 tTsmStatsRspMsg halTsmStatsRspMsg;
17641 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17643
17644 /*-------------------------------------------------------------------------
17645 Sanity check
17646 -------------------------------------------------------------------------*/
17647 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17648 ( NULL == pEventData->pEventData))
17649 {
17650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017652 WDI_ASSERT(0);
17653 return WDI_STATUS_E_FAILURE;
17654 }
17655
17656 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17657
17658 /*-------------------------------------------------------------------------
17659 Unpack HAL Response Message - the header was already extracted by the
17660 main Response Handling procedure
17661 -------------------------------------------------------------------------*/
17662 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17663 pEventData->pEventData,
17664 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17665
17666 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17667 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17668 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17669 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17670 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17671 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17672 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17673 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17674 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17675 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17676 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17677 halTsmStatsRspMsg.tsmStatsRspParams.status);
17678
17679 /*Notify UMAC*/
17680 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17681
17682 return WDI_STATUS_SUCCESS;
17683}/*WDI_ProcessTsmStatsRsp*/
17684
17685#endif
17686
17687
17688
17689/**
17690 @brief Process Flush AC Rsp function (called when a response
17691 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017692
17693 @param pWDICtx: pointer to the WLAN DAL context
17694 pEventData: pointer to the event information structure
17695
Jeff Johnson295189b2012-06-20 16:38:30 -070017696 @see
17697 @return Result of the function call
17698*/
17699WDI_Status
17700WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017701(
Jeff Johnson295189b2012-06-20 16:38:30 -070017702 WDI_ControlBlockType* pWDICtx,
17703 WDI_EventInfoType* pEventData
17704)
17705{
17706 WDI_Status wdiStatus;
17707 eHalStatus halStatus;
17708 WDI_FlushAcRspCb wdiFlushAcRspCb;
17709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17710
17711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017713 -------------------------------------------------------------------------*/
17714 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17715 ( NULL == pEventData->pEventData))
17716 {
17717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017721 }
17722
17723 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17724
17725 /*-------------------------------------------------------------------------
17726 Extract response and send it to UMAC
17727 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017728 wpalMemoryCopy( &halStatus,
17729 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017730 sizeof(halStatus));
17731
Jeff Johnsone7245742012-09-05 17:12:55 -070017732 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017733
17734 /*Notify UMAC*/
17735 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17736
Jeff Johnsone7245742012-09-05 17:12:55 -070017737 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017738}/*WDI_ProcessFlushAcRsp*/
17739
17740/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017741 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017742 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017743
17744 @param pWDICtx: pointer to the WLAN DAL context
17745 pEventData: pointer to the event information structure
17746
Jeff Johnson295189b2012-06-20 16:38:30 -070017747 @see
17748 @return Result of the function call
17749*/
17750WDI_Status
17751WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017752(
Jeff Johnson295189b2012-06-20 16:38:30 -070017753 WDI_ControlBlockType* pWDICtx,
17754 WDI_EventInfoType* pEventData
17755)
17756{
17757 WDI_Status wdiStatus;
17758 eHalStatus halStatus;
17759 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17761
17762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017763 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 -------------------------------------------------------------------------*/
17765 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17766 ( NULL == pEventData->pEventData))
17767 {
17768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017769 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017772 }
17773
17774 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17775
17776 /*-------------------------------------------------------------------------
17777 Extract response and send it to UMAC
17778 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017779 wpalMemoryCopy( &halStatus,
17780 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017781 sizeof(halStatus));
17782
Jeff Johnsone7245742012-09-05 17:12:55 -070017783 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017784
17785 /*Notify UMAC*/
17786 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17787
Jeff Johnsone7245742012-09-05 17:12:55 -070017788 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017789}/*WDI_ProcessBtAmpEventRsp*/
17790
17791
17792/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017793 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017794 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017795
17796 @param pWDICtx: pointer to the WLAN DAL context
17797 pEventData: pointer to the event information structure
17798
Jeff Johnson295189b2012-06-20 16:38:30 -070017799 @see
17800 @return Result of the function call
17801*/
17802WDI_Status
17803WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017804(
Jeff Johnson295189b2012-06-20 16:38:30 -070017805 WDI_ControlBlockType* pWDICtx,
17806 WDI_EventInfoType* pEventData
17807)
17808{
17809 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17810 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17811 tAddStaSelfRspMsg halAddStaSelfRsp;
17812 WDI_AddStaParams wdiAddSTAParam = {0};
17813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17814
17815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017816 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017817 -------------------------------------------------------------------------*/
17818 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17819 ( NULL == pEventData->pEventData))
17820 {
17821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017822 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017825 }
17826
Jeff Johnsone7245742012-09-05 17:12:55 -070017827 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017828 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17829
17830 /*-------------------------------------------------------------------------
17831 Extract response and send it to UMAC
17832 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017833 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17834 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17836
17837
Jeff Johnsone7245742012-09-05 17:12:55 -070017838 wdiAddSTASelfParams.wdiStatus =
17839 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017840
Jeff Johnsone7245742012-09-05 17:12:55 -070017841 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017842 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017845 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017846 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17847
17848 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17849 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17850 WDI_MAC_ADDR_LEN);
17851
17852
17853#ifdef HAL_SELF_STA_PER_BSS
17854
17855 /* At this point add the self-STA */
17856
17857 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17858 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17859 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17860
17861 //all DPU indices are the same for self STA
17862
17863 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017864 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017865 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17866 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17867 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17868 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17869 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17870
17871 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17872 WDI_MAC_ADDR_LEN);
17873
17874 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17875 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17876
Jeff Johnsone7245742012-09-05 17:12:55 -070017877 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17879 {
17880 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17881 }
17882#endif
17883
17884 /*Notify UMAC*/
17885 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17886
Jeff Johnsone7245742012-09-05 17:12:55 -070017887 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017888}/*WDI_ProcessAddSTASelfRsp*/
17889
17890
17891
17892/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017893 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017895
17896 @param pWDICtx: pointer to the WLAN DAL context
17897 pEventData: pointer to the event information structure
17898
Jeff Johnson295189b2012-06-20 16:38:30 -070017899 @see
17900 @return Result of the function call
17901*/
17902WDI_Status
17903WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017904(
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 WDI_ControlBlockType* pWDICtx,
17906 WDI_EventInfoType* pEventData
17907)
17908{
17909 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17910 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17911 tDelStaSelfRspParams delStaSelfRspParams;
17912 wpt_uint8 ucStaIdx;
17913
17914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17915
17916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017918 -------------------------------------------------------------------------*/
17919 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17920 ( NULL == pEventData->pEventData))
17921 {
17922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017926 }
17927
17928 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17929
17930 /*-------------------------------------------------------------------------
17931 Extract response and send it to UMAC
17932 -------------------------------------------------------------------------*/
17933
Jeff Johnsone7245742012-09-05 17:12:55 -070017934 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 (wpt_uint8*)pEventData->pEventData,
17936 sizeof(tDelStaSelfRspParams));
17937
Jeff Johnsone7245742012-09-05 17:12:55 -070017938 wdiDelStaSelfRspParams.wdiStatus =
17939 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017940
Jeff Johnsone7245742012-09-05 17:12:55 -070017941 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017942 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17943 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17944 {
17945 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 delStaSelfRspParams.selfMacAddr,
17948 &ucStaIdx);
17949 if(WDI_STATUS_E_FAILURE == wdiStatus)
17950 {
17951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017952 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 }
17956 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17957 }
17958
17959 /*Notify UMAC*/
17960 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17961
17962 return WDI_STATUS_SUCCESS;
17963}
17964
Jeff Johnsone7245742012-09-05 17:12:55 -070017965#ifdef FEATURE_OEM_DATA_SUPPORT
17966/**
17967 @brief Start Oem Data Rsp function (called when a
17968 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017969
Jeff Johnsone7245742012-09-05 17:12:55 -070017970 @param pWDICtx: pointer to the WLAN DAL context
17971 pEventData: pointer to the event information structure
17972
17973 @see
17974 @return Result of the function call
17975*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017976
17977WDI_Status
17978WDI_ProcessStartOemDataRsp
17979(
17980 WDI_ControlBlockType* pWDICtx,
17981 WDI_EventInfoType* pEventData
17982)
17983{
17984 WDI_oemDataRspCb wdiOemDataRspCb;
17985 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17986 tStartOemDataRspParams* halStartOemDataRspParams;
17987
17988 /*-------------------------------------------------------------------------
17989 Sanity check
17990 -------------------------------------------------------------------------*/
17991 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17992 ( NULL == pEventData->pEventData))
17993 {
17994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017995 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017996 WDI_ASSERT(0);
17997 return WDI_STATUS_E_FAILURE;
17998 }
17999
18000 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18001
18002 /*-------------------------------------------------------------------------
18003 Extract response and send it to UMAC
18004 -------------------------------------------------------------------------*/
18005 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18006
18007
18008 //It is the responsibility of the application code to check for failure
18009 //conditions!
18010
18011 //Allocate memory for WDI OEM DATA RSP structure
18012 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18013
18014 if(NULL == wdiOemDataRspParams)
18015 {
18016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018017 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018018 pWDICtx, pEventData, pEventData->pEventData);
18019 WDI_ASSERT(0);
18020 return WDI_STATUS_E_FAILURE;
18021 }
18022
18023 /* Populate WDI structure members */
18024 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18025
18026 /*Notify UMAC*/
18027 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18028
18029 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18030 wpalMemoryFree(wdiOemDataRspParams);
18031
18032 return WDI_STATUS_SUCCESS;
18033}/*WDI_PrcoessStartOemDataRsp*/
18034#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018035
18036/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018038===========================================================================*/
18039
18040/**
18041 @brief Process Channel Switch Rsp function (called when a response
18042 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018043
18044 @param pWDICtx: pointer to the WLAN DAL context
18045 pEventData: pointer to the event information structure
18046
Jeff Johnson295189b2012-06-20 16:38:30 -070018047 @see
18048 @return Result of the function call
18049*/
18050WDI_Status
18051WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018052(
Jeff Johnson295189b2012-06-20 16:38:30 -070018053 WDI_ControlBlockType* pWDICtx,
18054 WDI_EventInfoType* pEventData
18055)
18056{
18057 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18058 WDI_SwitchChRspCb wdiChSwitchRspCb;
18059 tSwitchChannelRspParams halSwitchChannelRsp;
18060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18061
18062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 -------------------------------------------------------------------------*/
18065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18066 ( NULL == pEventData->pEventData))
18067 {
18068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 }
18073
18074 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18075
18076 /*-------------------------------------------------------------------------
18077 Extract response and send it to UMAC
18078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018079 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018080 (wpt_uint8*)pEventData->pEventData,
18081 sizeof(halSwitchChannelRsp));
18082
Jeff Johnsone7245742012-09-05 17:12:55 -070018083 wdiSwitchChRsp.wdiStatus =
18084 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018085 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18086
18087#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018089#endif
18090
18091 /*Notify UMAC*/
18092 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18093
Jeff Johnsone7245742012-09-05 17:12:55 -070018094 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018095}/*WDI_ProcessChannelSwitchRsp*/
18096
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018097/**
18098 @brief Process Channel Switch Rsp function (called when a response
18099 is being received over the bus from HAL against
18100 WDI_ProcessChannelSwitchReq_V1)
18101
18102 @param pWDICtx: pointer to the WLAN DAL context
18103 pEventData: pointer to the event information structure
18104
18105 @see
18106 @return Result of the function call
18107*/
18108
18109WDI_Status
18110WDI_ProcessChannelSwitchRsp_V1
18111(
18112 WDI_ControlBlockType* pWDICtx,
18113 WDI_EventInfoType* pEventData
18114)
18115{
18116 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18117 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18118 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18120
18121 /*-------------------------------------------------------------------------
18122 Sanity check
18123 -------------------------------------------------------------------------*/
18124 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18125 ( NULL == pEventData->pEventData))
18126 {
18127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18128 "%s: Invalid parameters", __func__);
18129 WDI_ASSERT(0);
18130 return WDI_STATUS_E_FAILURE;
18131 }
18132
18133 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18134
18135 /*-------------------------------------------------------------------------
18136 Extract response and send it to UMAC
18137 -------------------------------------------------------------------------*/
18138 wpalMemoryCopy( &halSwitchChannelRsp,
18139 (wpt_uint8*)pEventData->pEventData,
18140 sizeof(halSwitchChannelRsp));
18141
18142 wdiSwitchChRsp.wdiStatus =
18143 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18144 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18145
18146#ifdef WLAN_FEATURE_VOWIFI
18147 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18148#endif
18149
18150 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18151 if (( NULL == wdiChSwitchRspCb ) )
18152 {
18153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18154 "%s: ### Call back function is null", __func__);
18155 WDI_ASSERT(0);
18156 return WDI_STATUS_E_FAILURE;
18157 }
18158 /*Notify UMAC*/
18159 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18160
18161 return WDI_STATUS_SUCCESS;
18162}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018163
18164/**
18165 @brief Process Config STA Rsp function (called when a response
18166 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018167
18168 @param pWDICtx: pointer to the WLAN DAL context
18169 pEventData: pointer to the event information structure
18170
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 @see
18172 @return Result of the function call
18173*/
18174WDI_Status
18175WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018176(
Jeff Johnson295189b2012-06-20 16:38:30 -070018177 WDI_ControlBlockType* pWDICtx,
18178 WDI_EventInfoType* pEventData
18179)
18180{
18181 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18182 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18183 WDI_AddStaParams wdiAddSTAParam;
18184
18185 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018186 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018187
Jeff Johnsone7245742012-09-05 17:12:55 -070018188 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18190
18191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 -------------------------------------------------------------------------*/
18194 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18195 ( NULL == pEventData->pEventData))
18196 {
18197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 }
18202
18203 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18204
18205 /*-------------------------------------------------------------------------
18206 Extract response and send it to UMAC
18207 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018208 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18209 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 sizeof(halConfigStaRsp.configStaRspParams));
18211
18212
18213 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18214 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18215 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18216 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18217 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18218
18219 /* MAC Address of STA - take from cache as it does not come back in the
18220 response*/
18221 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018222 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018223 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018224
18225 wdiCfgSTAParams.wdiStatus =
18226 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018227
18228 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18229 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18230 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18231
18232 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18233 {
18234 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18235 {
18236 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018237 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18239 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018240
Jeff Johnson295189b2012-06-20 16:38:30 -070018241 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018242 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018243 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018244 wdiAddSTAParam.ucHTCapable =
18245 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18246 wdiAddSTAParam.ucStaType =
18247 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018248 wdiAddSTAParam.ucRmfEnabled =
18249 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018250
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018252 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18253 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018254 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018255
18256 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18257 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18258 WDI_MAC_ADDR_LEN);
18259
18260 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18261 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18262 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018263
18264 if ( NULL == pBSSSes )
18265 {
18266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18267 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018268
Jeff Johnson295189b2012-06-20 16:38:30 -070018269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018270 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018271 }
18272
18273 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018274 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018275 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018276 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018277 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018278 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018279 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018280 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018281 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018283
Jeff Johnson295189b2012-06-20 16:38:30 -070018284 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18285 }
18286 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18287 {
18288 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18289
Jeff Johnsone7245742012-09-05 17:12:55 -070018290 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018291 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018292 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018293 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018294 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018295 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018296 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018297 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018298 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018299 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018300 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018301 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018302 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018303 halConfigStaRsp.configStaRspParams.ucUcastSig;
18304 }
18305 }
18306
18307 /*Notify UMAC*/
18308 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18309
Jeff Johnsone7245742012-09-05 17:12:55 -070018310 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018311}/*WDI_ProcessConfigStaRsp*/
18312
18313
18314/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018315 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018316 response 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_ProcessSetLinkStateRsp
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_SetLinkStateRspCb wdiSetLinkStateRspCb;
18334
18335 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018336 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18338
18339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018340 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018341 -------------------------------------------------------------------------*/
18342 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18343 ( NULL == pEventData->pEventData))
18344 {
18345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018346 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 }
18350
18351 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18352
18353 wpalMutexAcquire(&pWDICtx->wptMutex);
18354
18355 /*If the link is being transitioned to idle - the BSS is to be deleted
18356 - this type of ending a session is possible when UMAC has failed an
18357 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018358 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018359 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18360 {
18361 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018363 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018364 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18365 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18366 &pBSSSes);
18367
Jeff Johnson295189b2012-06-20 16:38:30 -070018368 /*-----------------------------------------------------------------------
18369 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018370 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 -----------------------------------------------------------------------*/
18372 if ( NULL == pBSSSes )
18373 {
18374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18375 "Set link response received outside association session");
18376 }
18377 else
18378 {
18379 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18380 will be del BSS coming after this to stop the beaconing & cleaning up the
18381 sessions*/
18382 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18383 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18384 {
18385 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018386 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018387 -----------------------------------------------------------------------*/
18388 WDI_DeleteSession(pWDICtx, pBSSSes);
18389
18390 /*-----------------------------------------------------------------------
18391 Check to see if this association is in progress - if so disable the
18392 flag as this has ended
18393 -----------------------------------------------------------------------*/
18394 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018395 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018396 /*Association no longer in progress */
18397 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18398 /*Association no longer in progress - prepare pending assoc for processing*/
18399 WDI_DequeueAssocRequest(pWDICtx);
18400 }
18401 }
18402 }
18403 }
18404 /* If the link state has been set to POST ASSOC, reset the "association in
18405 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018406 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018407 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18408 {
18409 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18410 WDI_DequeueAssocRequest(pWDICtx);
18411 }
18412
18413 wpalMutexRelease(&pWDICtx->wptMutex);
18414
18415 /*-------------------------------------------------------------------------
18416 Extract response and send it to UMAC
18417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018418 wpalMemoryCopy( &halStatus,
18419 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 sizeof(halStatus));
18421
Jeff Johnsone7245742012-09-05 17:12:55 -070018422 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018423
18424 /*Notify UMAC*/
18425 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18426
Jeff Johnsone7245742012-09-05 17:12:55 -070018427 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018428}/*WDI_ProcessSetLinkStateRsp*/
18429
18430/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018431 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018433
18434 @param pWDICtx: pointer to the WLAN DAL context
18435 pEventData: pointer to the event information structure
18436
Jeff Johnson295189b2012-06-20 16:38:30 -070018437 @see
18438 @return Result of the function call
18439*/
18440WDI_Status
18441WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018442(
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 WDI_ControlBlockType* pWDICtx,
18444 WDI_EventInfoType* pEventData
18445)
18446{
18447 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18448 WDI_GetStatsRspCb wdiGetStatsRspCb;
18449 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018450
Jeff Johnson295189b2012-06-20 16:38:30 -070018451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18452
18453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018455 -------------------------------------------------------------------------*/
18456 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18457 ( NULL == pEventData->pEventData))
18458 {
18459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 }
18464
18465 /*-------------------------------------------------------------------------
18466 Extract response and send it to UMAC
18467 -------------------------------------------------------------------------*/
18468 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18469
18470 /*allocate the stats response buffer */
18471 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18472 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18473 + sizeof(WDI_GetStatsRspParamsType));
18474
18475 if(NULL == wdiGetStatsRsp)
18476 {
18477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018478 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018479 pWDICtx, pEventData, pEventData->pEventData);
18480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018482 }
18483
18484 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18485
18486 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18487 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18488 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18489 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18490 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18491 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18492
18493 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18494 wpalMemoryCopy(wdiGetStatsRsp + 1,
18495 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18496 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18497
18498 /*Notify UMAC*/
18499 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18500
18501 wpalMemoryFree(wdiGetStatsRsp);
18502
Jeff Johnsone7245742012-09-05 17:12:55 -070018503 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018504}/*WDI_ProcessGetStatsRsp*/
18505
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018506#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018507/**
18508 @brief Process Get Roam Rssi Rsp function (called when a response is
18509 being received over the bus from HAL)
18510
18511 @param pWDICtx: pointer to the WLAN DAL context
18512 pEventData: pointer to the event information structure
18513
18514 @see
18515 @return Result of the function call
18516*/
18517WDI_Status
18518WDI_ProcessGetRoamRssiRsp
18519(
18520 WDI_ControlBlockType* pWDICtx,
18521 WDI_EventInfoType* pEventData
18522)
18523{
18524 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18525 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18526 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18528
18529 /*-------------------------------------------------------------------------
18530 Sanity check
18531 -------------------------------------------------------------------------*/
18532 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18533 ( NULL == pEventData->pEventData))
18534 {
18535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18536 "%s: Invalid parameters", __func__);
18537 WDI_ASSERT(0);
18538 return WDI_STATUS_E_FAILURE;
18539 }
18540
18541 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18542 if(NULL == wdiGetRoamRssiRspCb)
18543 {
18544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18545 "%s: call back function is NULL", __func__);
18546 WDI_ASSERT(0);
18547 return WDI_STATUS_E_FAILURE;
18548 }
18549
18550 /*-------------------------------------------------------------------------
18551 Extract response and send it to UMAC
18552 -------------------------------------------------------------------------*/
18553 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18554 pEventData->pEventData,
18555 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18556
18557 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18558 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18559 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18560
18561 /*Notify UMAC*/
18562 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18563
18564 return WDI_STATUS_SUCCESS;
18565}/*WDI_ProcessGetRoamRssiRsp*/
18566#endif
18567
Jeff Johnson295189b2012-06-20 16:38:30 -070018568
18569/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018570 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018572
18573 @param pWDICtx: pointer to the WLAN DAL context
18574 pEventData: pointer to the event information structure
18575
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 @see
18577 @return Result of the function call
18578*/
18579WDI_Status
18580WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018581(
Jeff Johnson295189b2012-06-20 16:38:30 -070018582 WDI_ControlBlockType* pWDICtx,
18583 WDI_EventInfoType* pEventData
18584)
18585{
18586 WDI_Status wdiStatus;
18587 eHalStatus halStatus;
18588 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18590
18591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 -------------------------------------------------------------------------*/
18594 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18595 ( NULL == pEventData->pEventData))
18596 {
18597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018601 }
18602
18603 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18604
18605 /*-------------------------------------------------------------------------
18606 Extract response and send it to UMAC
18607 -------------------------------------------------------------------------*/
18608 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018609 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018610
18611 /*Notify UMAC*/
18612 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18613
Jeff Johnsone7245742012-09-05 17:12:55 -070018614 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018615}/*WDI_ProcessUpdateCfgRsp*/
18616
18617
18618
18619/**
18620 @brief Process Add BA Rsp function (called when a response
18621 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018622
18623 @param pWDICtx: pointer to the WLAN DAL context
18624 pEventData: pointer to the event information structure
18625
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 @see
18627 @return Result of the function call
18628*/
18629WDI_Status
18630WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018631(
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 WDI_ControlBlockType* pWDICtx,
18633 WDI_EventInfoType* pEventData
18634)
18635{
18636 WDI_AddBARspCb wdiAddBARspCb;
18637
18638 tAddBARspParams halAddBARsp;
18639 WDI_AddBARspinfoType wdiAddBARsp;
18640
18641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18642
18643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018645 -------------------------------------------------------------------------*/
18646 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18647 ( NULL == pEventData->pEventData))
18648 {
18649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018653 }
18654
18655 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18656
18657 /*-------------------------------------------------------------------------
18658 Extract response and send it to UMAC
18659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018660 wpalMemoryCopy( &halAddBARsp,
18661 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018662 sizeof(halAddBARsp));
18663
18664 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18665
Jeff Johnson43971f52012-07-17 12:26:56 -070018666 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018667 {
18668 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18669 }
18670
18671 /*Notify UMAC*/
18672 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18673
Jeff Johnsone7245742012-09-05 17:12:55 -070018674 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018675}/*WDI_ProcessAddSessionBARsp*/
18676
18677/**
18678 @brief Process Add BA Rsp function (called when a response
18679 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018680
18681 @param pWDICtx: pointer to the WLAN DAL context
18682 pEventData: pointer to the event information structure
18683
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 @see
18685 @return Result of the function call
18686*/
18687WDI_Status
18688WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018689(
Jeff Johnson295189b2012-06-20 16:38:30 -070018690 WDI_ControlBlockType* pWDICtx,
18691 WDI_EventInfoType* pEventData
18692)
18693{
18694 WDI_TriggerBARspCb wdiTriggerBARspCb;
18695
18696 tTriggerBARspParams* halTriggerBARsp;
18697 tTriggerBaRspCandidate* halBaCandidate;
18698 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18699 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18700 wpt_uint16 index;
18701 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018702 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18704
18705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018706 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018707 -------------------------------------------------------------------------*/
18708 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18709 ( NULL == pEventData->pEventData))
18710 {
18711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018715 }
18716
18717 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18718
18719 /*-------------------------------------------------------------------------
18720 Extract response and send it to UMAC
18721 -------------------------------------------------------------------------*/
18722 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18723
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018724 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18725
18726 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18727 {
18728 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018729 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018731
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018732 if(NULL == wdiTriggerBARsp)
18733 {
18734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018735 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018736 pWDICtx, pEventData, pEventData->pEventData);
18737 WDI_ASSERT(0);
18738 return WDI_STATUS_E_FAILURE;
18739 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018740
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018741 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18742
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018744 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018745 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18746
18747 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18748 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18749
18750 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18751 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018752 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018753 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18754 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18755 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018758 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018759 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18760 }
18761 wdiTriggerBARspCandidate++;
18762 halBaCandidate++;
18763 }
18764 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018765 else
18766 {
18767 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18768
18769 if(NULL == wdiTriggerBARsp)
18770 {
18771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018772 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018773 pWDICtx, pEventData, pEventData->pEventData);
18774 WDI_ASSERT(0);
18775 return WDI_STATUS_E_FAILURE;
18776 }
18777
18778 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18779
18780 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018781
18782 /*Notify UMAC*/
18783 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18784
18785 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018786 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018787}/*WDI_ProcessAddSessionBARsp*/
18788
18789/**
18790 @brief Process Update Beacon Params 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_ProcessUpdateBeaconParamsRsp
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_Status wdiStatus;
18807 eHalStatus halStatus;
18808 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18810
18811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018812 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018813 -------------------------------------------------------------------------*/
18814 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18815 ( NULL == pEventData->pEventData))
18816 {
18817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 }
18822
18823 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18824
18825 /*-------------------------------------------------------------------------
18826 Extract response and send it to UMAC
18827 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018828 wpalMemoryCopy( &halStatus,
18829 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018830 sizeof(halStatus));
18831
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018833
18834 /*Notify UMAC*/
18835 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18836
Jeff Johnsone7245742012-09-05 17:12:55 -070018837 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018838}/*WDI_ProcessUpdateBeaconParamsRsp*/
18839
18840/**
18841 @brief Process Send Beacon template Rsp function (called when a response
18842 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018843
18844 @param pWDICtx: pointer to the WLAN DAL context
18845 pEventData: pointer to the event information structure
18846
Jeff Johnson295189b2012-06-20 16:38:30 -070018847 @see
18848 @return Result of the function call
18849*/
18850WDI_Status
18851WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018852(
Jeff Johnson295189b2012-06-20 16:38:30 -070018853 WDI_ControlBlockType* pWDICtx,
18854 WDI_EventInfoType* pEventData
18855)
18856{
18857 WDI_Status wdiStatus;
18858 eHalStatus halStatus;
18859 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18861
18862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018863 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018864 -------------------------------------------------------------------------*/
18865 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18866 ( NULL == pEventData->pEventData))
18867 {
18868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018869 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018872 }
18873
18874 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18875
18876 /*-------------------------------------------------------------------------
18877 Extract response and send it to UMAC
18878 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018879 wpalMemoryCopy( &halStatus,
18880 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018881 sizeof(halStatus));
18882
Jeff Johnsone7245742012-09-05 17:12:55 -070018883 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018884
18885 /*Notify UMAC*/
18886 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18887
Jeff Johnsone7245742012-09-05 17:12:55 -070018888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018889}/*WDI_ProcessSendBeaconParamsRsp*/
18890
Jeff Johnsone7245742012-09-05 17:12:55 -070018891
Jeff Johnson295189b2012-06-20 16:38:30 -070018892/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018893 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018895
18896 @param pWDICtx: pointer to the WLAN DAL context
18897 pEventData: pointer to the event information structure
18898
Jeff Johnson295189b2012-06-20 16:38:30 -070018899 @see
18900 @return Result of the function call
18901*/
18902WDI_Status
18903WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018904(
Jeff Johnson295189b2012-06-20 16:38:30 -070018905 WDI_ControlBlockType* pWDICtx,
18906 WDI_EventInfoType* pEventData
18907)
18908{
18909 WDI_Status wdiStatus;
18910 eHalStatus halStatus;
18911 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18913
18914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 -------------------------------------------------------------------------*/
18917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18918 ( NULL == pEventData->pEventData))
18919 {
18920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018924 }
18925
18926 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18927
18928 /*-------------------------------------------------------------------------
18929 Extract response and send it to UMAC
18930 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018931 wpalMemoryCopy( &halStatus,
18932 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 sizeof(halStatus));
18934
Jeff Johnsone7245742012-09-05 17:12:55 -070018935 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018936
18937 /*Notify UMAC*/
18938 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18939
Jeff Johnsone7245742012-09-05 17:12:55 -070018940 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018941}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18942
18943 /**
18944 @brief Process Set Max Tx Power Rsp function (called when a response
18945 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018946
18947 @param pWDICtx: pointer to the WLAN DAL context
18948 pEventData: pointer to the event information structure
18949
Jeff Johnson295189b2012-06-20 16:38:30 -070018950 @see
18951 @return Result of the function call
18952*/
18953WDI_Status
18954WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018955(
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 WDI_ControlBlockType* pWDICtx,
18957 WDI_EventInfoType* pEventData
18958)
18959{
18960 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018961
Jeff Johnson295189b2012-06-20 16:38:30 -070018962 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018963
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18966
18967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 -------------------------------------------------------------------------*/
18970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18971 ( NULL == pEventData->pEventData))
18972 {
18973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018974 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 }
18978
18979 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18980
18981 /*-------------------------------------------------------------------------
18982 Extract response and send it to UMAC
18983 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018984 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18985 pEventData->pEventData,
18986 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018987
18988 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18989 {
18990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18991 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 }
18994
Jeff Johnsone7245742012-09-05 17:12:55 -070018995 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018996 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018997 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018998
18999 /*Notify UMAC*/
19000 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19001
Jeff Johnsone7245742012-09-05 17:12:55 -070019002 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019003}
19004
schang86c22c42013-03-13 18:41:24 -070019005 /**
19006 @brief Process Set Tx Power Rsp function (called when a response
19007 is being received over the bus from HAL)
19008
19009 @param pWDICtx: pointer to the WLAN DAL context
19010 pEventData: pointer to the event information structure
19011
19012 @see
19013 @return Result of the function call
19014*/
19015WDI_Status
19016WDI_ProcessSetTxPowerRsp
19017(
19018 WDI_ControlBlockType* pWDICtx,
19019 WDI_EventInfoType* pEventData
19020)
19021{
19022 tSetTxPwrRspMsg halTxpowerrsp;
19023 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19024 WDA_SetTxPowerRspCb wdiReqStatusCb;
19025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19026
19027 /*-------------------------------------------------------------------------
19028 Sanity check
19029 -------------------------------------------------------------------------*/
19030 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19031 ( NULL == pEventData->pEventData))
19032 {
19033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19034 "%s: Invalid parameters", __func__);
19035 WDI_ASSERT(0);
19036 return WDI_STATUS_E_FAILURE;
19037 }
19038
19039 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19040
19041 /*-------------------------------------------------------------------------
19042 Extract response and send it to UMAC
19043 -------------------------------------------------------------------------*/
19044 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19045 pEventData->pEventData,
19046 sizeof(halTxpowerrsp.setTxPwrRspParams));
19047
19048 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19049 {
19050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19051 "Error status returned in Set Tx Power Response ");
19052 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19053 return WDI_STATUS_E_FAILURE;
19054 }
19055
19056 wdiSetTxPowerRspMsg.wdiStatus =
19057 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19058
19059 /*Notify UMAC*/
19060 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19061
19062 return WDI_STATUS_SUCCESS;
19063}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019064
19065/**
19066 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19067 is being received over the bus from HAL)
19068
19069 @param pWDICtx: pointer to the WLAN DAL context
19070 pEventData: pointer to the event information structure
19071
19072 @see
19073 @return Result of the function call
19074*/
19075WDI_Status
19076WDI_ProcessSetMaxTxPowerPerBandRsp
19077(
19078 WDI_ControlBlockType* pWDICtx,
19079 WDI_EventInfoType* pEventData
19080)
19081{
19082 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19083 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19084 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19086
19087 /*-------------------------------------------------------------------------
19088 Sanity check
19089 -------------------------------------------------------------------------*/
19090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19091 ( NULL == pEventData->pEventData))
19092 {
19093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19094 "%s: Invalid parameters", __func__);
19095 WDI_ASSERT(0);
19096 return WDI_STATUS_E_FAILURE;
19097 }
19098
19099 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19100
19101 /*-------------------------------------------------------------------------
19102 Extract response and send it to UMAC
19103 -------------------------------------------------------------------------*/
19104 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19105 pEventData->pEventData,
19106 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19107
19108 if (eHAL_STATUS_SUCCESS !=
19109 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19110 {
19111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19112 "Error status returned in Set Max Tx Power Per Band Response");
19113 return WDI_STATUS_E_FAILURE;
19114 }
19115
19116 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19117 WDI_HAL_2_WDI_STATUS(
19118 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19119
19120 /* Notify UMAC */
19121 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19122
19123 return WDI_STATUS_SUCCESS;
19124}
19125
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019126#ifdef FEATURE_WLAN_TDLS
19127/**
19128 @brief Process TDLS Link Establish Rsp function (called
19129 when a response is being received over the bus from HAL)
19130
19131 @param pWDICtx: pointer to the WLAN DAL context
19132 pEventData: pointer to the event information structure
19133
19134 @see
19135 @return Result of the function call
19136*/
19137WDI_Status
19138WDI_ProcessLinkEstablishReqRsp
19139(
19140 WDI_ControlBlockType* pWDICtx,
19141 WDI_EventInfoType* pEventData
19142)
19143{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019144 eHalStatus halStatus;
19145 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019146 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19147 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19148
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19150
19151 /*-------------------------------------------------------------------------
19152 Sanity check
19153 -------------------------------------------------------------------------*/
19154 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19155 ( NULL == pEventData->pEventData))
19156 {
19157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19158 "%s: Invalid parameters", __func__);
19159 WDI_ASSERT(0);
19160 return WDI_STATUS_E_FAILURE;
19161 }
19162
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019163 /*-------------------------------------------------------------------------
19164 Extract indication and send it to UMAC
19165 -------------------------------------------------------------------------*/
19166 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19167 pEventData->pEventData,
19168 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19169
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019170 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19171
19172 /*-------------------------------------------------------------------------
19173 Extract response and send it to UMAC
19174 -------------------------------------------------------------------------*/
19175 wpalMemoryCopy( &halStatus,
19176 pEventData->pEventData,
19177 sizeof(halStatus));
19178
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019179 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19180 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019181
19182 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019183 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019184
19185 return WDI_STATUS_SUCCESS;
19186}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019187
19188
19189
19190/**
19191 @brief Process TDLS Chan switch Rsp function (called
19192 when a response is being received over the bus from HAL)
19193
19194 @param pWDICtx: pointer to the WLAN DAL context
19195 pEventData: pointer to the event information structure
19196
19197 @see
19198 @return Result of the function call
19199*/
19200WDI_Status
19201WDI_ProcessChanSwitchReqRsp
19202(
19203 WDI_ControlBlockType* pWDICtx,
19204 WDI_EventInfoType* pEventData
19205)
19206{
19207 eHalStatus halStatus;
19208 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19209 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19210 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19211
19212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19213
19214 /*-------------------------------------------------------------------------
19215 Sanity check
19216 -------------------------------------------------------------------------*/
19217 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19218 ( NULL == pEventData->pEventData))
19219 {
19220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19221 "%s: Invalid parameters", __func__);
19222 WDI_ASSERT(0);
19223 return WDI_STATUS_E_FAILURE;
19224 }
19225
19226 /*-------------------------------------------------------------------------
19227 Extract indication and send it to UMAC
19228 -------------------------------------------------------------------------*/
19229 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19230 pEventData->pEventData,
19231 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19232
19233 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19234
19235 /*-------------------------------------------------------------------------
19236 Extract response and send it to UMAC
19237 -------------------------------------------------------------------------*/
19238 wpalMemoryCopy( &halStatus,
19239 pEventData->pEventData,
19240 sizeof(halStatus));
19241
19242 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19243 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19244
19245 /*Notify UMAC*/
19246 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19247
19248 return WDI_STATUS_SUCCESS;
19249}/*WDI_ProcessChanSwitchReqRsp*/
19250
19251
19252
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019253#endif
schang86c22c42013-03-13 18:41:24 -070019254
Jeff Johnson295189b2012-06-20 16:38:30 -070019255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019256 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019257 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019258
19259 @param pWDICtx: pointer to the WLAN DAL context
19260 pEventData: pointer to the event information structure
19261
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 @see
19263 @return Result of the function call
19264*/
19265WDI_Status
19266WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019267(
Jeff Johnson295189b2012-06-20 16:38:30 -070019268 WDI_ControlBlockType* pWDICtx,
19269 WDI_EventInfoType* pEventData
19270)
19271{
19272 WDI_Status wdiStatus;
19273 eHalStatus halStatus;
19274 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19276
19277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019279 -------------------------------------------------------------------------*/
19280 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19281 ( NULL == pEventData->pEventData))
19282 {
19283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 }
19288
19289 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19290
19291 /*-------------------------------------------------------------------------
19292 Extract response and send it to UMAC
19293 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019294 wpalMemoryCopy( &halStatus,
19295 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 sizeof(halStatus));
19297
Jeff Johnsone7245742012-09-05 17:12:55 -070019298 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019299
19300 /*Notify UMAC*/
19301 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19302
Jeff Johnsone7245742012-09-05 17:12:55 -070019303 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019304}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019306 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019307 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019308
19309 @param pWDICtx: pointer to the WLAN DAL context
19310 pEventData: pointer to the event information structure
19311
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 @see
19313 @return Result of the function call
19314*/
19315WDI_Status
19316WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019317(
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 WDI_ControlBlockType* pWDICtx,
19319 WDI_EventInfoType* pEventData
19320)
19321{
19322 WDI_Status wdiStatus;
19323 eHalStatus halStatus;
19324 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019325 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19327
19328 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019329 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019330 -------------------------------------------------------------------------*/
19331 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19332 ( NULL == pEventData->pEventData))
19333 {
19334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 }
19339
19340 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19341
19342 /*-------------------------------------------------------------------------
19343 Extract response and send it to UMAC
19344 -------------------------------------------------------------------------*/
19345 halStatus = *((eHalStatus*)pEventData->pEventData);
19346
Jeff Johnsone7245742012-09-05 17:12:55 -070019347 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019348
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019349 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19350 * Other module states are taken care by PMC.
19351 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19352 */
19353 if (wdiStatus != WDI_STATUS_SUCCESS) {
19354
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19356 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19357 halStatus);
19358 /* Call Back is not required as we are putting the DXE in FULL
19359 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019360 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19361
19362 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019364 "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 -080019365 WDI_ASSERT(0);
19366 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019367 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 /*Notify UMAC*/
19369 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19370
Jeff Johnsone7245742012-09-05 17:12:55 -070019371 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019372}/*WDI_ProcessEnterImpsRsp*/
19373
19374/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019375 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019377
19378 @param pWDICtx: pointer to the WLAN DAL context
19379 pEventData: pointer to the event information structure
19380
Jeff Johnson295189b2012-06-20 16:38:30 -070019381 @see
19382 @return Result of the function call
19383*/
19384WDI_Status
19385WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019386(
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 WDI_ControlBlockType* pWDICtx,
19388 WDI_EventInfoType* pEventData
19389)
19390{
19391 WDI_Status wdiStatus;
19392 eHalStatus halStatus;
19393 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019394 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19396
19397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 -------------------------------------------------------------------------*/
19400 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19401 ( NULL == pEventData->pEventData))
19402 {
19403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 }
19408
19409 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19410
19411 /*-------------------------------------------------------------------------
19412 Extract response and send it to UMAC
19413 -------------------------------------------------------------------------*/
19414 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019415 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019416
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019417 if (halStatus != eHAL_STATUS_SUCCESS)
19418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19419 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19420
Jeff Johnson295189b2012-06-20 16:38:30 -070019421 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019422 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19423 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19424 {
19425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019426 "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 -080019427 WDI_ASSERT(0);
19428 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019429 /*Notify UMAC*/
19430 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19431
Jeff Johnsone7245742012-09-05 17:12:55 -070019432 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019433}/*WDI_ProcessExitImpsRsp*/
19434
19435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019436 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019437 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019438
19439 @param pWDICtx: pointer to the WLAN DAL context
19440 pEventData: pointer to the event information structure
19441
Jeff Johnson295189b2012-06-20 16:38:30 -070019442 @see
19443 @return Result of the function call
19444*/
19445WDI_Status
19446WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019447(
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 WDI_ControlBlockType* pWDICtx,
19449 WDI_EventInfoType* pEventData
19450)
19451{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019452 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19453 tHalEnterBmpsRspParams halEnterBmpsRsp;
19454 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19455 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019456 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19458
19459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019461 -------------------------------------------------------------------------*/
19462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19463 ( NULL == pEventData->pEventData))
19464 {
19465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 }
19470
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019472 Extract response and send it to UMAC
19473 -------------------------------------------------------------------------*/
19474 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19475 {
19476 wpalMemoryCopy( &halEnterBmpsRsp,
19477 pEventData->pEventData,
19478 sizeof(halEnterBmpsRsp));
19479
19480 //Used to print debug message
19481 halStatus = halEnterBmpsRsp.status;
19482 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19483 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19484 }
19485 else
19486 {
19487 halStatus = *((eHalStatus*)pEventData->pEventData);
19488 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19489 }
19490
19491 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019492
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019493 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19494 * Other module states are taken care by PMC.
19495 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19496 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019497 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19498 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019499
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019501 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19502 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019503 /* Call Back is not required as we are putting the DXE in FULL
19504 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019505 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19506 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19507 {
19508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019509 "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 -080019510 WDI_ASSERT(0);
19511 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019512 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019513 }
19514
Jeff Johnson295189b2012-06-20 16:38:30 -070019515 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019516 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019517
Jeff Johnsone7245742012-09-05 17:12:55 -070019518 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019519}/*WDI_ProcessEnterBmpsRsp*/
19520
19521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019522 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019523 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019524
19525 @param pWDICtx: pointer to the WLAN DAL context
19526 pEventData: pointer to the event information structure
19527
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 @see
19529 @return Result of the function call
19530*/
19531WDI_Status
19532WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019533(
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 WDI_ControlBlockType* pWDICtx,
19535 WDI_EventInfoType* pEventData
19536)
19537{
Jeff Johnson295189b2012-06-20 16:38:30 -070019538 eHalStatus halStatus;
19539 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019540 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019541 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19542 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19544
19545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 -------------------------------------------------------------------------*/
19548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19549 ( NULL == pEventData->pEventData))
19550 {
19551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019555 }
19556
19557 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19558
19559 /*-------------------------------------------------------------------------
19560 Extract response and send it to UMAC
19561 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019562
19563 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19564 {
19565 wpalMemoryCopy( &halExitBmpsRsp,
19566 pEventData->pEventData,
19567 sizeof(halExitBmpsRsp));
19568
19569 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19570 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19571 }
19572 else
19573 {
19574 halStatus = *((eHalStatus*)pEventData->pEventData);
19575 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19576 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019577
19578 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019579 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19580 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19581 {
19582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019583 "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 -080019584 WDI_ASSERT(0);
19585 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019586 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19587
19588 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019589 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019590
Jeff Johnsone7245742012-09-05 17:12:55 -070019591 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019592}/*WDI_ProcessExitBmpsRsp*/
19593
19594/**
19595 @brief Process Enter UAPSD Rsp function (called when a response
19596 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019597
19598 @param pWDICtx: pointer to the WLAN DAL context
19599 pEventData: pointer to the event information structure
19600
Jeff Johnson295189b2012-06-20 16:38:30 -070019601 @see
19602 @return Result of the function call
19603*/
19604WDI_Status
19605WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019606(
Jeff Johnson295189b2012-06-20 16:38:30 -070019607 WDI_ControlBlockType* pWDICtx,
19608 WDI_EventInfoType* pEventData
19609)
19610{
Jeff Johnson295189b2012-06-20 16:38:30 -070019611 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019612 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019613 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019614 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19615
Jeff Johnson295189b2012-06-20 16:38:30 -070019616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19617
19618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019620 -------------------------------------------------------------------------*/
19621 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19622 ( NULL == pEventData->pEventData))
19623 {
19624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019628 }
19629
19630 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19631
19632 /*-------------------------------------------------------------------------
19633 Extract response and send it to UMAC
19634 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019635 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19636 {
19637 wpalMemoryCopy( &halEnterUapsdRsp,
19638 pEventData->pEventData,
19639 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019640
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019641 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19642 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19643 }
19644 else
19645 {
19646 halStatus = *((eHalStatus*)pEventData->pEventData);
19647 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19648 }
19649
19650 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 {
19652 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19653 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19654 // the traffic to decide when to suspend the trigger frames when there is no traffic
19655 // activity on the trigger enabled ACs
19656 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19657
19658#ifdef WLAN_PERF
19659 // Increment the BD signature to refresh the fast path BD utilization
19660 pWDICtx->uBdSigSerialNum++;
19661#endif
19662 }
19663
19664 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019665 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019666
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019668}/*WDI_ProcessEnterUapsdRsp*/
19669
19670/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019671 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019672 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019673
19674 @param pWDICtx: pointer to the WLAN DAL context
19675 pEventData: pointer to the event information structure
19676
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 @see
19678 @return Result of the function call
19679*/
19680WDI_Status
19681WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019682(
Jeff Johnson295189b2012-06-20 16:38:30 -070019683 WDI_ControlBlockType* pWDICtx,
19684 WDI_EventInfoType* pEventData
19685)
19686{
Jeff Johnson295189b2012-06-20 16:38:30 -070019687 eHalStatus halStatus;
19688 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019689 tHalExitUapsdRspParams halExitUapsdRsp;
19690 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19692
19693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019695 -------------------------------------------------------------------------*/
19696 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19697 ( NULL == pEventData->pEventData))
19698 {
19699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 }
19704
19705 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19706
19707 /*-------------------------------------------------------------------------
19708 Extract response and send it to UMAC
19709 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019710 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19711 {
19712 wpalMemoryCopy( &halExitUapsdRsp,
19713 pEventData->pEventData,
19714 sizeof(halExitUapsdRsp));
19715
19716 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19717 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19718 }
19719 else
19720 {
19721 halStatus = *((eHalStatus*)pEventData->pEventData);
19722 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19723 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19725 // directly instead of the FW WQ.
19726 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19727
19728#ifdef WLAN_PERF
19729 // Increment the BD signature to refresh the fast path BD utilization
19730 pWDICtx->uBdSigSerialNum++;
19731#endif
19732
19733 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019734 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019735
Jeff Johnsone7245742012-09-05 17:12:55 -070019736 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019737}/*WDI_ProcessExitUapsdRsp*/
19738
19739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019741 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019742
19743 @param pWDICtx: pointer to the WLAN DAL context
19744 pEventData: pointer to the event information structure
19745
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 @see
19747 @return Result of the function call
19748*/
19749WDI_Status
19750WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019751(
Jeff Johnson295189b2012-06-20 16:38:30 -070019752 WDI_ControlBlockType* pWDICtx,
19753 WDI_EventInfoType* pEventData
19754)
19755{
19756 WDI_Status wdiStatus;
19757 eHalStatus halStatus;
19758 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19760
19761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019763 -------------------------------------------------------------------------*/
19764 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19765 ( NULL == pEventData->pEventData))
19766 {
19767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 }
19772
19773 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19774
19775 /*-------------------------------------------------------------------------
19776 Extract response and send it to UMAC
19777 -------------------------------------------------------------------------*/
19778 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019779 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019780
19781 /*Notify UMAC*/
19782 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19783
Jeff Johnsone7245742012-09-05 17:12:55 -070019784 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019785}/*WDI_ProcessSetUapsdAcParamsRsp*/
19786
19787/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019788 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019790
19791 @param pWDICtx: pointer to the WLAN DAL context
19792 pEventData: pointer to the event information structure
19793
Jeff Johnson295189b2012-06-20 16:38:30 -070019794 @see
19795 @return Result of the function call
19796*/
19797WDI_Status
19798WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019799(
Jeff Johnson295189b2012-06-20 16:38:30 -070019800 WDI_ControlBlockType* pWDICtx,
19801 WDI_EventInfoType* pEventData
19802)
19803{
19804 WDI_Status wdiStatus;
19805 eHalStatus halStatus;
19806 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19808
19809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019811 -------------------------------------------------------------------------*/
19812 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19813 ( NULL == pEventData->pEventData))
19814 {
19815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019819 }
19820
19821 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19822
19823 /*-------------------------------------------------------------------------
19824 Extract response and send it to UMAC
19825 -------------------------------------------------------------------------*/
19826 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019827 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019828
19829 /*Notify UMAC*/
19830 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19831
Jeff Johnsone7245742012-09-05 17:12:55 -070019832 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019833}/*WDI_ProcessUpdateUapsdParamsRsp*/
19834
19835/**
19836 @brief Process Configure RXP filter Rsp function (called when a
19837 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019838
19839 @param pWDICtx: pointer to the WLAN DAL context
19840 pEventData: pointer to the event information structure
19841
Jeff Johnson295189b2012-06-20 16:38:30 -070019842 @see
19843 @return Result of the function call
19844*/
19845WDI_Status
19846WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019847(
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 WDI_ControlBlockType* pWDICtx,
19849 WDI_EventInfoType* pEventData
19850)
19851{
19852 WDI_Status wdiStatus;
19853 eHalStatus halStatus;
19854 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19856
19857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019858 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 -------------------------------------------------------------------------*/
19860 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19861 ( NULL == pEventData->pEventData))
19862 {
19863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019867 }
19868
19869 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19870
19871 /*-------------------------------------------------------------------------
19872 Extract response and send it to UMAC
19873 -------------------------------------------------------------------------*/
19874 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019875 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019876
19877 /*Notify UMAC*/
19878 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19879
Jeff Johnsone7245742012-09-05 17:12:55 -070019880 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019881}/*WDI_ProcessConfigureRxpFilterRsp*/
19882
19883/**
19884 @brief Process Set beacon filter Rsp function (called when a
19885 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019886
19887 @param pWDICtx: pointer to the WLAN DAL context
19888 pEventData: pointer to the event information structure
19889
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 @see
19891 @return Result of the function call
19892*/
19893WDI_Status
19894WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019895(
Jeff Johnson295189b2012-06-20 16:38:30 -070019896 WDI_ControlBlockType* pWDICtx,
19897 WDI_EventInfoType* pEventData
19898)
19899{
19900 WDI_Status wdiStatus;
19901 eHalStatus halStatus;
19902 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19904
19905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 -------------------------------------------------------------------------*/
19908 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19909 ( NULL == pEventData->pEventData))
19910 {
19911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 }
19916
19917 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19918
19919 /*-------------------------------------------------------------------------
19920 Extract response and send it to UMAC
19921 -------------------------------------------------------------------------*/
19922 halStatus = *((eHalStatus*)pEventData->pEventData);
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 wdiBeaconFilterCb( 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_ProcessSetBeaconFilterRsp*/
19930
19931/**
19932 @brief Process remove beacon filter Rsp function (called when a
19933 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019934
19935 @param pWDICtx: pointer to the WLAN DAL context
19936 pEventData: pointer to the event information structure
19937
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 @see
19939 @return Result of the function call
19940*/
19941WDI_Status
19942WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019943(
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 WDI_ControlBlockType* pWDICtx,
19945 WDI_EventInfoType* pEventData
19946)
19947{
19948 WDI_Status wdiStatus;
19949 eHalStatus halStatus;
19950 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19966
19967 /*-------------------------------------------------------------------------
19968 Extract response and send it to UMAC
19969 -------------------------------------------------------------------------*/
19970 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019971 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019972
19973 /*Notify UMAC*/
19974 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19975
Jeff Johnsone7245742012-09-05 17:12:55 -070019976 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019977}/*WDI_ProcessRemBeaconFilterRsp*/
19978
19979/**
19980 @brief Process set RSSI thresholds Rsp function (called when a
19981 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019982
19983 @param pWDICtx: pointer to the WLAN DAL context
19984 pEventData: pointer to the event information structure
19985
Jeff Johnson295189b2012-06-20 16:38:30 -070019986 @see
19987 @return Result of the function call
19988*/
19989WDI_Status
19990WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019991(
Jeff Johnson295189b2012-06-20 16:38:30 -070019992 WDI_ControlBlockType* pWDICtx,
19993 WDI_EventInfoType* pEventData
19994)
19995{
19996 WDI_Status wdiStatus;
19997 eHalStatus halStatus;
19998 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20000
20001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 -------------------------------------------------------------------------*/
20004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20005 ( NULL == pEventData->pEventData))
20006 {
20007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020008 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020011 }
20012
20013 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20014
20015 /*-------------------------------------------------------------------------
20016 Extract response and send it to UMAC
20017 -------------------------------------------------------------------------*/
20018 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020020
20021 /*Notify UMAC*/
20022 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20023
Jeff Johnsone7245742012-09-05 17:12:55 -070020024 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020025}/*WDI_ProcessSetRSSIThresoldsRsp*/
20026
20027/**
20028 @brief Process host offload Rsp function (called when a
20029 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020030
20031 @param pWDICtx: pointer to the WLAN DAL context
20032 pEventData: pointer to the event information structure
20033
Jeff Johnson295189b2012-06-20 16:38:30 -070020034 @see
20035 @return Result of the function call
20036*/
20037WDI_Status
20038WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020039(
Jeff Johnson295189b2012-06-20 16:38:30 -070020040 WDI_ControlBlockType* pWDICtx,
20041 WDI_EventInfoType* pEventData
20042)
20043{
20044 WDI_Status wdiStatus;
20045 eHalStatus halStatus;
20046 WDI_HostOffloadCb wdiHostOffloadCb;
20047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20048
20049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020051 -------------------------------------------------------------------------*/
20052 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20053 ( NULL == pEventData->pEventData))
20054 {
20055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020056 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020057 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020059 }
20060
20061 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20062
20063 /*-------------------------------------------------------------------------
20064 Extract response and send it to UMAC
20065 -------------------------------------------------------------------------*/
20066 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020067 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020068
20069 /*Notify UMAC*/
20070 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20071
Jeff Johnsone7245742012-09-05 17:12:55 -070020072 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020073}/*WDI_ProcessHostOffloadRsp*/
20074
20075/**
20076 @brief Process keep alive Rsp function (called when a
20077 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020078
20079 @param pWDICtx: pointer to the WLAN DAL context
20080 pEventData: pointer to the event information structure
20081
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 @see
20083 @return Result of the function call
20084*/
20085WDI_Status
20086WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020087(
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 WDI_ControlBlockType* pWDICtx,
20089 WDI_EventInfoType* pEventData
20090)
20091{
20092 WDI_Status wdiStatus;
20093 eHalStatus halStatus;
20094 WDI_KeepAliveCb wdiKeepAliveCb;
20095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20097 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20098
20099
20100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020101 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 -------------------------------------------------------------------------*/
20103 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20104 ( NULL == pEventData->pEventData))
20105 {
20106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020110 }
20111
Jeff Johnsone7245742012-09-05 17:12:55 -070020112 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20113
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 /*-------------------------------------------------------------------------
20115 Extract response and send it to UMAC
20116 -------------------------------------------------------------------------*/
20117 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020118 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020119
20120 /*Notify UMAC*/
20121 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20122
Jeff Johnsone7245742012-09-05 17:12:55 -070020123 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020124}/*WDI_ProcessKeepAliveRsp*/
20125
20126/**
20127 @brief Process wowl add ptrn Rsp function (called when a
20128 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020129
20130 @param pWDICtx: pointer to the WLAN DAL context
20131 pEventData: pointer to the event information structure
20132
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 @see
20134 @return Result of the function call
20135*/
20136WDI_Status
20137WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020138(
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 WDI_ControlBlockType* pWDICtx,
20140 WDI_EventInfoType* pEventData
20141)
20142{
Jeff Johnson295189b2012-06-20 16:38:30 -070020143 eHalStatus halStatus;
20144 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020145 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20146 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20147
Jeff Johnson295189b2012-06-20 16:38:30 -070020148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20149
20150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020152 -------------------------------------------------------------------------*/
20153 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20154 ( NULL == pEventData->pEventData))
20155 {
20156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020160 }
20161
20162 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20163
20164 /*-------------------------------------------------------------------------
20165 Extract response and send it to UMAC
20166 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020167 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20168 {
20169 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20170 pEventData->pEventData,
20171 sizeof(halAddWowlBcastPtrRsp));
20172
20173 wdiWowlAddBcPtrRsp.wdiStatus =
20174 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20175 }
20176 else
20177 {
20178 halStatus = *((eHalStatus*)pEventData->pEventData);
20179 wdiWowlAddBcPtrRsp.wdiStatus =
20180 WDI_HAL_2_WDI_STATUS(halStatus);
20181 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020182
20183 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020184 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020185
Jeff Johnsone7245742012-09-05 17:12:55 -070020186 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020187}/*WDI_ProcessWowlAddBcPtrnRsp*/
20188
20189/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020192
20193 @param pWDICtx: pointer to the WLAN DAL context
20194 pEventData: pointer to the event information structure
20195
Jeff Johnson295189b2012-06-20 16:38:30 -070020196 @see
20197 @return Result of the function call
20198*/
20199WDI_Status
20200WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020201(
Jeff Johnson295189b2012-06-20 16:38:30 -070020202 WDI_ControlBlockType* pWDICtx,
20203 WDI_EventInfoType* pEventData
20204)
20205{
Jeff Johnson295189b2012-06-20 16:38:30 -070020206 eHalStatus halStatus;
20207 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020208 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20209 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20211
20212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020213 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020214 -------------------------------------------------------------------------*/
20215 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20216 ( NULL == pEventData->pEventData))
20217 {
20218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020222 }
20223
20224 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20225
20226 /*-------------------------------------------------------------------------
20227 Extract response and send it to UMAC
20228 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020229 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20230 {
20231 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20232 pEventData->pEventData,
20233 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020234
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020235 wdiWowlDelBcstPtrRsp.wdiStatus =
20236 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20237 }
20238 else
20239 {
20240 halStatus = *((eHalStatus*)pEventData->pEventData);
20241 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20242 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020243 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020244 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020245
Jeff Johnsone7245742012-09-05 17:12:55 -070020246 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020247}/*WDI_ProcessWowlDelBcPtrnRsp*/
20248
20249/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020250 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020252
20253 @param pWDICtx: pointer to the WLAN DAL context
20254 pEventData: pointer to the event information structure
20255
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 @see
20257 @return Result of the function call
20258*/
20259WDI_Status
20260WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020261(
Jeff Johnson295189b2012-06-20 16:38:30 -070020262 WDI_ControlBlockType* pWDICtx,
20263 WDI_EventInfoType* pEventData
20264)
20265{
Jeff Johnson295189b2012-06-20 16:38:30 -070020266 eHalStatus halStatus;
20267 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020268 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20269 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20271
20272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020274 -------------------------------------------------------------------------*/
20275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20276 ( NULL == pEventData->pEventData))
20277 {
20278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020282 }
20283
20284 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20285
20286 /*-------------------------------------------------------------------------
20287 Extract response and send it to UMAC
20288 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020289 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20290 {
20291 wpalMemoryCopy( &halEnterWowlRspParams,
20292 (wpt_uint8*)pEventData->pEventData,
20293 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020294
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020295 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20296 wdiwowlEnterRsp.status =
20297 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20298 }
20299 else
20300 {
20301 halStatus = *((eHalStatus*)pEventData->pEventData);
20302 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20303 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020304 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020305 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020306
Jeff Johnsone7245742012-09-05 17:12:55 -070020307 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020308}/*WDI_ProcessWowlEnterRsp*/
20309
20310/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020311 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020312 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020313
20314 @param pWDICtx: pointer to the WLAN DAL context
20315 pEventData: pointer to the event information structure
20316
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 @see
20318 @return Result of the function call
20319*/
20320WDI_Status
20321WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020322(
Jeff Johnson295189b2012-06-20 16:38:30 -070020323 WDI_ControlBlockType* pWDICtx,
20324 WDI_EventInfoType* pEventData
20325)
20326{
Jeff Johnson295189b2012-06-20 16:38:30 -070020327 eHalStatus halStatus;
20328 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020329 tHalExitWowlRspParams halExitWowlRspParams;
20330 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20331
Jeff Johnson295189b2012-06-20 16:38:30 -070020332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20333
20334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 -------------------------------------------------------------------------*/
20337 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20338 ( NULL == pEventData->pEventData))
20339 {
20340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020341 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020342 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020343 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020344 }
20345
20346 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20347
20348 /*-------------------------------------------------------------------------
20349 Extract response and send it to UMAC
20350 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020351 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20352 {
20353 wpalMemoryCopy( &halExitWowlRspParams,
20354 pEventData->pEventData,
20355 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020356
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020357 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20358 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20359
20360 }
20361 else
20362 {
20363 halStatus = *((eHalStatus*)pEventData->pEventData);
20364 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20365 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020366 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020367 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020368
Jeff Johnsone7245742012-09-05 17:12:55 -070020369 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020370}/*WDI_ProcessWowlExitRsp*/
20371
20372/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020373 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020374 (called when a response is being received over the bus
20375 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020376
20377 @param pWDICtx: pointer to the WLAN DAL context
20378 pEventData: pointer to the event information structure
20379
Jeff Johnson295189b2012-06-20 16:38:30 -070020380 @see
20381 @return Result of the function call
20382*/
20383WDI_Status
20384WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020385(
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 WDI_ControlBlockType* pWDICtx,
20387 WDI_EventInfoType* pEventData
20388)
20389{
20390 WDI_Status wdiStatus;
20391 eHalStatus halStatus;
20392 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20394
20395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 -------------------------------------------------------------------------*/
20398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20399 ( NULL == pEventData->pEventData))
20400 {
20401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020405 }
20406
20407 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20408
20409 /*-------------------------------------------------------------------------
20410 Extract response and send it to UMAC
20411 -------------------------------------------------------------------------*/
20412 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020413 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020414
20415 /*Notify UMAC*/
20416 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20417
Jeff Johnsone7245742012-09-05 17:12:55 -070020418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020419}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20420
20421
20422/**
20423 @brief Process Nv download(called when a response
20424 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020425
20426 @param pWDICtx: pointer to the WLAN DAL context
20427 pEventData: pointer to the event information structure
20428
Jeff Johnson295189b2012-06-20 16:38:30 -070020429 @see
20430 @return Result of the function call
20431*/
20432WDI_Status
20433WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020434(
Jeff Johnson295189b2012-06-20 16:38:30 -070020435 WDI_ControlBlockType* pWDICtx,
20436 WDI_EventInfoType* pEventData
20437)
20438{
20439
20440 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20441 tHalNvImgDownloadRspParams halNvDownloadRsp;
20442 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20443
20444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020445 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020446 -------------------------------------------------------------------------*/
20447 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20448 ( NULL == pEventData->pEventData))
20449 {
20450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020451 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020454 }
20455
20456 /*-------------------------------------------------------------------------
20457 Extract response and send it to UMAC
20458 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020459 wpalMemoryCopy( &halNvDownloadRsp,
20460 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020461 sizeof(halNvDownloadRsp));
20462
20463 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20464
20465 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020466 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20467 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020468 {
20469 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020470 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020471 }
20472 else
20473 {
20474 /*Reset the Nv related global information in WDI context information */
20475 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20476 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20477 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20478 /*call WDA callback function for last fragment */
20479 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20480 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20481 }
20482
Jeff Johnsone7245742012-09-05 17:12:55 -070020483 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020484}
20485#ifdef WLAN_FEATURE_VOWIFI_11R
20486/**
20487 @brief Process Add TSpec Rsp function (called when a response
20488 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020489
20490 @param pWDICtx: pointer to the WLAN DAL context
20491 pEventData: pointer to the event information structure
20492
Jeff Johnson295189b2012-06-20 16:38:30 -070020493 @see
20494 @return Result of the function call
20495*/
20496WDI_Status
20497WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020498(
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 WDI_ControlBlockType* pWDICtx,
20500 WDI_EventInfoType* pEventData
20501)
20502{
20503 WDI_Status wdiStatus;
20504 tAggrAddTsRspParams aggrAddTsRsp;
20505 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20507
20508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020510 -------------------------------------------------------------------------*/
20511 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20512 ( NULL == pEventData->pEventData))
20513 {
20514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020518 }
20519
20520 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20521
20522 /*-------------------------------------------------------------------------
20523 Extract response and send it to UMAC
20524 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020525 wpalMemoryCopy( &aggrAddTsRsp,
20526 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 sizeof(aggrAddTsRsp));
20528
20529 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020530 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020531
20532 /*Notify UMAC*/
20533 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20534
Jeff Johnsone7245742012-09-05 17:12:55 -070020535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020536}/*WDI_ProcessAddTSpecRsp*/
20537#endif /* WLAN_FEATURE_VOWIFI_11R */
20538
20539/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020540 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020542
20543 @param pWDICtx: pointer to the WLAN DAL context
20544 pEventData: pointer to the event information structure
20545
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 @see
20547 @return Result of the function call
20548*/
20549WDI_Status
20550WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020551(
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 WDI_ControlBlockType* pWDICtx,
20553 WDI_EventInfoType* pEventData
20554)
20555{
20556 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20557 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20558 tHalHostResumeRspParams hostResumeRspMsg;
20559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20560
20561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020562 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 -------------------------------------------------------------------------*/
20564 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20565 ( NULL == pEventData->pEventData))
20566 {
20567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 }
20572
20573 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20574
20575 /*-------------------------------------------------------------------------
20576 Extract response and send it to UMAC
20577 -------------------------------------------------------------------------*/
20578
Jeff Johnsone7245742012-09-05 17:12:55 -070020579 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 (wpt_uint8*)pEventData->pEventData,
20581 sizeof(hostResumeRspMsg));
20582
Jeff Johnsone7245742012-09-05 17:12:55 -070020583 wdiResumeRspParams.wdiStatus =
20584 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020585
20586 /*Notify UMAC*/
20587 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20588
20589 return WDI_STATUS_SUCCESS;
20590}
20591
20592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020593 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020594 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020595
20596 @param pWDICtx: pointer to the WLAN DAL context
20597 pEventData: pointer to the event information structure
20598
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 @see
20600 @return Result of the function call
20601*/
20602WDI_Status
20603WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020604(
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 WDI_ControlBlockType* pWDICtx,
20606 WDI_EventInfoType* pEventData
20607)
20608{
20609 WDI_Status wdiStatus;
20610 eHalStatus halStatus;
20611 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20613
20614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020616 -------------------------------------------------------------------------*/
20617 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20618 ( NULL == pEventData->pEventData))
20619 {
20620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020624 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020625
20626 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020627
20628 /*-------------------------------------------------------------------------
20629 Extract response and send it to UMAC
20630 -------------------------------------------------------------------------*/
20631 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020632 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020633
20634 /*Notify UMAC*/
20635 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20636
Jeff Johnsone7245742012-09-05 17:12:55 -070020637 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020638}/*WDI_ProcessSetTxPerTrackingRsp*/
20639
20640/*==========================================================================
20641 Indications from HAL
20642 ==========================================================================*/
20643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020644 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 indication of this kind is being received over the bus
20646 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020647
20648 @param pWDICtx: pointer to the WLAN DAL context
20649 pEventData: pointer to the event information structure
20650
Jeff Johnson295189b2012-06-20 16:38:30 -070020651 @see
20652 @return Result of the function call
20653*/
20654WDI_Status
20655WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020656(
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 WDI_ControlBlockType* pWDICtx,
20658 WDI_EventInfoType* pEventData
20659)
20660{
20661 WDI_LowLevelIndType wdiInd;
20662 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20664
20665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020666 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 -------------------------------------------------------------------------*/
20668 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20669 ( NULL == pEventData->pEventData))
20670 {
20671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 }
20676
20677 /*-------------------------------------------------------------------------
20678 Extract indication and send it to UMAC
20679 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020680 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20681 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 sizeof(tHalRSSINotification));
20683
20684 /*Fill in the indication parameters*/
20685 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20686 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20687 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20688 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20689 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20690 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20691 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20692 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20693 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20694 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20695 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20696 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20697 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020698 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20699 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020700
ltimariub77f24b2013-01-24 18:54:33 -080020701 if ( pWDICtx->wdiLowLevelIndCB )
20702 {
20703 /*Notify UMAC of indication*/
20704 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20705 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020706
20707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020708}/*WDI_ProcessLowRSSIInd*/
20709
20710
20711/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020712 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 an indication of this kind is being received over the
20714 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020715
20716 @param pWDICtx: pointer to the WLAN DAL context
20717 pEventData: pointer to the event information structure
20718
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 @see
20720 @return Result of the function call
20721*/
20722WDI_Status
20723WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020724(
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 WDI_ControlBlockType* pWDICtx,
20726 WDI_EventInfoType* pEventData
20727)
20728{
20729 WDI_Status wdiStatus;
20730 eHalStatus halStatus;
20731 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020732 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20734
20735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020737 -------------------------------------------------------------------------*/
20738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20739 ( NULL == pEventData->pEventData))
20740 {
20741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020745 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020746 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 /*-------------------------------------------------------------------------
20748 Extract indication and send it to UMAC
20749 -------------------------------------------------------------------------*/
20750 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20751 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020752 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020753
20754 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020756 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20757 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020758 if ( pWDICtx->wdiLowLevelIndCB )
20759 {
20760 /*Notify UMAC*/
20761 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20762 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020763
20764 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020765}/*WDI_ProcessMissedBeaconInd*/
20766
20767
20768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020769 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020770 an indication of this kind is being received over the
20771 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020772
20773 @param pWDICtx: pointer to the WLAN DAL context
20774 pEventData: pointer to the event information structure
20775
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 @see
20777 @return Result of the function call
20778*/
20779WDI_Status
20780WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020781(
Jeff Johnson295189b2012-06-20 16:38:30 -070020782 WDI_ControlBlockType* pWDICtx,
20783 WDI_EventInfoType* pEventData
20784)
20785{
20786 WDI_Status wdiStatus;
20787 eHalStatus halStatus;
20788 WDI_LowLevelIndType wdiInd;
20789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20790
20791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 -------------------------------------------------------------------------*/
20794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20795 ( NULL == pEventData->pEventData))
20796 {
20797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020801 }
20802
20803 /*-------------------------------------------------------------------------
20804 Extract indication and send it to UMAC
20805 -------------------------------------------------------------------------*/
20806 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20807 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020808 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020809
20810 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020811 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 /* ! TO DO - fill in from HAL struct:
20813 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20814
ltimariub77f24b2013-01-24 18:54:33 -080020815 if ( pWDICtx->wdiLowLevelIndCB )
20816 {
20817 /*Notify UMAC*/
20818 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20819 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020820
20821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020822}/*WDI_ProcessUnkAddrFrameInd*/
20823
20824
20825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020826 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 indication of this kind is being received over the bus
20828 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020829
20830 @param pWDICtx: pointer to the WLAN DAL context
20831 pEventData: pointer to the event information structure
20832
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 @see
20834 @return Result of the function call
20835*/
20836WDI_Status
20837WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020838(
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 WDI_ControlBlockType* pWDICtx,
20840 WDI_EventInfoType* pEventData
20841)
20842{
20843 WDI_LowLevelIndType wdiInd;
20844 tpSirMicFailureInd pHalMicFailureInd;
20845
20846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20847
20848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020850 -------------------------------------------------------------------------*/
20851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20852 ( NULL == pEventData->pEventData))
20853 {
20854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020859
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20861 /*-------------------------------------------------------------------------
20862 Extract indication and send it to UMAC
20863 -------------------------------------------------------------------------*/
20864
20865 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020866 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020867 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20868 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20869 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20870 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20871 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20872 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20873 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20874 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020877 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020879 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020880 pHalMicFailureInd->info.keyId;
20881 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20882 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20883 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20884 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020885
20886 if ( pWDICtx->wdiLowLevelIndCB )
20887 {
20888 /*Notify UMAC*/
20889 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20890 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020891
20892 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020893}/*WDI_ProcessMicFailureInd*/
20894
20895
20896/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020897 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020898 an indication of this kind is being received over the
20899 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020900
20901 @param pWDICtx: pointer to the WLAN DAL context
20902 pEventData: pointer to the event information structure
20903
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 @see
20905 @return Result of the function call
20906*/
20907WDI_Status
20908WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020909(
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 WDI_ControlBlockType* pWDICtx,
20911 WDI_EventInfoType* pEventData
20912)
20913{
20914 WDI_Status wdiStatus;
20915 eHalStatus halStatus;
20916 WDI_LowLevelIndType wdiInd;
20917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20918
20919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 -------------------------------------------------------------------------*/
20922 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20923 ( NULL == pEventData->pEventData))
20924 {
20925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 }
20930
20931 /*-------------------------------------------------------------------------
20932 Extract indication and send it to UMAC
20933 -------------------------------------------------------------------------*/
20934
20935 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20936 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020937 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020938
20939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20940 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020941
Jeff Johnson295189b2012-06-20 16:38:30 -070020942 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20944 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020945
ltimariub77f24b2013-01-24 18:54:33 -080020946 if ( pWDICtx->wdiLowLevelIndCB )
20947 {
20948 /*Notify UMAC*/
20949 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20950 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020951
20952 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020953}/*WDI_ProcessFatalErrorInd*/
20954
20955/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020956 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 an indication of this kind is being received over the
20958 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020959
20960 @param pWDICtx: pointer to the WLAN DAL context
20961 pEventData: pointer to the event information structure
20962
Jeff Johnson295189b2012-06-20 16:38:30 -070020963 @see
20964 @return Result of the function call
20965*/
20966WDI_Status
20967WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020968(
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 WDI_ControlBlockType* pWDICtx,
20970 WDI_EventInfoType* pEventData
20971)
20972{
20973 tDeleteStaContextParams halDelSTACtx;
20974 WDI_LowLevelIndType wdiInd;
20975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20976
20977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 -------------------------------------------------------------------------*/
20980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20981 ( NULL == pEventData->pEventData))
20982 {
20983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 }
20988
20989 /*-------------------------------------------------------------------------
20990 Extract indication and send it to UMAC
20991 -------------------------------------------------------------------------*/
20992
20993 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020994 wpalMemoryCopy( &halDelSTACtx,
20995 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 sizeof(halDelSTACtx));
20997
20998 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000
21001 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21002 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21003 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21004 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21005
Jeff Johnsone7245742012-09-05 17:12:55 -070021006 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021008 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021009 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021010 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21011 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021012
ltimariub77f24b2013-01-24 18:54:33 -080021013 if ( pWDICtx->wdiLowLevelIndCB )
21014 {
21015 /*Notify UMAC*/
21016 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21017 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021018
21019 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021020}/*WDI_ProcessDelSTAInd*/
21021
21022/**
21023*@brief Process Coex Indication function (called when
21024 an indication of this kind is being received over the
21025 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021026
21027 @param pWDICtx: pointer to the WLAN DAL context
21028 pEventData: pointer to the event information structure
21029
Jeff Johnson295189b2012-06-20 16:38:30 -070021030 @see
21031 @return Result of the function call
21032*/
21033WDI_Status
21034WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021035(
Jeff Johnson295189b2012-06-20 16:38:30 -070021036 WDI_ControlBlockType* pWDICtx,
21037 WDI_EventInfoType* pEventData
21038)
21039{
21040 WDI_LowLevelIndType wdiInd;
21041 tCoexIndMsg halCoexIndMsg;
21042 wpt_uint32 index;
21043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21044
21045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 -------------------------------------------------------------------------*/
21048 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21049 ( NULL == pEventData->pEventData ))
21050 {
21051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021055 }
21056
21057 /*-------------------------------------------------------------------------
21058 Extract indication and send it to UMAC
21059 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21061 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 sizeof(halCoexIndMsg.coexIndParams) );
21063
21064 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021065 wdiInd.wdiIndicationType = WDI_COEX_IND;
21066 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21068 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 }
21071
21072 // DEBUG
21073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21074 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021075 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21076 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21077 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21078 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21079 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021080
ltimariub77f24b2013-01-24 18:54:33 -080021081 if ( pWDICtx->wdiLowLevelIndCB )
21082 {
21083 /*Notify UMAC*/
21084 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21085 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021086
21087 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021088}/*WDI_ProcessCoexInd*/
21089
21090/**
21091*@brief Process Tx Complete Indication function (called when
21092 an indication of this kind is being received over the
21093 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021094
21095 @param pWDICtx: pointer to the WLAN DAL context
21096 pEventData: pointer to the event information structure
21097
Jeff Johnson295189b2012-06-20 16:38:30 -070021098 @see
21099 @return Result of the function call
21100*/
21101WDI_Status
21102WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021103(
Jeff Johnson295189b2012-06-20 16:38:30 -070021104 WDI_ControlBlockType* pWDICtx,
21105 WDI_EventInfoType* pEventData
21106)
21107{
21108 WDI_LowLevelIndType wdiInd;
21109 tTxComplIndMsg halTxComplIndMsg;
21110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21111
21112 /*-------------------------------------------------------------------------
21113 Sanity check
21114 -------------------------------------------------------------------------*/
21115 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21116 ( NULL == pEventData->pEventData ))
21117 {
21118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 WDI_ASSERT( 0 );
21121 return WDI_STATUS_E_FAILURE;
21122 }
21123
21124 /*-------------------------------------------------------------------------
21125 Extract indication and send it to UMAC
21126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021127 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21128 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021129 sizeof(halTxComplIndMsg.txComplParams) );
21130
21131 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021132 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
21133 wdiInd.wdiIndicationData.tx_complete_status
21134 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070021135
ltimariub77f24b2013-01-24 18:54:33 -080021136 if ( pWDICtx->wdiLowLevelIndCB )
21137 {
21138 /*Notify UMAC*/
21139 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21140 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021141
21142 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021143}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021144#ifdef FEATURE_WLAN_TDLS
21145/**
21146*@brief Process TDLS Indication function (called when
21147 an indication of this kind is being received over the
21148 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021149
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021150 @param pWDICtx: pointer to the WLAN DAL context
21151 pEventData: pointer to the event information structure
21152
21153 @see
21154 @return Result of the function call
21155*/
21156WDI_Status
21157WDI_ProcessTdlsInd
21158(
21159 WDI_ControlBlockType* pWDICtx,
21160 WDI_EventInfoType* pEventData
21161)
21162{
21163 WDI_LowLevelIndType wdiInd;
21164 tTdlsIndMsg halTdlsIndMsg;
21165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21166
21167 /*-------------------------------------------------------------------------
21168 Sanity check
21169 -------------------------------------------------------------------------*/
21170 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21171 ( NULL == pEventData->pEventData ))
21172 {
21173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21174 "%s: Invalid parameters", __func__);
21175 WDI_ASSERT( 0 );
21176 return WDI_STATUS_E_FAILURE;
21177 }
21178
21179 /*-------------------------------------------------------------------------
21180 Extract indication and send it to UMAC
21181 -------------------------------------------------------------------------*/
21182 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21183 pEventData->pEventData,
21184 sizeof(halTdlsIndMsg.tdlsIndParams) );
21185
21186 /*Fill in the indication parameters*/
21187 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21188
21189 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21190 = halTdlsIndMsg.tdlsIndParams.status;
21191
21192 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21193 = halTdlsIndMsg.tdlsIndParams.staIdx;
21194
21195 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21196 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21197
Atul Mittalbb2aad02014-09-22 19:09:36 +053021198 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21199 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021200 /*Notify UMAC*/
21201 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21202
21203 return WDI_STATUS_SUCCESS;
21204}/*WDI_ProcessTdlsInd*/
21205#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021206/**
Viral Modid86bde22012-12-10 13:09:21 -080021207*@brief Process Noa Start Indication function (called when
21208 an indication of this kind is being received over the
21209 bus from HAL)
21210
21211 @param pWDICtx: pointer to the WLAN DAL context
21212 pEventData: pointer to the event information structure
21213
21214 @see
21215 @return Result of the function call
21216*/
21217WDI_Status
21218WDI_ProcessP2pNoaStartInd
21219(
21220 WDI_ControlBlockType* pWDICtx,
21221 WDI_EventInfoType* pEventData
21222)
21223{
21224 WDI_LowLevelIndType wdiInd;
21225 tNoaStartIndMsg halNoaStartIndMsg;
21226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21227
21228 /*-------------------------------------------------------------------------
21229 Sanity check
21230 -------------------------------------------------------------------------*/
21231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21232 ( NULL == pEventData->pEventData ))
21233 {
21234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21235 "%s: Invalid parameters", __func__);
21236 WDI_ASSERT( 0 );
21237 return WDI_STATUS_E_FAILURE;
21238 }
21239
21240 /*-------------------------------------------------------------------------
21241 Extract indication and send it to UMAC
21242 -------------------------------------------------------------------------*/
21243 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21244 pEventData->pEventData,
21245 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21246
21247 /*Fill in the indication parameters*/
21248 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21249
21250 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21251 = halNoaStartIndMsg.noaStartIndParams.status;
21252
21253 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21254 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21255
21256 /*Notify UMAC*/
21257 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21258
21259 return WDI_STATUS_SUCCESS;
21260}/*WDI_ProcessNoaAttrInd*/
21261
21262/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021263*@brief Process Noa Attr Indication function (called when
21264 an indication of this kind is being received over the
21265 bus from HAL)
21266
21267 @param pWDICtx: pointer to the WLAN DAL context
21268 pEventData: pointer to the event information structure
21269
21270 @see
21271 @return Result of the function call
21272*/
21273WDI_Status
21274WDI_ProcessP2pNoaAttrInd
21275(
21276 WDI_ControlBlockType* pWDICtx,
21277 WDI_EventInfoType* pEventData
21278)
21279{
21280 WDI_LowLevelIndType wdiInd;
21281 tNoaAttrIndMsg halNoaAttrIndMsg;
21282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21283
21284 /*-------------------------------------------------------------------------
21285 Sanity check
21286 -------------------------------------------------------------------------*/
21287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21288 ( NULL == pEventData->pEventData ))
21289 {
21290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 WDI_ASSERT( 0 );
21293 return WDI_STATUS_E_FAILURE;
21294 }
21295
21296 /*-------------------------------------------------------------------------
21297 Extract indication and send it to UMAC
21298 -------------------------------------------------------------------------*/
21299 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21300 pEventData->pEventData,
21301 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21302
21303 /*Fill in the indication parameters*/
21304 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021305
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21307 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021308
Jeff Johnson295189b2012-06-20 16:38:30 -070021309 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21310 = halNoaAttrIndMsg.noaAttrIndParams.index;
21311 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21312 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21313 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21314 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021315
Jeff Johnson295189b2012-06-20 16:38:30 -070021316 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21317 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21318 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21319 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21320 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21321 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21322 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21323 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021324
Jeff Johnson295189b2012-06-20 16:38:30 -070021325 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21326 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21327 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21328 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21329 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21330 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21331 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21332 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21333
ltimariub77f24b2013-01-24 18:54:33 -080021334 if ( pWDICtx->wdiLowLevelIndCB )
21335 {
21336 /*Notify UMAC*/
21337 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21338 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021339
21340 return WDI_STATUS_SUCCESS;
21341}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021342
21343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021344 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021345 an indication of this kind is being received over the
21346 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021347
21348 @param pWDICtx: pointer to the WLAN DAL context
21349 pEventData: pointer to the event information structure
21350
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 @see
21352 @return Result of the function call
21353*/
21354WDI_Status
21355WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021356(
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 WDI_ControlBlockType* pWDICtx,
21358 WDI_EventInfoType* pEventData
21359)
21360{
21361 WDI_LowLevelIndType wdiInd;
21362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021363
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 /*-------------------------------------------------------------------------
21365 Extract indication and send it to UMAC
21366 -------------------------------------------------------------------------*/
21367 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021368 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21369
ltimariub77f24b2013-01-24 18:54:33 -080021370 if ( pWDICtx->wdiLowLevelIndCB )
21371 {
21372 /*Notify UMAC*/
21373 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21374 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021375
Jeff Johnsone7245742012-09-05 17:12:55 -070021376 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021377}/*WDI_ProcessTxPerHitInd*/
21378
Jeff Johnson295189b2012-06-20 16:38:30 -070021379/**
Yue Mab9c86f42013-08-14 15:59:08 -070021380 @brief Process Periodic Tx Pattern Fw Indication function
21381
21382 @param pWDICtx: pointer to the WLAN DAL context
21383 pEventData: pointer to the event information structure
21384
21385 @see
21386 @return Result of the function call
21387*/
21388WDI_Status
21389WDI_ProcessPeriodicTxPtrnFwInd
21390(
21391 WDI_ControlBlockType* pWDICtx,
21392 WDI_EventInfoType* pEventData
21393)
21394{
21395 WDI_LowLevelIndType wdiInd;
21396
21397 /*-------------------------------------------------------------------------
21398 Sanity check
21399 -------------------------------------------------------------------------*/
21400 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21401 (NULL == pEventData->pEventData))
21402 {
21403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21404 "%s: Invalid parameters", __func__);
21405 WDI_ASSERT(0);
21406 return WDI_STATUS_E_FAILURE;
21407 }
21408
21409 /*-------------------------------------------------------------------------
21410 Extract indication and send it to UMAC
21411 -------------------------------------------------------------------------*/
21412 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21413 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21414 sizeof(tHalPeriodicTxPtrnFwInd));
21415
21416 if (pWDICtx->wdiLowLevelIndCB)
21417 {
21418 /*Notify UMAC*/
21419 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21420 }
21421
21422 return WDI_STATUS_SUCCESS;
21423}
21424
21425/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021426 @brief WDI_ProcessFTMCommandReq
21427 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021428
21429 @param pWDICtx: pointer to the WLAN DAL context
21430 pEventData: pointer to the event information structure
21431
Jeff Johnson295189b2012-06-20 16:38:30 -070021432 @see
21433 @return Result of the function call
21434*/
21435WDI_Status
21436WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021437(
Jeff Johnson295189b2012-06-20 16:38:30 -070021438 WDI_ControlBlockType* pWDICtx,
21439 WDI_EventInfoType* pEventData
21440)
21441{
21442 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21443 wpt_uint8 *ftmCommandBuffer = NULL;
21444 wpt_uint16 dataOffset;
21445 wpt_uint16 bufferSize;
21446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 -------------------------------------------------------------------------*/
21449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21450 ( NULL == pEventData->pEventData))
21451
21452 {
21453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021457 }
21458
21459 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21460
21461 /* Get MSG Buffer */
21462 WDI_GetMessageBuffer(pWDICtx,
21463 WDI_FTM_CMD_REQ,
21464 ftmCommandReq->bodyLength,
21465 &ftmCommandBuffer,
21466 &dataOffset,
21467 &bufferSize);
21468
21469 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21470 ftmCommandReq->FTMCommandBody,
21471 ftmCommandReq->bodyLength);
21472
21473 /* Send MSG */
21474 return WDI_SendMsg(pWDICtx,
21475 ftmCommandBuffer,
21476 bufferSize,
21477 pEventData->pCBfnc,
21478 pEventData->pUserData,
21479 WDI_FTM_CMD_RESP);
21480}
21481
21482/**
21483 @brief WDI_ProcessFTMCommandRsp
21484 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021485
21486 @param pWDICtx: pointer to the WLAN DAL context
21487 pEventData: pointer to the event information structure
21488
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 @see
21490 @return Result of the function call
21491*/
21492WDI_Status
21493WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021494(
Jeff Johnson295189b2012-06-20 16:38:30 -070021495 WDI_ControlBlockType* pWDICtx,
21496 WDI_EventInfoType* pEventData
21497)
21498{
21499 WDI_FTMCommandRspCb ftmCMDRspCb;
21500 tProcessPttRspParams *ftmCMDRspData = NULL;
21501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21502
21503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021505 -------------------------------------------------------------------------*/
21506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21507 ( NULL == pEventData->pEventData))
21508 {
21509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021513 }
21514
21515 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21516
21517 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21518
Jeff Johnsone7245742012-09-05 17:12:55 -070021519 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21520 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021521 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21522
21523 /*Notify UMAC*/
21524 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21525
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021527}
Jeff Johnson295189b2012-06-20 16:38:30 -070021528/**
21529 @brief WDI_ProcessHalDumpCmdReq
21530 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021531
21532 @param pWDICtx: pointer to the WLAN DAL context
21533 pEventData: pointer to the event information structure
21534
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 @see
21536 @return Result of the function call
21537*/
21538WDI_Status
21539WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021540(
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 WDI_ControlBlockType* pWDICtx,
21542 WDI_EventInfoType* pEventData
21543)
21544{
21545 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21546 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21547 wpt_uint16 usDataOffset = 0;
21548 wpt_uint16 usSendSize = 0;
21549 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021551
21552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021553 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021554 -------------------------------------------------------------------------*/
21555 if (( NULL == pEventData ) ||
21556 ( NULL == pEventData->pEventData) ||
21557 ( NULL == pEventData->pCBfnc ))
21558 {
21559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 }
21564
21565 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21566 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21567
21568 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021569 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021570 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021571 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021572 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021573 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021574 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021575 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021576 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021577 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021578 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021579
Jeff Johnson295189b2012-06-20 16:38:30 -070021580 /*-----------------------------------------------------------------------
21581 Get message buffer
21582 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021583 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021584 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21585 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021586 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021587 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21588 {
21589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021590 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 }
21595
Jeff Johnsone7245742012-09-05 17:12:55 -070021596 wpalMemoryCopy( pSendBuffer+usDataOffset,
21597 &halDumpCmdReqMsg.dumpCmdReqParams,
21598 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021599
21600 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021601 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021602
21603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021604 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021605 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21607 wdiHALDumpCmdRspCb, pEventData->pUserData,
21608 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021609}
21610
21611/**
21612 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021613 Process hal Dump Command Response from HAL, simply route to HDD
21614
21615 @param pWDICtx: pointer to the WLAN DAL context
21616 pEventData: pointer to the event information structure
21617
Jeff Johnson295189b2012-06-20 16:38:30 -070021618 @see
21619 @return Result of the function call
21620*/
21621WDI_Status
21622WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021623(
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 WDI_ControlBlockType* pWDICtx,
21625 WDI_EventInfoType* pEventData
21626)
21627{
21628 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021629 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021630 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21631
21632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021634 -------------------------------------------------------------------------*/
21635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21636 ( NULL == pEventData->pEventData))
21637 {
21638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 }
21643
Jeff Johnsone7245742012-09-05 17:12:55 -070021644 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021645
21646 /*Initialize the WDI Response structure */
21647 wdiHALDumpCmdRsp.usBufferLen = 0;
21648 wdiHALDumpCmdRsp.pBuffer = NULL;
21649
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021650 wpalMemoryCopy( &halDumpCmdRspParams,
21651 pEventData->pEventData,
21652 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021653
21654 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021655 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021656
21657 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021658 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 {
21660 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021661 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21662 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21663
21664 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21665 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021666 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021668
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 /*Notify UMAC*/
21670 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21671
21672 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21673 {
21674 /* Free the allocated buffer */
21675 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21676 }
21677 return WDI_STATUS_SUCCESS;
21678}
21679
21680/*==========================================================================
21681 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021682
Jeff Johnson295189b2012-06-20 16:38:30 -070021683 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021685==========================================================================*/
21686/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021687 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 when it wishes to send up a notification like the ones
21689 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021690
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021692
21693 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 wctsNotifyCBData: the callback data of the user
21696
Jeff Johnson295189b2012-06-20 16:38:30 -070021697 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021698
21699 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021700*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021701void
Jeff Johnson295189b2012-06-20 16:38:30 -070021702WDI_NotifyMsgCTSCB
21703(
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 WCTS_NotifyEventType wctsEvent,
21706 void* wctsNotifyCBData
21707)
21708{
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21711
21712 if (NULL == pWDICtx )
21713 {
21714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021717 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 }
21719
21720 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21721 {
21722 /* callback presumably occurred after close */
21723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021724 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021725 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021726 }
21727
21728 if ( WCTS_EVENT_OPEN == wctsEvent )
21729 {
21730 /*Flag must be set atomically as it is checked from incoming request
21731 functions*/
21732 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021733 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021734
21735 /*Nothing to do - so try to dequeue any pending request that may have
21736 occurred while we were trying to establish this*/
21737 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021738 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021739 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021740 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 {
21742 /*Flag must be set atomically as it is checked from incoming request
21743 functions*/
21744 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021745 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021746
21747 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021748 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021749 wpalMutexRelease(&pWDICtx->wptMutex);
21750
21751 /*Notify that the Control Channel is closed */
21752 wpalEventSet(&pWDICtx->wctsActionEvent);
21753 }
21754
21755}/*WDI_NotifyMsgCTSCB*/
21756
21757
21758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 when it wishes to send up a packet received over the
21761 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021762
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021764
21765 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021766 pMsg: the packet
21767 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021768 wctsRxMsgCBData: the callback data of the user
21769
Jeff Johnson295189b2012-06-20 16:38:30 -070021770 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021771
21772 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021773*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021774void
21775WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021776(
Jeff Johnsone7245742012-09-05 17:12:55 -070021777 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021778 void* pMsg,
21779 wpt_uint32 uLen,
21780 void* wctsRxMsgCBData
21781)
21782{
Jeff Johnsone7245742012-09-05 17:12:55 -070021783 tHalMsgHeader *pHalMsgHeader;
21784 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21787
21788 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021790 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021791 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021792 ( uLen < sizeof(tHalMsgHeader)))
21793 {
21794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021797 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021798 }
21799
21800 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21801 {
21802 /* callback presumably occurred after close */
21803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021804 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021805 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021806 }
21807
Jeff Johnsone7245742012-09-05 17:12:55 -070021808 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 context - so no serialization is necessary here
21810 ! - revisit this assumption */
21811
21812 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21813
21814 if ( uLen != pHalMsgHeader->msgLen )
21815 {
21816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21817 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021818 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021819 wpalWlanReload();
21820
Jeff Johnsone7245742012-09-05 17:12:55 -070021821 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021822 }
21823
21824 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21825
21826 /*The message itself starts after the header*/
21827 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21828 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21829 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21830 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21831
21832
21833 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21834 {
21835 /*Stop the timer as the response was received */
21836 /*!UT - check for potential race conditions between stop and response */
21837 wpalTimerStop(&pWDICtx->wptResponseTimer);
21838 }
21839 /* Check if we receive a response message which is not expected */
21840 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21841 {
21842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21843 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21844 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021845 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021846 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21847 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021848
21849 if (gWDICb.bEnableSSR == false)
21850 {
21851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21852 "SSR is not enabled on WDI timeout");
21853 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21854 return;
21855 }
21856 wpalWcnssResetIntr();
21857 /* if this timer fires, it means Riva did not receive the FIQ */
21858 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21859
Jeff Johnson295189b2012-06-20 16:38:30 -070021860 return;
21861 }
21862
21863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21864 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21865
21866 /*Post response event to the state machine*/
21867 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21868
21869}/*WDI_RXMsgCTSCB*/
21870
21871
21872/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021873 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021874========================================================================*/
21875
21876/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021877 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021878 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021879
Jeff Johnson295189b2012-06-20 16:38:30 -070021880 @param pWDICtx - pointer to the control block
21881
21882 @return Result of the function call
21883*/
21884WPT_INLINE WDI_Status
21885WDI_CleanCB
21886(
21887 WDI_ControlBlockType* pWDICtx
21888)
21889{
21890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21891
21892 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021893 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021894
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021896 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21897 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21898
21899 WDI_ResetAssocSessions( pWDICtx );
21900
21901 return WDI_STATUS_SUCCESS;
21902}/*WDI_CleanCB*/
21903
21904
21905/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021906 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021907
Jeff Johnsone7245742012-09-05 17:12:55 -070021908
21909 @param pWDICtx: pointer to the WLAN DAL context
21910 pEventData: pointer to the event information structure
21911
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 @see
21913 @return Result of the function call
21914*/
21915WPT_INLINE WDI_Status
21916WDI_ProcessRequest
21917(
21918 WDI_ControlBlockType* pWDICtx,
21919 WDI_EventInfoType* pEventData
21920)
21921{
21922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21923
Jeff Johnsone7245742012-09-05 17:12:55 -070021924 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 already checked these pointers*/
21926
21927 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21928 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021929 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021931 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 WDI_getReqMsgString(pEventData->wdiRequest),
21933 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21934 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21935 }
21936 else
21937 {
21938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021939 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021940 pEventData->wdiRequest);
21941 return WDI_STATUS_E_NOT_IMPLEMENT;
21942 }
21943}/*WDI_ProcessRequest*/
21944
21945
21946/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021947 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021948 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021949 prefixes it with a send message header
21950
21951 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 wdiReqType: type of the request being sent
21953 uBufferLen: message buffer len
21954 pMsgBuffer: resulting allocated buffer
21955 pusDataOffset: offset in the buffer where the caller
21956 can start copying its message data
21957 puBufferSize: the resulting buffer size (offset+buff
21958 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021959
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 @see
21961 @return Result of the function call
21962*/
21963WDI_Status
21964WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021965(
21966 WDI_ControlBlockType* pWDICtx,
21967 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021968 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021969 wpt_uint8** pMsgBuffer,
21970 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 wpt_uint16* pusBufferSize
21972)
21973{
21974 tHalMsgHeader halMsgHeader;
21975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21976
Jeff Johnsone7245742012-09-05 17:12:55 -070021977 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 again*/
21979
21980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021981 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021982 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021983 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21985 if ( NULL == *pMsgBuffer )
21986 {
21987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21988 "Unable to allocate message buffer for req %s (%d)",
21989 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021992 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 }
21994
21995 /*-------------------------------------------------------------------------
21996 Fill in the message header
21997 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021998 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21999 /* Fill msgVersion */
22000#ifdef WLAN_FEATURE_11AC
22001 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022002 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 else
22004#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022005 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022006
Jeff Johnsone7245742012-09-05 17:12:55 -070022007 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22008 *pusDataOffset = sizeof(halMsgHeader);
22009 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22010
22011 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022012}/*WDI_GetMessageBuffer*/
22013
22014
22015/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022016 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022017 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022018 the CB
22019
22020 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022021 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022022
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 usSendSize size of the buffer to be sent
22024 pRspCb: response callback - save in the WDI
22025 CB
22026 pUserData: user data associated with the
22027 callback
22028 wdiExpectedResponse: the code of the response that is
22029 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022030
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 @see
22032 @return Result of the function call
22033*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022034WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022035WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022036(
22037 WDI_ControlBlockType* pWDICtx,
22038 wpt_uint8* pSendBuffer,
22039 wpt_uint32 usSendSize,
22040 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 void* pUserData,
22042 WDI_ResponseEnumType wdiExpectedResponse
22043)
22044{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022045 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022046 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22048
22049 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022050 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022051 ------------------------------------------------------------------------*/
22052 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022053 pWDICtx->pfncRspCB = pRspCb;
22054 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022055
22056 /*-----------------------------------------------------------------------
22057 Call the CTS to send this message over - free message afterwards
22058 - notify transport failure
22059 Note: CTS is reponsible for freeing the message buffer.
22060 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022061 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22062 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22063 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022066 "Failed to send message with expected response %s (%d)"
22067 " over the bus - catastrophic failure",
22068 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22069 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022070
Jeff Johnsond13512a2012-07-17 11:42:19 -070022071 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022072 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022073 else
22074 {
22075 /* even when message was placed in CTS deferred Q, we will treat it
22076 success but log this info
22077 */
22078 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22079 {
22080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22081 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22082 "response %s (%d)",
22083 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22084 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022085 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022086 }
22087 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022088
Jeff Johnsond13512a2012-07-17 11:42:19 -070022089 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 if ( NULL != pWDICtx->wdiReqStatusCB )
22091 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022092 /*Inform originator whether request went through or not*/
22093 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22094 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022095 pWDICtx->wdiReqStatusCB = NULL;
22096 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022097 callback(wdiStatus, callbackContext);
22098
22099 /*For WDI requests which have registered a request callback,
22100 inform the WDA caller of the same via setting the return value
22101 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22102 end up repeating the functonality in the req callback for the
22103 WDI_STATUS_E_FAILURE case*/
22104 if (wdiStatus == WDI_STATUS_E_FAILURE)
22105 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 }
22107
Jeff Johnsond13512a2012-07-17 11:42:19 -070022108 if ( wdiStatus == WDI_STATUS_SUCCESS )
22109 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 /*Start timer for the expected response */
22111 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022112
22113 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022114 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022115 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022116 }
22117 else
22118 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022119 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022120 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
c_hpothue80fad42014-11-10 16:53:39 +053022121 if (eWLAN_PAL_STATUS_E_FAILURE == ret)
22122 {
22123 wdiStatus = WDI_STATUS_DEV_INTERNAL_FAILURE;
22124 }
Jeff Johnsond13512a2012-07-17 11:42:19 -070022125 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022126
Jeff Johnsond13512a2012-07-17 11:42:19 -070022127 return wdiStatus;
22128
Jeff Johnson295189b2012-06-20 16:38:30 -070022129}/*WDI_SendMsg*/
22130
22131
22132
22133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 the bus using the control transport and saves some info
22136 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022137
22138 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 pSendBuffer: buffer to be sent
22140 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022141
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 @see
22143 @return Result of the function call
22144*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022146WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022147(
22148 WDI_ControlBlockType* pWDICtx,
22149 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022150 wpt_uint32 usSendSize
22151)
22152{
22153 wpt_uint32 uStatus ;
22154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22155
22156 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022157 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 Note: CTS is reponsible for freeing the message buffer.
22159 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022160 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 (void*)pSendBuffer, usSendSize );
22162
22163 /*Inform Upper MAC about the outcome of the request*/
22164 if ( NULL != pWDICtx->wdiReqStatusCB )
22165 {
22166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22167 "Send indication status : %d", uStatus);
22168
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022169 /* even if CTS placed indication into its deferred Q, we treat it
22170 * as success and let CTS drain its queue as per smd interrupt to CTS
22171 */
22172 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 -070022173 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 }
22175
22176 /*If sending of the message failed - it is considered catastrophic and
22177 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022178 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22179 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22180
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 {
22182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022183 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022184
22185 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22186 return WDI_STATUS_E_FAILURE;
22187 }
22188
Jeff Johnsone7245742012-09-05 17:12:55 -070022189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022190}/*WDI_SendIndication*/
22191
22192
22193/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022194 @brief WDI_DetectedDeviceError - called internally by DAL when
22195 it has detected a failure in the device
22196
22197 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 usErrorCode: error code detected by WDI or received
22199 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022200
Jeff Johnson295189b2012-06-20 16:38:30 -070022201 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022202 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022203*/
22204void
22205WDI_DetectedDeviceError
22206(
22207 WDI_ControlBlockType* pWDICtx,
22208 wpt_uint16 usErrorCode
22209)
22210{
22211 WDI_LowLevelIndType wdiInd;
22212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22213
22214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22215 "Device Error detected code: %d - transitioning to stopped state",
22216 usErrorCode);
22217
Katya Nigamf02ad012014-05-05 16:12:49 +053022218 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22219
Jeff Johnson295189b2012-06-20 16:38:30 -070022220 wpalMutexAcquire(&pWDICtx->wptMutex);
22221
22222 WDI_STATableStop(pWDICtx);
22223
22224 WDI_ResetAssocSessions(pWDICtx);
22225
22226 /*Set the expected state transition to stopped - because the device
22227 experienced a failure*/
22228 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22229
22230 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022231 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022232
Jeff Johnsone7245742012-09-05 17:12:55 -070022233 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022234
22235 /*TO DO: - there should be an attempt to reset the device here*/
22236
22237 wpalMutexRelease(&pWDICtx->wptMutex);
22238
22239 /*------------------------------------------------------------------------
22240 Notify UMAC if a handler is registered
22241 ------------------------------------------------------------------------*/
22242 if (pWDICtx->wdiLowLevelIndCB)
22243 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022244 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22245 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022246
22247 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22248 }
22249}/*WDI_DetectedDeviceError*/
22250
22251/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022252 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022253 we started on send message has expire - this should
22254 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022255 reply - trigger catastrophic failure
22256 @param
22257
Jeff Johnson295189b2012-06-20 16:38:30 -070022258 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022259
22260 @see
22261 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022262*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022263void
Jeff Johnson295189b2012-06-20 16:38:30 -070022264WDI_ResponseTimerCB
22265(
22266 void *pUserData
22267)
22268{
22269 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22271
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022272 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022277 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 }
22279
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022280 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022281 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022282 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022283
22284 /* If response timer is running at this time that means this timer
22285 * event is not for the last request but rather last-to-last request and
22286 * this timer event has come after we recevied respone for last-to-last
22287 * message
22288 */
22289 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22290 {
22291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22292 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022293 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022294 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22296 "uArchTimeStampTmrStart: %llu seconds, "
22297 "uArchTimeStampTmrExp: %llu seconds",
22298 pWDICtx->uArchTimeStampRspTmrStart,
22299 pWDICtx->uArchTimeStampRspTmrExp);
22300
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022301 return;
22302 }
22303
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022304 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 {
22306
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022308 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022309 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022310 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022311 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22312 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22314 "uArchTimeStampTmrStart: %llu seconds, "
22315 "uArchTimeStampTmrExp: %llu seconds",
22316 pWDICtx->uArchTimeStampRspTmrStart,
22317 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022318
22319 /* WDI timeout means Riva is not responding or SMD communication to Riva
22320 * is not happening. The only possible way to recover from this error
22321 * is to initiate SSR from APPS.
22322 * There is also an option to re-enable wifi, which will eventually
22323 * trigger SSR
22324 */
22325 if (gWDICb.bEnableSSR == false)
22326 {
22327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22328 "SSR is not enabled on WDI timeout");
22329 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22330 return;
22331 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022332#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022333 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053022334 if(wpalIsWDresetInProgress())
22335 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022336 if(wpalIsSsrPanicOnFailure())
22337 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022338 } else {
22339 /* if this timer fires, it means Riva did not receive the FIQ */
22340 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022341 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022342#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022343 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22344 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022345#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 }
22347 else
22348 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022350 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022351 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022352 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22353 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22355 "uArchTimeStampTmrStart: %llu seconds, "
22356 "uArchTimeStampTmrExp: %llu seconds",
22357 pWDICtx->uArchTimeStampRspTmrStart,
22358 pWDICtx->uArchTimeStampRspTmrExp);
22359
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 }
22361
22362 return;
22363
22364}/*WDI_ResponseTimerCB*/
22365
22366
22367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022369
Jeff Johnsone7245742012-09-05 17:12:55 -070022370
22371 @param pWDICtx: pointer to the WLAN DAL context
22372 pEventData: pointer to the event information structure
22373
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 @see
22375 @return Result of the function call
22376*/
22377WPT_INLINE WDI_Status
22378WDI_ProcessResponse
22379(
22380 WDI_ControlBlockType* pWDICtx,
22381 WDI_EventInfoType* pEventData
22382)
22383{
22384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22385
Jeff Johnsone7245742012-09-05 17:12:55 -070022386 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022387 already checked these pointers
22388 ! - revisit this assumption */
22389 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22390 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022391 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022393 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022394 WDI_getRespMsgString(pEventData->wdiResponse),
22395 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22396 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22397 }
22398 else
22399 {
22400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022401 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 pEventData->wdiResponse);
22403 return WDI_STATUS_E_NOT_IMPLEMENT;
22404 }
22405}/*WDI_ProcessResponse*/
22406
22407
22408/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022410=========================================================================*/
22411
22412/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022413 @brief Utility function used by the DAL Core to help queue a
22414 request that cannot be processed right away.
22415 @param
22416
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 pWDICtx: - pointer to the WDI control block
22418 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022419 queued
22420
22421 @see
22422 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022423*/
22424WDI_Status
22425WDI_QueuePendingReq
22426(
22427 WDI_ControlBlockType* pWDICtx,
22428 WDI_EventInfoType* pEventData
22429)
22430{
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022433 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22435
22436 if ( NULL == pEventDataQueue )
22437 {
22438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022439 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 WDI_ASSERT(0);
22441 return WDI_STATUS_MEM_FAILURE;
22442 }
22443
22444 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22445 pEventDataQueue->pUserData = pEventData->pUserData;
22446 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22447 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449
22450 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22451 {
22452 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022453
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 if ( NULL == pEventInfo )
22455 {
22456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022457 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 WDI_ASSERT(0);
22459 wpalMemoryFree(pEventDataQueue);
22460 return WDI_STATUS_MEM_FAILURE;
22461 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022462
Jeff Johnson295189b2012-06-20 16:38:30 -070022463 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22464
22465 }
22466 pEventDataQueue->pEventData = pEventInfo;
22467
22468 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022470
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022471 if (eWLAN_PAL_STATUS_E_FAILURE ==
22472 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22473 {
22474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22475 "pEventDataQueue wpal_list_insert_back failed");
22476 WDI_ASSERT(0);
22477 wpalMemoryFree(pEventDataQueue);
22478 wpalMemoryFree(pEventInfo);
22479 return WDI_STATUS_MEM_FAILURE;
22480 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022481
22482 return WDI_STATUS_SUCCESS;
22483}/*WDI_QueuePendingReq*/
22484
22485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022486 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022488 @param
22489
22490 pMsg - pointer to the message
22491
22492 @see
22493 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022494*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022495void
Jeff Johnson295189b2012-06-20 16:38:30 -070022496WDI_PALCtrlMsgCB
22497(
22498 wpt_msg *pMsg
22499)
22500{
22501 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 WDI_ControlBlockType* pWDICtx = NULL;
22503 WDI_Status wdiStatus;
22504 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 void* pUserData;
22506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22507
22508 if (( NULL == pMsg )||
22509 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22510 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22511 {
22512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022513 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 }
22517
22518 /*Transition back to the state that we had before serialization
22519 - serialization transitions us to BUSY to stop any incomming requests
22520 ! TO DO L: possible race condition here if a request comes in between the
22521 state transition and the post function*/
22522
Jeff Johnsone7245742012-09-05 17:12:55 -070022523 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022524
22525 /*-----------------------------------------------------------------------
22526 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022527 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022528 -----------------------------------------------------------------------*/
22529 switch ( pEventData->wdiRequest )
22530 {
22531
Jeff Johnsone7245742012-09-05 17:12:55 -070022532 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022533 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22534 break;
22535
Jeff Johnson295189b2012-06-20 16:38:30 -070022536 case WDI_NV_DOWNLOAD_REQ:
22537 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22538 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22539 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22540 {
22541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022542 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22544 }
22545 else
22546 {
22547 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22548 }
22549
22550 break;
22551
22552 default:
22553 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22554 break;
22555 }/*switch ( pEventData->wdiRequest )*/
22556
22557 if ( WDI_STATUS_SUCCESS != wdiStatus )
22558 {
22559 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22560
22561 if ( NULL != pfnReqStatusCB )
22562 {
22563 /*Fail the request*/
22564 pfnReqStatusCB( wdiStatus, pUserData);
22565 }
22566 }
22567
22568 /* Free data - that was allocated when queueing*/
22569 if( pEventData != NULL )
22570 {
22571 if( pEventData->pEventData != NULL )
22572 {
22573 wpalMemoryFree(pEventData->pEventData);
22574 }
22575 wpalMemoryFree(pEventData);
22576 }
22577
22578 if( pMsg != NULL )
22579 {
22580 wpalMemoryFree(pMsg);
22581 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022582
Jeff Johnson295189b2012-06-20 16:38:30 -070022583}/*WDI_PALCtrlMsgCB*/
22584
22585/**
22586 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 and schedule for execution a pending request
22588 @param
22589
Jeff Johnson295189b2012-06-20 16:38:30 -070022590 pWDICtx: - pointer to the WDI control block
22591 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022592 queued
22593
22594 @see
22595 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022596*/
22597WDI_Status
22598WDI_DequeuePendingReq
22599(
22600 WDI_ControlBlockType* pWDICtx
22601)
22602{
Jeff Johnsone7245742012-09-05 17:12:55 -070022603 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022605 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22607
Jeff Johnsone7245742012-09-05 17:12:55 -070022608 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022609
22610 if ( NULL == pNode )
22611 {
22612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022613 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022614 return WDI_STATUS_SUCCESS;
22615 }
22616
22617 /*The node actually points to the 1st element inside the Event Data struct -
22618 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022620
22621 /*Serialize processing in the control thread
22622 !TO DO: - check to see if these are all the messages params that need
22623 to be filled in*/
22624 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22625
22626 if ( NULL == palMsg )
22627 {
22628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022629 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022631 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022632 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 palMsg->callback = WDI_PALCtrlMsgCB;
22635 palMsg->ptr = pEventData;
22636
22637 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022638 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022639 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022640
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 /*Transition back to BUSY as we need to handle a queued request*/
22642 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022643
Jeff Johnson295189b2012-06-20 16:38:30 -070022644 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22645
22646 return WDI_STATUS_PENDING;
22647}/*WDI_DequeuePendingReq*/
22648
22649
22650/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022651 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022652 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 away.- The assoc requests will be queued by BSSID
22654 @param
22655
Jeff Johnson295189b2012-06-20 16:38:30 -070022656 pWDICtx: - pointer to the WDI control block
22657 pEventData: pointer to the evnt info that needs to be queued
22658 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022659
22660 @see
22661 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022662*/
22663WDI_Status
22664WDI_QueueNewAssocRequest
22665(
22666 WDI_ControlBlockType* pWDICtx,
22667 WDI_EventInfoType* pEventData,
22668 wpt_macAddr macBSSID
22669)
22670{
Jeff Johnsone7245742012-09-05 17:12:55 -070022671 wpt_uint8 i;
22672 WDI_BSSSessionType* pSession = NULL;
22673 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022675 void* pEventInfo;
22676 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022678
Jeff Johnsone7245742012-09-05 17:12:55 -070022679
22680 /*------------------------------------------------------------------------
22681 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022682 ------------------------------------------------------------------------*/
22683 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22684 {
22685 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22686 {
22687 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022688 pSession = &pWDICtx->aBSSSessions[i];
22689 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022690 }
22691 }
22692
22693 if ( i >= WDI_MAX_BSS_SESSIONS )
22694 {
22695 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022698
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 /*------------------------------------------------------------------------
22700 Fill in the BSSID for this session and set the usage flag
22701 ------------------------------------------------------------------------*/
22702 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022703 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022704
22705 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022706 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 ------------------------------------------------------------------------*/
22708 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22709 if ( NULL == pEventDataQueue )
22710 {
22711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022712 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 WDI_ASSERT(0);
22714 return WDI_STATUS_MEM_FAILURE;
22715 }
22716
22717 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22718 if ( NULL == pSessionIdElement )
22719 {
22720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022721 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022722 WDI_ASSERT(0);
22723 wpalMemoryFree(pEventDataQueue);
22724 return WDI_STATUS_MEM_FAILURE;
22725 }
22726
22727 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22728 if ( NULL == pEventInfo )
22729 {
22730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022731 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022732 WDI_ASSERT(0);
22733 wpalMemoryFree(pSessionIdElement);
22734 wpalMemoryFree(pEventDataQueue);
22735 return WDI_STATUS_MEM_FAILURE;
22736 }
22737
22738 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22739 pEventDataQueue->pUserData = pEventData->pUserData;
22740 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22741 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022742 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022743
22744 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22745 pEventDataQueue->pEventData = pEventInfo;
22746
22747 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022749
22750 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022752
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022753 if (eWLAN_PAL_STATUS_E_FAILURE ==
22754 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22755 {
22756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22757 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
22758 WDI_ASSERT(0);
22759 wpalMemoryFree(pSessionIdElement);
22760 wpalMemoryFree(pEventDataQueue);
22761 wpalMemoryFree(pEventInfo);
22762 return WDI_STATUS_MEM_FAILURE;
22763 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022764
22765 /*We need to maintain a separate list that keeps track of the order in which
22766 the new assoc requests are being queued such that we can start processing
22767 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022768 pSessionIdElement->ucIndex = i;
22769 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022770
22771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22772 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022773 if (eWLAN_PAL_STATUS_E_FAILURE ==
22774 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
22775 {
22776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22777 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
22778 WDI_ASSERT(0);
22779 wpalMemoryFree(pSessionIdElement);
22780 wpalMemoryFree(pEventDataQueue);
22781 wpalMemoryFree(pEventInfo);
22782 return WDI_STATUS_MEM_FAILURE;
22783 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022784
22785 /*Return pending as this is what the status of the request is since it has
22786 been queued*/
22787 return WDI_STATUS_PENDING;
22788}/*WDI_QueueNewAssocRequest*/
22789
22790/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022791 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022792 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022793 away.- The assoc requests will be queued by BSSID
22794 @param
22795
Jeff Johnson295189b2012-06-20 16:38:30 -070022796 pWDICtx: - pointer to the WDI control block
22797 pSession: - session in which to queue
22798 pEventData: pointer to the event info that needs to be
22799 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022800
22801 @see
22802 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022803*/
22804WDI_Status
22805WDI_QueueAssocRequest
22806(
22807 WDI_ControlBlockType* pWDICtx,
22808 WDI_BSSSessionType* pSession,
22809 WDI_EventInfoType* pEventData
22810)
22811{
Jeff Johnsone7245742012-09-05 17:12:55 -070022812 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022813 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022814 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022816
22817 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 Sanity check
22819 ------------------------------------------------------------------------*/
22820 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22821 {
22822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022824
Jeff Johnsone7245742012-09-05 17:12:55 -070022825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022826 }
22827
22828 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022829 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022830 ------------------------------------------------------------------------*/
22831 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22832 if ( NULL == pEventDataQueue )
22833 {
22834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022835 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022836 WDI_ASSERT(0);
22837 return WDI_STATUS_MEM_FAILURE;
22838 }
22839
22840 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22841 if ( NULL == pEventInfo )
22842 {
22843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22844 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022845 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022846 WDI_ASSERT(0);
22847 wpalMemoryFree(pEventDataQueue);
22848 return WDI_STATUS_MEM_FAILURE;
22849 }
22850
22851 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22852 pEventDataQueue->pUserData = pEventData->pUserData;
22853 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22854 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022855 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022856 pEventDataQueue->pEventData = pEventInfo;
22857
22858 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22859
22860 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022861 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022862
22863 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022864 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022865
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022866 if (eWLAN_PAL_STATUS_E_FAILURE ==
22867 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22868 {
22869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22870 "%s: Cannot allocate memory for queueing event data info",
22871 __func__);
22872 WDI_ASSERT(0);
22873 wpalMemoryFree(pEventDataQueue);
22874 wpalMemoryFree(pEventInfo);
22875 return WDI_STATUS_MEM_FAILURE;
22876 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022877
22878 /*The result of this operation is pending because the request has been
22879 queued and it will be processed at a later moment in time */
22880 return WDI_STATUS_PENDING;
22881}/*WDI_QueueAssocRequest*/
22882
22883/**
22884 @brief Utility function used by the DAL Core to help dequeue
22885 an association request that was pending
22886 The request will be queued up in front of the main
22887 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022888 @param
22889
Jeff Johnson295189b2012-06-20 16:38:30 -070022890 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022891
22892
22893 @see
22894 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022895*/
22896WDI_Status
22897WDI_DequeueAssocRequest
22898(
22899 WDI_ControlBlockType* pWDICtx
22900)
22901{
Jeff Johnsone7245742012-09-05 17:12:55 -070022902 wpt_list_node* pNode = NULL;
22903 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022904 WDI_BSSSessionType* pSession;
22905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022906
22907 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022908 Sanity check
22909 ------------------------------------------------------------------------*/
22910 if ( NULL == pWDICtx )
22911 {
22912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022913 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022914
Jeff Johnsone7245742012-09-05 17:12:55 -070022915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022916 }
22917
22918 /*------------------------------------------------------------------------
22919 An association has been completed => a new association can occur
22920 Check to see if there are any pending associations ->
22921 If so , transfer all the pending requests into the busy queue for
22922 processing
22923 These requests have arrived prior to the requests in the busy queue
22924 (bc they needed to be processed in order to be placed in this queue)
22925 => they will be placed at the front of the busy queue
22926 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022927 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022928
22929 if ( NULL == pNode )
22930 {
22931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022932 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 return WDI_STATUS_SUCCESS;
22934 }
22935
22936 /*The node actually points to the 1st element inside the Session Id struct -
22937 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022938 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022939
22940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22941 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22942
22943 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22944 {
22945 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022946
Jeff Johnson295189b2012-06-20 16:38:30 -070022947 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022948 the front of the main waiting queue for subsequent execution*/
22949 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022950 while ( NULL != pNode )
22951 {
22952 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022953 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22954 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022955 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022956 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022957 }
22958 else
22959 {
22960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022961 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022962 WPAL_ASSERT(0);
22963 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022965 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022966
Jeff Johnson295189b2012-06-20 16:38:30 -070022967 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22968 wpalMemoryFree(pSessionIdElement);
22969 return WDI_STATUS_SUCCESS;
22970}/*WDI_DequeueAssocRequest*/
22971
22972/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022973 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022974 pending requests - all req cb will be called with
22975 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022976 @param
22977
Jeff Johnson295189b2012-06-20 16:38:30 -070022978 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022979
22980 @see
22981 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022982*/
22983WDI_Status
22984WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022985(
Jeff Johnson295189b2012-06-20 16:38:30 -070022986 WDI_ControlBlockType* pWDICtx
22987)
22988{
Jeff Johnsone7245742012-09-05 17:12:55 -070022989 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022991 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022992 void* pUserData;
22993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22994
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022996
22997 /*------------------------------------------------------------------------
22998 Go through all the requests and fail them - this will only be called
22999 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023000 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023001 ------------------------------------------------------------------------*/
23002 while( pNode )
23003 {
23004 /*The node actually points to the 1st element inside the Event Data struct -
23005 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023006 pEventDataQueue = (WDI_EventInfoType*)pNode;
23007
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23009 if ( NULL != pfnReqStatusCB )
23010 {
23011 /*Fail the request*/
23012 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23013 }
23014 /* Free data - that was allocated when queueing */
23015 if ( pEventDataQueue->pEventData != NULL )
23016 {
23017 wpalMemoryFree(pEventDataQueue->pEventData);
23018 }
23019 wpalMemoryFree(pEventDataQueue);
23020
23021 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23022 {
23023 break;
23024 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023025 }
23026
Jeff Johnson295189b2012-06-20 16:38:30 -070023027 return WDI_STATUS_SUCCESS;
23028}/*WDI_ClearPendingRequests*/
23029
23030/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023031 @brief Helper routine used to init the BSS Sessions in the WDI control block
23032
23033
23034 @param pWDICtx: pointer to the WLAN DAL context
23035
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 @see
23037*/
23038void
23039WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023040(
Jeff Johnson295189b2012-06-20 16:38:30 -070023041 WDI_ControlBlockType* pWDICtx
23042)
23043{
Jeff Johnsone7245742012-09-05 17:12:55 -070023044 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23046
23047 /*-------------------------------------------------------------------------
23048 No Sanity check
23049 -------------------------------------------------------------------------*/
23050 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23051 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023052 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23054 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23055 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23056 }
23057}/*WDI_ResetAssocSessions*/
23058
23059/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023060 @brief Helper routine used to find a session based on the BSSID
23061
23062
23063 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023064 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023065 pSession: pointer to the session (if found)
23066
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023069*/
23070wpt_uint8
23071WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023072(
Jeff Johnson295189b2012-06-20 16:38:30 -070023073 WDI_ControlBlockType* pWDICtx,
23074 wpt_macAddr macBSSID,
23075 WDI_BSSSessionType** ppSession
23076)
23077{
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23080
23081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023083 -------------------------------------------------------------------------*/
23084 if ( NULL == ppSession )
23085 {
23086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023087 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023088 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 }
23090
Jeff Johnsone7245742012-09-05 17:12:55 -070023091 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023092
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 /*------------------------------------------------------------------------
23094 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 ------------------------------------------------------------------------*/
23096 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23097 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023098 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23099 (eWLAN_PAL_TRUE ==
23100 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23101 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023102 {
23103 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023104 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023105 return i;
23106 }
23107 }
23108
Jeff Johnsone7245742012-09-05 17:12:55 -070023109 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023110}/*WDI_FindAssocSession*/
23111
23112/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023113 @brief Helper routine used to find a session based on the BSSID
23114
23115
23116 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 ucBSSIdx: BSS Index of the session
23118 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023119
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023121 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023122*/
23123wpt_uint8
23124WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023125(
Jeff Johnson295189b2012-06-20 16:38:30 -070023126 WDI_ControlBlockType* pWDICtx,
23127 wpt_uint16 ucBSSIdx,
23128 WDI_BSSSessionType** ppSession
23129)
23130{
Jeff Johnsone7245742012-09-05 17:12:55 -070023131 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23133
23134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023135 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023136 -------------------------------------------------------------------------*/
23137 if ( NULL == ppSession )
23138 {
23139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023140 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023141 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 }
23143
Jeff Johnsone7245742012-09-05 17:12:55 -070023144 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023145
Jeff Johnsone7245742012-09-05 17:12:55 -070023146 /*------------------------------------------------------------------------
23147 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 ------------------------------------------------------------------------*/
23149 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23150 {
23151 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23152 {
23153 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023155 return i;
23156 }
23157 }
23158
Jeff Johnsone7245742012-09-05 17:12:55 -070023159 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023160}/*WDI_FindAssocSessionByBSSIdx*/
23161
23162/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 @brief Helper routine used to find a session based on the BSSID
23164
23165
23166 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023167 ucBSSIdx: BSS Index of the session
23168 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023169
Jeff Johnson295189b2012-06-20 16:38:30 -070023170 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023171 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023172*/
23173wpt_uint8
23174WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023175(
Jeff Johnson295189b2012-06-20 16:38:30 -070023176 WDI_ControlBlockType* pWDICtx,
23177 wpt_uint16 usIdx,
23178 WDI_BSSSessionType** ppSession
23179)
23180{
23181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23182
23183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023184 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023185 -------------------------------------------------------------------------*/
23186 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23187 {
23188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023189 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023190 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023191 }
23192
23193 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023194 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023195
23196 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023197
Jeff Johnson295189b2012-06-20 16:38:30 -070023198}/*WDI_FindAssocSessionByBSSIdx*/
23199
23200/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023201 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023202 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023203
23204
23205 @param pWDICtx: pointer to the WLAN DAL context
23206 pSession: pointer to the session (if found)
23207
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023210*/
23211wpt_uint8
23212WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023213(
Jeff Johnson295189b2012-06-20 16:38:30 -070023214 WDI_ControlBlockType* pWDICtx,
23215 WDI_BSSSessionType** ppSession
23216)
23217{
Jeff Johnsone7245742012-09-05 17:12:55 -070023218 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023222 -------------------------------------------------------------------------*/
23223 if ( NULL == ppSession )
23224 {
23225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023226 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023227 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 }
23229
Jeff Johnsone7245742012-09-05 17:12:55 -070023230 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023231
Jeff Johnsone7245742012-09-05 17:12:55 -070023232 /*------------------------------------------------------------------------
23233 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 ------------------------------------------------------------------------*/
23235 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23236 {
23237 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23238 {
23239 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023240 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 return i;
23242 }
23243 }
23244
Jeff Johnsone7245742012-09-05 17:12:55 -070023245 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023246}/*WDI_FindEmptySession*/
23247
23248
23249/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023251 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023252
23253
23254 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023255 macBSSID: pointer to BSSID. If NULL, get all the session.
23256 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23257 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23258 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023259 @see
23260 @return Number of sessions in use
23261*/
23262wpt_uint8
23263WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023264(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023265 WDI_ControlBlockType* pWDICtx,
23266 wpt_macAddr macBSSID,
23267 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023268)
23269{
Jeff Johnsone7245742012-09-05 17:12:55 -070023270 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023272
23273 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 Count all sessions in use
23275 ------------------------------------------------------------------------*/
23276 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23277 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023278 if ( macBSSID && skipBSSID &&
23279 (eWLAN_PAL_TRUE ==
23280 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23281 WDI_MAC_ADDR_LEN)))
23282 {
23283 continue;
23284 }
23285 else if ( pWDICtx->aBSSSessions[i].bInUse )
23286 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023287 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023288 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 }
23290
Jeff Johnsone7245742012-09-05 17:12:55 -070023291 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023292}/*WDI_GetActiveSessionsCount*/
23293
23294/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023295 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023296 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023297
23298
23299 @param pWDICtx: pointer to the WLAN DAL context
23300 pSession: pointer to the session (if found)
23301
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023303 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023304*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023305void
Jeff Johnson295189b2012-06-20 16:38:30 -070023306WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023307(
Jeff Johnson295189b2012-06-20 16:38:30 -070023308 WDI_ControlBlockType* pWDICtx,
23309 WDI_BSSSessionType* ppSession
23310)
23311{
23312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023314 -------------------------------------------------------------------------*/
23315 if ( NULL == ppSession )
23316 {
23317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023318 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 }
23321
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 /*------------------------------------------------------------------------
23323 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023324 ------------------------------------------------------------------------*/
23325 wpal_list_destroy(&ppSession->wptPendingQueue);
23326 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023327 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23328 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023329 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23330 wpal_list_init(&ppSession->wptPendingQueue);
23331
23332}/*WDI_DeleteSession*/
23333
23334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023336 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023337 @param
23338
Jeff Johnson295189b2012-06-20 16:38:30 -070023339 WDI_AddStaParams: - pointer to the WDI Add STA params
23340 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023341
23342 @see
23343 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023344*/
23345void
23346WDI_AddBcastSTAtoSTATable
23347(
23348 WDI_ControlBlockType* pWDICtx,
23349 WDI_AddStaParams * staParams,
23350 wpt_uint16 usBcastStaIdx
23351)
23352{
23353 WDI_AddStaParams wdiAddSTAParam = {0};
23354 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23356
23357 /*---------------------------------------------------------------------
23358 Sanity check
23359 ---------------------------------------------------------------------*/
23360 if ( NULL == staParams )
23361 {
23362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023364
Jeff Johnsone7245742012-09-05 17:12:55 -070023365 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 }
23367
23368 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23369 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23370 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23371 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23372 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23373 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23374 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23375 WDI_MAC_ADDR_LEN );
23376 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23377 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23378 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23379 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23380 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23381 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23382 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023383
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23385}
23386
23387/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 @brief NV blob will be divided into fragments of size 4kb and
23389 Sent to HAL
23390
23391 @param pWDICtx: pointer to the WLAN DAL context
23392 pEventData: pointer to the event information structure
23393
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 @see
23395 @return Result of the function call
23396 */
23397
23398WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023399(
Jeff Johnson295189b2012-06-20 16:38:30 -070023400 WDI_ControlBlockType* pWDICtx,
23401 WDI_EventInfoType* pEventData
23402)
23403{
23404
23405 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23406 wpt_uint8* pSendBuffer = NULL;
23407 wpt_uint16 usDataOffset = 0;
23408 wpt_uint16 usSendSize = 0;
23409 wpt_uint16 usCurrentFragmentSize =0;
23410 wpt_uint8* pSrcBuffer = NULL;
23411 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23412 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23413
23414 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23415 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23416 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23417
Jeff Johnsone7245742012-09-05 17:12:55 -070023418 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023419 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23420
23421 /* Update the current Fragment Number */
23422 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23423
23424 /*Update the HAL REQ structure */
23425 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23426 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23427 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23428
23429 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 image will be sent to HAL*/
23432
Jeff Johnsone7245742012-09-05 17:12:55 -070023433 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023434 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023435 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023436 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023437 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023438 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23439 usCurrentFragmentSize = FRAGMENT_SIZE;
23440
23441 /*Update the HAL REQ structure */
23442 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23443 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23444
23445 }
23446 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 usCurrentFragmentSize = FRAGMENT_SIZE;
23449
23450 /*Update the HAL REQ structure */
23451 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23452 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23453 }
23454
23455 /*-----------------------------------------------------------------------
23456 Get message buffer
23457 -----------------------------------------------------------------------*/
23458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23459 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23460 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023461 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023462 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23463 {
23464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023465 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023466 pEventData, pwdiNvDownloadReqParams);
23467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023469 }
23470
23471 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023472 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023473 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23474
23475 /* Appending the NV image fragment */
23476 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23477 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23478 usCurrentFragmentSize);
23479
23480 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023481 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023482
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23484 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023485 WDI_NV_DOWNLOAD_RESP);
23486
23487}
Jeff Johnsone7245742012-09-05 17:12:55 -070023488/*============================================================================
23489 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023490 ============================================================================*/
23491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023492 @brief Helper routine used to find a session based on the BSSID
23493 @param pContext: pointer to the WLAN DAL context
23494 @param pDPContext: pointer to the Datapath context
23495
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023498*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023499WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023500WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23501{
23502 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23503
23504 pCB->pDPContext = pDPContext;
23505 return;
23506}
23507
23508/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023509 @brief Helper routine used to find a session based on the BSSID
23510
23511
23512 @param pContext: pointer to the WLAN DAL context
23513
Jeff Johnson295189b2012-06-20 16:38:30 -070023514 @see
23515 @return pointer to Datapath context
23516*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023517WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023518WDI_DS_GetDatapathContext (void *pContext)
23519{
23520 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23521 return pCB->pDPContext;
23522}
23523/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023524 @brief Helper routine used to find a session based on the BSSID
23525
23526
23527 @param pContext: pointer to the WLAN DAL context
23528 @param pDTDriverContext: pointer to the Transport Driver context
23529
Jeff Johnson295189b2012-06-20 16:38:30 -070023530 @see
23531 @return void
23532*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023533WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023534WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23535{
23536 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23537
23538 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023539 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023540}
23541
23542/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023543 @brief Helper routine used to find a session based on the BSSID
23544
23545
23546 @param pWDICtx: pointer to the WLAN DAL context
23547
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023549 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023550*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023551WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023552WDT_GetTransportDriverContext (void *pContext)
23553{
23554 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023555 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023556}
23557
Jeff Johnsone7245742012-09-05 17:12:55 -070023558/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023559 Helper inline converters
23560 ============================================================================*/
23561/*Convert WDI driver type into HAL driver type*/
23562WPT_STATIC WPT_INLINE WDI_Status
23563WDI_HAL_2_WDI_STATUS
23564(
23565 eHalStatus halStatus
23566)
23567{
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 the chances of getting inlined*/
23570 switch( halStatus )
23571 {
23572 case eHAL_STATUS_SUCCESS:
23573 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23574 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23575 return WDI_STATUS_SUCCESS;
23576 case eHAL_STATUS_FAILURE:
23577 return WDI_STATUS_E_FAILURE;
23578 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 return WDI_STATUS_MEM_FAILURE;
23580 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023581 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023582 default:
23583 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23584 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023585
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023587}/*WDI_HAL_2_WDI_STATUS*/
23588
23589/*Convert WDI request type into HAL request type*/
23590WPT_STATIC WPT_INLINE tHalHostMsgType
23591WDI_2_HAL_REQ_TYPE
23592(
23593 WDI_RequestEnumType wdiReqType
23594)
23595{
Jeff Johnsone7245742012-09-05 17:12:55 -070023596 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023597 the chances of getting inlined*/
23598 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023599 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023600 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023601 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023602 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023603 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023604 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023605 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023606 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023607 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023608 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023609 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023610 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023611 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023612 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023613 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023617 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023618 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023620 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023621 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023622 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023623 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023624 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023625 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023627 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023628 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023631 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023632 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023633 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023634 return WLAN_HAL_RMV_STAKEY_REQ;
23635 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023636 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023637 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023638 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023639 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023640 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023641 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 case WDI_DEL_BA_REQ:
23644 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023645#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023646 case WDI_TSM_STATS_REQ:
23647 return WLAN_HAL_TSM_STATS_REQ;
23648#endif
23649 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023650 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023651 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023652 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023653 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023654 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023655 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023656 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023658 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023659 case WDI_ADD_BA_SESSION_REQ:
23660 return WLAN_HAL_ADD_BA_SESSION_REQ;
23661 case WDI_TRIGGER_BA_REQ:
23662 return WLAN_HAL_TRIGGER_BA_REQ;
23663 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023664 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023666 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23668 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23669 case WDI_SET_MAX_TX_POWER_REQ:
23670 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023671 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23672 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023673 case WDI_SET_TX_POWER_REQ:
23674 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023675 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23676 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023677#ifdef FEATURE_WLAN_TDLS
23678 case WDI_TDLS_LINK_ESTABLISH_REQ:
23679 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053023680 case WDI_TDLS_CHAN_SWITCH_REQ:
23681 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023682#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023683 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023684 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023685 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023686 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023687 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023688 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023689 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023690 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023694 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023695 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023696 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023697 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023698 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023699 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023700 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023701 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 case WDI_REM_BEACON_FILTER_REQ:
23704 return WLAN_HAL_REM_BCN_FILTER_REQ;
23705 case WDI_SET_RSSI_THRESHOLDS_REQ:
23706 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23707 case WDI_HOST_OFFLOAD_REQ:
23708 return WLAN_HAL_HOST_OFFLOAD_REQ;
23709 case WDI_WOWL_ADD_BC_PTRN_REQ:
23710 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23711 case WDI_WOWL_DEL_BC_PTRN_REQ:
23712 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23713 case WDI_WOWL_ENTER_REQ:
23714 return WLAN_HAL_ENTER_WOWL_REQ;
23715 case WDI_WOWL_EXIT_REQ:
23716 return WLAN_HAL_EXIT_WOWL_REQ;
23717 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23718 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23719 case WDI_NV_DOWNLOAD_REQ:
23720 return WLAN_HAL_DOWNLOAD_NV_REQ;
23721 case WDI_FLUSH_AC_REQ:
23722 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23723 case WDI_BTAMP_EVENT_REQ:
23724 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23725#ifdef WLAN_FEATURE_VOWIFI_11R
23726 case WDI_AGGR_ADD_TS_REQ:
23727 return WLAN_HAL_AGGR_ADD_TS_REQ;
23728#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 case WDI_FTM_CMD_REQ:
23730 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 case WDI_ADD_STA_SELF_REQ:
23732 return WLAN_HAL_ADD_STA_SELF_REQ;
23733 case WDI_DEL_STA_SELF_REQ:
23734 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023735#ifdef FEATURE_OEM_DATA_SUPPORT
23736 case WDI_START_OEM_DATA_REQ:
23737 return WLAN_HAL_START_OEM_DATA_REQ;
23738#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023739 case WDI_HOST_RESUME_REQ:
23740 return WLAN_HAL_HOST_RESUME_REQ;
23741 case WDI_HOST_SUSPEND_IND:
23742 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023743 case WDI_TRAFFIC_STATS_IND:
23744 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023745#ifdef WLAN_FEATURE_11W
23746 case WDI_EXCLUDE_UNENCRYPTED_IND:
23747 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23748#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023749 case WDI_KEEP_ALIVE_REQ:
23750 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023751#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023752 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23753 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023754#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023755#ifdef FEATURE_WLAN_SCAN_PNO
23756 case WDI_SET_PREF_NETWORK_REQ:
23757 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23758 case WDI_SET_RSSI_FILTER_REQ:
23759 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23760 case WDI_UPDATE_SCAN_PARAMS_REQ:
23761 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23762#endif // FEATURE_WLAN_SCAN_PNO
23763 case WDI_SET_TX_PER_TRACKING_REQ:
23764 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23765#ifdef WLAN_FEATURE_PACKET_FILTERING
23766 case WDI_8023_MULTICAST_LIST_REQ:
23767 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23768 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023769 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023770 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23771 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23772 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23773 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23774#endif // WLAN_FEATURE_PACKET_FILTERING
23775 case WDI_HAL_DUMP_CMD_REQ:
23776 return WLAN_HAL_DUMP_COMMAND_REQ;
23777#ifdef WLAN_FEATURE_GTK_OFFLOAD
23778 case WDI_GTK_OFFLOAD_REQ:
23779 return WLAN_HAL_GTK_OFFLOAD_REQ;
23780 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23781 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23782#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23783
23784 case WDI_INIT_SCAN_CON_REQ:
23785 return WLAN_HAL_INIT_SCAN_CON_REQ;
23786 case WDI_SET_POWER_PARAMS_REQ:
23787 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23788 case WDI_SET_TM_LEVEL_REQ:
23789 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23790 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23791 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023792#ifdef WLAN_FEATURE_11AC
23793 case WDI_UPDATE_VHT_OP_MODE_REQ:
23794 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23795#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023796 case WDI_GET_ROAM_RSSI_REQ:
23797 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023798 case WDI_DHCP_START_IND:
23799 return WLAN_HAL_DHCP_START_IND;
23800 case WDI_DHCP_STOP_IND:
23801 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023802#ifdef FEATURE_WLAN_LPHB
23803 case WDI_LPHB_CFG_REQ:
23804 return WLAN_HAL_LPHB_CFG_REQ;
23805#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023806 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23807 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23808 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23809 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23810
Rajeev79dbe4c2013-10-05 11:03:42 +053023811#ifdef FEATURE_WLAN_BATCH_SCAN
23812 case WDI_SET_BATCH_SCAN_REQ:
23813 return WLAN_HAL_BATCHSCAN_SET_REQ;
23814 case WDI_STOP_BATCH_SCAN_IND:
23815 return WLAN_HAL_BATCHSCAN_STOP_IND;
23816 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23817 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23818#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023819 case WDI_RATE_UPDATE_IND:
23820 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023821 case WDI_START_HT40_OBSS_SCAN_IND:
23822 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23823 case WDI_STOP_HT40_OBSS_SCAN_IND:
23824 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023825 case WDI_UPDATE_CHAN_REQ:
23826 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023827 case WDI_CH_SWITCH_REQ_V1:
23828 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023829 case WDI_GET_BCN_MISS_RATE_REQ:
23830 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023831
23832#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23833 case WDI_LL_STATS_SET_REQ:
23834 return WLAN_HAL_LL_SET_STATS_REQ;
23835 case WDI_LL_STATS_GET_REQ:
23836 return WLAN_HAL_LL_GET_STATS_REQ;
23837 case WDI_LL_STATS_CLEAR_REQ:
23838 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23839#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023840#ifdef WLAN_FEATURE_EXTSCAN
23841 case WDI_EXTSCAN_START_REQ:
23842 return WLAN_HAL_EXT_SCAN_START_REQ;
23843 case WDI_EXTSCAN_STOP_REQ:
23844 return WLAN_HAL_EXT_SCAN_STOP_REQ;
23845 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
23846 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
23847 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
23848 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
23849 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
23850 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
23851 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
23852 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
23853 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
23854 return WLAN_HAL_SIG_RSSI_SET_REQ;
23855 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
23856 return WLAN_HAL_SIG_RSSI_RESET_REQ;
23857#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053023858 case WDI_SPOOF_MAC_ADDR_REQ:
23859 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023860 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023861 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023863
Jeff Johnson295189b2012-06-20 16:38:30 -070023864}/*WDI_2_HAL_REQ_TYPE*/
23865
23866/*Convert WDI response type into HAL response type*/
23867WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23868HAL_2_WDI_RSP_TYPE
23869(
23870 tHalHostMsgType halMsg
23871)
23872{
Jeff Johnsone7245742012-09-05 17:12:55 -070023873 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023874 the chances of getting inlined*/
23875 switch( halMsg )
23876 {
23877 case WLAN_HAL_START_RSP:
23878 return WDI_START_RESP;
23879 case WLAN_HAL_STOP_RSP:
23880 return WDI_STOP_RESP;
23881 case WLAN_HAL_INIT_SCAN_RSP:
23882 return WDI_INIT_SCAN_RESP;
23883 case WLAN_HAL_START_SCAN_RSP:
23884 return WDI_START_SCAN_RESP;
23885 case WLAN_HAL_END_SCAN_RSP:
23886 return WDI_END_SCAN_RESP;
23887 case WLAN_HAL_FINISH_SCAN_RSP:
23888 return WDI_FINISH_SCAN_RESP;
23889 case WLAN_HAL_CONFIG_STA_RSP:
23890 return WDI_CONFIG_STA_RESP;
23891 case WLAN_HAL_DELETE_STA_RSP:
23892 return WDI_DEL_STA_RESP;
23893 case WLAN_HAL_CONFIG_BSS_RSP:
23894 return WDI_CONFIG_BSS_RESP;
23895 case WLAN_HAL_DELETE_BSS_RSP:
23896 return WDI_DEL_BSS_RESP;
23897 case WLAN_HAL_JOIN_RSP:
23898 return WDI_JOIN_RESP;
23899 case WLAN_HAL_POST_ASSOC_RSP:
23900 return WDI_POST_ASSOC_RESP;
23901 case WLAN_HAL_SET_BSSKEY_RSP:
23902 return WDI_SET_BSS_KEY_RESP;
23903 case WLAN_HAL_SET_STAKEY_RSP:
23904 return WDI_SET_STA_KEY_RESP;
23905 case WLAN_HAL_RMV_BSSKEY_RSP:
23906 return WDI_RMV_BSS_KEY_RESP;
23907 case WLAN_HAL_RMV_STAKEY_RSP:
23908 return WDI_RMV_STA_KEY_RESP;
23909 case WLAN_HAL_SET_BCASTKEY_RSP:
23910 return WDI_SET_STA_BCAST_KEY_RESP;
23911 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23912 // return WDI_RMV_STA_BCAST_KEY_RESP;
23913 case WLAN_HAL_ADD_TS_RSP:
23914 return WDI_ADD_TS_RESP;
23915 case WLAN_HAL_DEL_TS_RSP:
23916 return WDI_DEL_TS_RESP;
23917 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23918 return WDI_UPD_EDCA_PRMS_RESP;
23919 case WLAN_HAL_ADD_BA_RSP:
23920 return WDI_ADD_BA_RESP;
23921 case WLAN_HAL_DEL_BA_RSP:
23922 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023923#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 case WLAN_HAL_TSM_STATS_RSP:
23925 return WDI_TSM_STATS_RESP;
23926#endif
23927 case WLAN_HAL_CH_SWITCH_RSP:
23928 return WDI_CH_SWITCH_RESP;
23929 case WLAN_HAL_SET_LINK_ST_RSP:
23930 return WDI_SET_LINK_ST_RESP;
23931 case WLAN_HAL_GET_STATS_RSP:
23932 return WDI_GET_STATS_RESP;
23933 case WLAN_HAL_UPDATE_CFG_RSP:
23934 return WDI_UPDATE_CFG_RESP;
23935 case WLAN_HAL_ADD_BA_SESSION_RSP:
23936 return WDI_ADD_BA_SESSION_RESP;
23937 case WLAN_HAL_TRIGGER_BA_RSP:
23938 return WDI_TRIGGER_BA_RESP;
23939 case WLAN_HAL_UPDATE_BEACON_RSP:
23940 return WDI_UPD_BCON_PRMS_RESP;
23941 case WLAN_HAL_SEND_BEACON_RSP:
23942 return WDI_SND_BCON_RESP;
23943 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23944 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23945 /*Indications*/
23946 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23947 return WDI_HAL_RSSI_NOTIFICATION_IND;
23948 case WLAN_HAL_MISSED_BEACON_IND:
23949 return WDI_HAL_MISSED_BEACON_IND;
23950 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23951 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23952 case WLAN_HAL_MIC_FAILURE_IND:
23953 return WDI_HAL_MIC_FAILURE_IND;
23954 case WLAN_HAL_FATAL_ERROR_IND:
23955 return WDI_HAL_FATAL_ERROR_IND;
23956 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23957 return WDI_HAL_DEL_STA_IND;
23958 case WLAN_HAL_COEX_IND:
23959 return WDI_HAL_COEX_IND;
23960 case WLAN_HAL_OTA_TX_COMPL_IND:
23961 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023962 case WLAN_HAL_P2P_NOA_ATTR_IND:
23963 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023964 case WLAN_HAL_P2P_NOA_START_IND:
23965 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053023966 case WLAN_HAL_DEL_BA_IND:
23967 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023968 case WLAN_HAL_TX_PER_HIT_IND:
23969 return WDI_HAL_TX_PER_HIT_IND;
23970 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23971 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023972 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23973 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023974 case WLAN_HAL_SET_TX_POWER_RSP:
23975 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 case WLAN_HAL_SET_P2P_GONOA_RSP:
23977 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023978#ifdef FEATURE_WLAN_TDLS
23979 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23980 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053023981 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
23982 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023983 case WLAN_HAL_TDLS_IND:
23984 return WDI_HAL_TDLS_IND;
23985#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023987 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023989 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023990 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023991 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023992 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023993 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023994 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023995 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023996 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023997 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023998 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023999 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024001 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024002 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024003 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024004 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24005 return WDI_SET_BEACON_FILTER_RESP;
24006 case WLAN_HAL_REM_BCN_FILTER_RSP:
24007 return WDI_REM_BEACON_FILTER_RESP;
24008 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24009 return WDI_SET_RSSI_THRESHOLDS_RESP;
24010 case WLAN_HAL_HOST_OFFLOAD_RSP:
24011 return WDI_HOST_OFFLOAD_RESP;
24012 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24013 return WDI_WOWL_ADD_BC_PTRN_RESP;
24014 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24015 return WDI_WOWL_DEL_BC_PTRN_RESP;
24016 case WLAN_HAL_ENTER_WOWL_RSP:
24017 return WDI_WOWL_ENTER_RESP;
24018 case WLAN_HAL_EXIT_WOWL_RSP:
24019 return WDI_WOWL_EXIT_RESP;
24020 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24021 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24022 case WLAN_HAL_DOWNLOAD_NV_RSP:
24023 return WDI_NV_DOWNLOAD_RESP;
24024 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24025 return WDI_FLUSH_AC_RESP;
24026 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24027 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024028 case WLAN_HAL_PROCESS_PTT_RSP:
24029 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024030 case WLAN_HAL_ADD_STA_SELF_RSP:
24031 return WDI_ADD_STA_SELF_RESP;
24032case WLAN_HAL_DEL_STA_SELF_RSP:
24033 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024034#ifdef FEATURE_OEM_DATA_SUPPORT
24035 case WLAN_HAL_START_OEM_DATA_RSP:
24036 return WDI_START_OEM_DATA_RESP;
24037#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 case WLAN_HAL_HOST_RESUME_RSP:
24039 return WDI_HOST_RESUME_RESP;
24040 case WLAN_HAL_KEEP_ALIVE_RSP:
24041 return WDI_KEEP_ALIVE_RESP;
24042#ifdef FEATURE_WLAN_SCAN_PNO
24043 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24044 return WDI_SET_PREF_NETWORK_RESP;
24045 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024046 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024047 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24048 return WDI_UPDATE_SCAN_PARAMS_RESP;
24049 case WLAN_HAL_PREF_NETW_FOUND_IND:
24050 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24051#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024052#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024053 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24054 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024055#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024056 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24057 return WDI_SET_TX_PER_TRACKING_RESP;
24058#ifdef WLAN_FEATURE_PACKET_FILTERING
24059 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24060 return WDI_8023_MULTICAST_LIST_RESP;
24061 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24062 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24063 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24064 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24065 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24066 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24067#endif // WLAN_FEATURE_PACKET_FILTERING
24068
24069 case WLAN_HAL_DUMP_COMMAND_RSP:
24070 return WDI_HAL_DUMP_CMD_RESP;
24071 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24072 return WDI_SET_POWER_PARAMS_RESP;
24073#ifdef WLAN_FEATURE_VOWIFI_11R
24074 case WLAN_HAL_AGGR_ADD_TS_RSP:
24075 return WDI_AGGR_ADD_TS_RESP;
24076#endif
24077
24078#ifdef WLAN_FEATURE_GTK_OFFLOAD
24079 case WLAN_HAL_GTK_OFFLOAD_RSP:
24080 return WDI_GTK_OFFLOAD_RESP;
24081 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24082 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24083#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24084#ifdef WLAN_WAKEUP_EVENTS
24085 case WLAN_HAL_WAKE_REASON_IND:
24086 return WDI_HAL_WAKE_REASON_IND;
24087#endif // WLAN_WAKEUP_EVENTS
24088
24089 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24090 return WDI_SET_TM_LEVEL_RESP;
24091 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24092 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024093#ifdef WLAN_FEATURE_11AC
24094 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24095 return WDI_UPDATE_VHT_OP_MODE_RESP;
24096#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024097#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024098 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24099 return WDI_GET_ROAM_RSSI_RESP;
24100#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024101
Leo Chang9056f462013-08-01 19:21:11 -070024102#ifdef FEATURE_WLAN_LPHB
24103 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024104 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024105 case WLAN_HAL_LPHB_CFG_RSP:
24106 return WDI_LPHB_CFG_RESP;
24107#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024108
24109 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24110 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024111 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24112 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024113
Rajeev79dbe4c2013-10-05 11:03:42 +053024114#ifdef FEATURE_WLAN_BATCH_SCAN
24115 case WLAN_HAL_BATCHSCAN_SET_RSP:
24116 return WDI_SET_BATCH_SCAN_RESP;
24117 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24118 return WDI_BATCHSCAN_RESULT_IND;
24119#endif // FEATURE_WLAN_BATCH_SCAN
24120
Leo Chang0b0e45a2013-12-15 15:18:55 -080024121#ifdef FEATURE_WLAN_CH_AVOID
24122 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24123 return WDI_HAL_CH_AVOID_IND;
24124#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024125 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24126 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024127 case WLAN_HAL_PRINT_REG_INFO_IND:
24128 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024129 case WLAN_HAL_CH_SWITCH_V1_RSP:
24130 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024131 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24132 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024133#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24134 case WLAN_HAL_LL_SET_STATS_RSP:
24135 return WDI_LL_STATS_SET_RSP;
24136 case WLAN_HAL_LL_GET_STATS_RSP:
24137 return WDI_LL_STATS_GET_RSP;
24138 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24139 return WDI_LL_STATS_CLEAR_RSP;
24140 case WLAN_HAL_LL_NOTIFY_STATS:
24141 return WDI_HAL_LL_STATS_RESULTS_IND;
24142#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024143#ifdef WLAN_FEATURE_EXTSCAN
24144 case WLAN_HAL_EXT_SCAN_START_RSP:
24145 return WDI_EXTSCAN_START_RSP;
24146 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24147 return WDI_EXTSCAN_STOP_RSP;
24148 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24149 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24150 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24151 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24152 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24153 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24154 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24155 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24156 case WLAN_HAL_SIG_RSSI_SET_RSP:
24157 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24158 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24159 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24160 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24161 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24162 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24163 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24164 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24165 return WDI_HAL_EXTSCAN_RESULT_IND;
24166 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24167 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24168 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24169 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24170#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024171 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24172 return WDI_SPOOF_MAC_ADDR_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053024173
Jeff Johnson295189b2012-06-20 16:38:30 -070024174 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024175 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024176 }
24177
24178}/*HAL_2_WDI_RSP_TYPE*/
24179
24180
24181/*Convert WDI driver type into HAL driver type*/
24182WPT_STATIC WPT_INLINE tDriverType
24183WDI_2_HAL_DRV_TYPE
24184(
24185 WDI_DriverType wdiDriverType
24186)
24187{
Jeff Johnsone7245742012-09-05 17:12:55 -070024188 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024189 the chances of getting inlined*/
24190 switch( wdiDriverType )
24191 {
24192 case WDI_DRIVER_TYPE_PRODUCTION:
24193 return eDRIVER_TYPE_PRODUCTION;
24194 case WDI_DRIVER_TYPE_MFG:
24195 return eDRIVER_TYPE_MFG;
24196 case WDI_DRIVER_TYPE_DVT:
24197 return eDRIVER_TYPE_DVT;
24198 }
24199
Jeff Johnsone7245742012-09-05 17:12:55 -070024200 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024201}/*WDI_2_HAL_DRV_TYPE*/
24202
24203
24204/*Convert WDI stop reason into HAL stop reason*/
24205WPT_STATIC WPT_INLINE tHalStopType
24206WDI_2_HAL_STOP_REASON
24207(
24208 WDI_StopType wdiDriverType
24209)
24210{
Jeff Johnsone7245742012-09-05 17:12:55 -070024211 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024212 the chances of getting inlined*/
24213 switch( wdiDriverType )
24214 {
24215 case WDI_STOP_TYPE_SYS_RESET:
24216 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024217 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24218 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024219 case WDI_STOP_TYPE_RF_KILL:
24220 return HAL_STOP_TYPE_RF_KILL;
24221 }
24222
Jeff Johnsone7245742012-09-05 17:12:55 -070024223 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024224}/*WDI_2_HAL_STOP_REASON*/
24225
24226
24227/*Convert WDI scan mode type into HAL scan mode type*/
24228WPT_STATIC WPT_INLINE eHalSysMode
24229WDI_2_HAL_SCAN_MODE
24230(
24231 WDI_ScanMode wdiScanMode
24232)
24233{
Jeff Johnsone7245742012-09-05 17:12:55 -070024234 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024235 the chances of getting inlined*/
24236 switch( wdiScanMode )
24237 {
24238 case WDI_SCAN_MODE_NORMAL:
24239 return eHAL_SYS_MODE_NORMAL;
24240 case WDI_SCAN_MODE_LEARN:
24241 return eHAL_SYS_MODE_LEARN;
24242 case WDI_SCAN_MODE_SCAN:
24243 return eHAL_SYS_MODE_SCAN;
24244 case WDI_SCAN_MODE_PROMISC:
24245 return eHAL_SYS_MODE_PROMISC;
24246 case WDI_SCAN_MODE_SUSPEND_LINK:
24247 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024248 case WDI_SCAN_MODE_ROAM_SCAN:
24249 return eHAL_SYS_MODE_ROAM_SCAN;
24250 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24251 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 }
24253
Jeff Johnsone7245742012-09-05 17:12:55 -070024254 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024255}/*WDI_2_HAL_SCAN_MODE*/
24256
24257/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024258WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024259WDI_2_HAL_SEC_CH_OFFSET
24260(
24261 WDI_HTSecondaryChannelOffset wdiSecChOffset
24262)
24263{
Jeff Johnsone7245742012-09-05 17:12:55 -070024264 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 the chances of getting inlined*/
24266 switch( wdiSecChOffset )
24267 {
24268 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024269 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024270 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024271 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024272 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024273 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24274#ifdef WLAN_FEATURE_11AC
24275 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24276 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24277 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24278 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24279 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24280 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24281 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24282 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24283 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24284 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24285 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24286 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24287 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24288 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24289#endif
24290 default:
24291 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024292 }
24293
Jeff Johnsone7245742012-09-05 17:12:55 -070024294 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024295}/*WDI_2_HAL_SEC_CH_OFFSET*/
24296
24297/*Convert WDI BSS type into HAL BSS type*/
24298WPT_STATIC WPT_INLINE tSirBssType
24299WDI_2_HAL_BSS_TYPE
24300(
24301 WDI_BssType wdiBSSType
24302)
24303{
Jeff Johnsone7245742012-09-05 17:12:55 -070024304 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 the chances of getting inlined*/
24306 switch( wdiBSSType )
24307 {
24308 case WDI_INFRASTRUCTURE_MODE:
24309 return eSIR_INFRASTRUCTURE_MODE;
24310 case WDI_INFRA_AP_MODE:
24311 return eSIR_INFRA_AP_MODE;
24312 case WDI_IBSS_MODE:
24313 return eSIR_IBSS_MODE;
24314 case WDI_BTAMP_STA_MODE:
24315 return eSIR_BTAMP_STA_MODE;
24316 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 case WDI_BSS_AUTO_MODE:
24319 return eSIR_AUTO_MODE;
24320 }
24321
Jeff Johnsone7245742012-09-05 17:12:55 -070024322 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024323}/*WDI_2_HAL_BSS_TYPE*/
24324
24325/*Convert WDI NW type into HAL NW type*/
24326WPT_STATIC WPT_INLINE tSirNwType
24327WDI_2_HAL_NW_TYPE
24328(
24329 WDI_NwType wdiNWType
24330)
24331{
Jeff Johnsone7245742012-09-05 17:12:55 -070024332 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024333 the chances of getting inlined*/
24334 switch( wdiNWType )
24335 {
24336 case WDI_11A_NW_TYPE:
24337 return eSIR_11A_NW_TYPE;
24338 case WDI_11B_NW_TYPE:
24339 return eSIR_11B_NW_TYPE;
24340 case WDI_11G_NW_TYPE:
24341 return eSIR_11G_NW_TYPE;
24342 case WDI_11N_NW_TYPE:
24343 return eSIR_11N_NW_TYPE;
24344 }
24345
Jeff Johnsone7245742012-09-05 17:12:55 -070024346 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024347}/*WDI_2_HAL_NW_TYPE*/
24348
24349/*Convert WDI chanel bonding type into HAL cb type*/
24350WPT_STATIC WPT_INLINE ePhyChanBondState
24351WDI_2_HAL_CB_STATE
24352(
24353 WDI_PhyChanBondState wdiCbState
24354)
24355{
Jeff Johnsone7245742012-09-05 17:12:55 -070024356 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 the chances of getting inlined*/
24358 switch ( wdiCbState )
24359 {
24360 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24361 return PHY_SINGLE_CHANNEL_CENTERED;
24362 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24363 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24364 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24365 return PHY_DOUBLE_CHANNEL_CENTERED;
24366 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24367 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024368#ifdef WLAN_FEATURE_11AC
24369 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24370 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24371 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24372 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24373 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24374 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24375 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24376 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24377 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24378 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24379 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24380 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24381 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24382 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24383#endif
24384 case WDI_MAX_CB_STATE:
24385 default:
24386 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024387 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024388
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 return PHY_CHANNEL_BONDING_STATE_MAX;
24390}/*WDI_2_HAL_CB_STATE*/
24391
24392/*Convert WDI chanel bonding type into HAL cb type*/
24393WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24394WDI_2_HAL_HT_OPER_MODE
24395(
24396 WDI_HTOperatingMode wdiHTOperMode
24397)
24398{
Jeff Johnsone7245742012-09-05 17:12:55 -070024399 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 the chances of getting inlined*/
24401 switch ( wdiHTOperMode )
24402 {
24403 case WDI_HT_OP_MODE_PURE:
24404 return eSIR_HT_OP_MODE_PURE;
24405 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24406 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24407 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24408 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24409 case WDI_HT_OP_MODE_MIXED:
24410 return eSIR_HT_OP_MODE_MIXED;
24411 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024412
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 return eSIR_HT_OP_MODE_MAX;
24414}/*WDI_2_HAL_HT_OPER_MODE*/
24415
24416/*Convert WDI mimo PS type into HAL mimo PS type*/
24417WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24418WDI_2_HAL_MIMO_PS
24419(
24420 WDI_HTMIMOPowerSaveState wdiHTOperMode
24421)
24422{
Jeff Johnsone7245742012-09-05 17:12:55 -070024423 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024424 the chances of getting inlined*/
24425 switch ( wdiHTOperMode )
24426 {
24427 case WDI_HT_MIMO_PS_STATIC:
24428 return eSIR_HT_MIMO_PS_STATIC;
24429 case WDI_HT_MIMO_PS_DYNAMIC:
24430 return eSIR_HT_MIMO_PS_DYNAMIC;
24431 case WDI_HT_MIMO_PS_NA:
24432 return eSIR_HT_MIMO_PS_NA;
24433 case WDI_HT_MIMO_PS_NO_LIMIT:
24434 return eSIR_HT_MIMO_PS_NO_LIMIT;
24435 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024436
Jeff Johnson295189b2012-06-20 16:38:30 -070024437 return eSIR_HT_MIMO_PS_MAX;
24438}/*WDI_2_HAL_MIMO_PS*/
24439
24440/*Convert WDI ENC type into HAL ENC type*/
24441WPT_STATIC WPT_INLINE tAniEdType
24442WDI_2_HAL_ENC_TYPE
24443(
24444 WDI_EncryptType wdiEncType
24445)
24446{
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 the chances of getting inlined*/
24449 switch ( wdiEncType )
24450 {
24451 case WDI_ENCR_NONE:
24452 return eSIR_ED_NONE;
24453
24454 case WDI_ENCR_WEP40:
24455 return eSIR_ED_WEP40;
24456
24457 case WDI_ENCR_WEP104:
24458 return eSIR_ED_WEP104;
24459
24460 case WDI_ENCR_TKIP:
24461 return eSIR_ED_TKIP;
24462
24463 case WDI_ENCR_CCMP:
24464 return eSIR_ED_CCMP;
24465
24466 case WDI_ENCR_AES_128_CMAC:
24467 return eSIR_ED_AES_128_CMAC;
24468#if defined(FEATURE_WLAN_WAPI)
24469 case WDI_ENCR_WPI:
24470 return eSIR_ED_WPI;
24471#endif
24472 default:
24473 return eSIR_ED_NOT_IMPLEMENTED;
24474 }
24475
24476}/*WDI_2_HAL_ENC_TYPE*/
24477
24478/*Convert WDI WEP type into HAL WEP type*/
24479WPT_STATIC WPT_INLINE tAniWepType
24480WDI_2_HAL_WEP_TYPE
24481(
24482 WDI_WepType wdiWEPType
24483)
24484{
Jeff Johnsone7245742012-09-05 17:12:55 -070024485 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024486 the chances of getting inlined*/
24487 switch ( wdiWEPType )
24488 {
24489 case WDI_WEP_STATIC:
24490 return eSIR_WEP_STATIC;
24491
24492 case WDI_WEP_DYNAMIC:
24493 return eSIR_WEP_DYNAMIC;
24494 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024495
Jeff Johnson295189b2012-06-20 16:38:30 -070024496 return eSIR_WEP_MAX;
24497}/*WDI_2_HAL_WEP_TYPE*/
24498
24499WPT_STATIC WPT_INLINE tSirLinkState
24500WDI_2_HAL_LINK_STATE
24501(
24502 WDI_LinkStateType wdiLinkState
24503)
24504{
Jeff Johnsone7245742012-09-05 17:12:55 -070024505 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024506 the chances of getting inlined*/
24507 switch ( wdiLinkState )
24508 {
24509 case WDI_LINK_IDLE_STATE:
24510 return eSIR_LINK_IDLE_STATE;
24511
24512 case WDI_LINK_PREASSOC_STATE:
24513 return eSIR_LINK_PREASSOC_STATE;
24514
24515 case WDI_LINK_POSTASSOC_STATE:
24516 return eSIR_LINK_POSTASSOC_STATE;
24517
24518 case WDI_LINK_AP_STATE:
24519 return eSIR_LINK_AP_STATE;
24520
24521 case WDI_LINK_IBSS_STATE:
24522 return eSIR_LINK_IBSS_STATE;
24523
24524 case WDI_LINK_BTAMP_PREASSOC_STATE:
24525 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24526
24527 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24528 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24529
24530 case WDI_LINK_BTAMP_AP_STATE:
24531 return eSIR_LINK_BTAMP_AP_STATE;
24532
24533 case WDI_LINK_BTAMP_STA_STATE:
24534 return eSIR_LINK_BTAMP_STA_STATE;
24535
24536 case WDI_LINK_LEARN_STATE:
24537 return eSIR_LINK_LEARN_STATE;
24538
24539 case WDI_LINK_SCAN_STATE:
24540 return eSIR_LINK_SCAN_STATE;
24541
24542 case WDI_LINK_FINISH_SCAN_STATE:
24543 return eSIR_LINK_FINISH_SCAN_STATE;
24544
24545 case WDI_LINK_INIT_CAL_STATE:
24546 return eSIR_LINK_INIT_CAL_STATE;
24547
24548 case WDI_LINK_FINISH_CAL_STATE:
24549 return eSIR_LINK_FINISH_CAL_STATE;
24550
Jeff Johnson295189b2012-06-20 16:38:30 -070024551 case WDI_LINK_LISTEN_STATE:
24552 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024553
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024554 case WDI_LINK_SEND_ACTION_STATE:
24555 return eSIR_LINK_SEND_ACTION_STATE;
24556
Jeff Johnson295189b2012-06-20 16:38:30 -070024557 default:
24558 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024559 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024560}
24561
Jeff Johnsone7245742012-09-05 17:12:55 -070024562/*Translate a STA Context from WDI into HAL*/
24563WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024564void
24565WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024566(
Jeff Johnson295189b2012-06-20 16:38:30 -070024567 tConfigStaParams* phalConfigSta,
24568 WDI_ConfigStaReqInfoType* pwdiConfigSta
24569)
24570{
24571 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024572#ifdef WLAN_FEATURE_11AC
24573 /* Get the Version 1 Handler */
24574 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24575 if (WDI_getFwWlanFeatCaps(DOT11AC))
24576 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024577 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024578 }
24579#endif
24580 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024581 the chances of getting inlined*/
24582
Jeff Johnsone7245742012-09-05 17:12:55 -070024583 wpalMemoryCopy(phalConfigSta->bssId,
24584 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24585
24586 wpalMemoryCopy(phalConfigSta->staMac,
24587 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024588
24589 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24590 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24591 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24592 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24593 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24594 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24595 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24596 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24597 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24598 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24599 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24600 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24601 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24602 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24603 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24604 phalConfigSta->action = pwdiConfigSta->wdiAction;
24605 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24606 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24607 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24608 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24609 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24610 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24611 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070024612
Jeff Johnson295189b2012-06-20 16:38:30 -070024613 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24614
Jeff Johnsone7245742012-09-05 17:12:55 -070024615 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024616 pwdiConfigSta->wdiSupportedRates.opRateMode;
24617 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24618 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024619 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024620 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24621 }
24622 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24623 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024624 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024625 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24626 }
24627 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24628 {
24629 phalConfigSta->supportedRates.aniLegacyRates[i] =
24630 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24631 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024632 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024633 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24634 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24635 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024636 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24638 }
24639 phalConfigSta->supportedRates.rxHighestDataRate =
24640 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24641
Jeff Johnsone7245742012-09-05 17:12:55 -070024642#ifdef WLAN_FEATURE_11AC
24643 if(phalConfigSta_V1 != NULL)
24644 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024645 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24646 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24647 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24648 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024649 }
24650#endif
24651
Jeff Johnson295189b2012-06-20 16:38:30 -070024652 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024653
Jeff Johnsone7245742012-09-05 17:12:55 -070024654#ifdef WLAN_FEATURE_11AC
24655 if(phalConfigSta_V1 != NULL)
24656 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024657 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24658 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024659 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053024660 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024661 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24662 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24663
Jeff Johnsone7245742012-09-05 17:12:55 -070024664 }
24665#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024666}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024667
24668/*Translate a Rate set info from WDI into HAL*/
24669WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024670WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024671(
Jeff Johnson295189b2012-06-20 16:38:30 -070024672 tSirMacRateSet* pHalRateSet,
24673 WDI_RateSet* pwdiRateSet
24674)
24675{
Jeff Johnsone7245742012-09-05 17:12:55 -070024676 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24678
24679 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24680 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24681
24682 for ( i = 0; i < pHalRateSet->numRates; i++ )
24683 {
24684 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24685 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024686
Jeff Johnson295189b2012-06-20 16:38:30 -070024687}/*WDI_CopyWDIRateSetToHALRateSet*/
24688
24689
24690/*Translate an EDCA Parameter Record from WDI into HAL*/
24691WPT_STATIC WPT_INLINE void
24692WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024693(
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 tSirMacEdcaParamRecord* phalEdcaParam,
24695 WDI_EdcaParamRecord* pWDIEdcaParam
24696)
24697{
Jeff Johnsone7245742012-09-05 17:12:55 -070024698 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024699 the chances of getting inlined*/
24700
24701 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24702 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24703 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24704 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24705
24706 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24707 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24708 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24709}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24710
24711
24712/*Copy a management frame header from WDI fmt into HAL fmt*/
24713WPT_STATIC WPT_INLINE void
24714WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24715(
24716 tSirMacMgmtHdr* pmacMgmtHdr,
24717 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24718)
24719{
24720 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24721 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24722 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24723 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24724 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24725 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24726 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24727 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24728 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24729 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24730 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24731
24732 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24733 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24734
Jeff Johnsone7245742012-09-05 17:12:55 -070024735 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024736 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024737 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024738 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024739 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024740 pwdiMacMgmtHdr->bssId, 6);
24741
24742 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24743 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24744 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24745
24746}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24747
24748
24749/*Copy config bss parameters from WDI fmt into HAL fmt*/
24750WPT_STATIC WPT_INLINE void
24751WDI_CopyWDIConfigBSSToHALConfigBSS
24752(
24753 tConfigBssParams* phalConfigBSS,
24754 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24755)
24756{
24757
24758 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024759#ifdef WLAN_FEATURE_11AC
24760 /* Get the Version 1 Handler */
24761 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24762 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024763 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024764#endif
24765
Jeff Johnson295189b2012-06-20 16:38:30 -070024766 wpalMemoryCopy( phalConfigBSS->bssId,
24767 pwdiConfigBSS->macBSSID,
24768 WDI_MAC_ADDR_LEN);
24769
24770#ifdef HAL_SELF_STA_PER_BSS
24771 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24772 pwdiConfigBSS->macSelfAddr,
24773 WDI_MAC_ADDR_LEN);
24774#endif
24775
24776 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24777
24778 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24779 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24780
Jeff Johnsone7245742012-09-05 17:12:55 -070024781 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024782 pwdiConfigBSS->ucShortSlotTimeSupported;
24783 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24784 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24785 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24786 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24787 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024788 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024789 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24790 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24791 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24792 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24793 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24794 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24795 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24796 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24797 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24798 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24799 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24800
Jeff Johnsone7245742012-09-05 17:12:55 -070024801 phalConfigBSS->htOperMode =
24802 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024803
24804 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24805 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24806 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24807 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24808
24809#ifdef WLAN_FEATURE_VOWIFI
24810 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24811#endif
24812
24813 /*! Used 32 as magic number because that is how the ssid is declared inside the
24814 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024815 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024816 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24817 pwdiConfigBSS->wdiSSID.ucLength : 32;
24818 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024819 pwdiConfigBSS->wdiSSID.sSSID,
24820 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024821
24822 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24823 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024824
Jeff Johnson295189b2012-06-20 16:38:30 -070024825 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24826 &pwdiConfigBSS->wdiRateSet);
24827
24828 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24829
24830 if(phalConfigBSS->edcaParamsValid)
24831 {
24832 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24833 &pwdiConfigBSS->wdiBEEDCAParams);
24834 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24835 &pwdiConfigBSS->wdiBKEDCAParams);
24836 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24837 &pwdiConfigBSS->wdiVIEDCAParams);
24838 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24839 &pwdiConfigBSS->wdiVOEDCAParams);
24840 }
24841
Jeff Johnsone7245742012-09-05 17:12:55 -070024842 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024843
24844 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24845
24846#ifdef WLAN_FEATURE_VOWIFI_11R
24847
Jeff Johnsone7245742012-09-05 17:12:55 -070024848 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024849 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024850
Jeff Johnson295189b2012-06-20 16:38:30 -070024851 if( phalConfigBSS->extSetStaKeyParamValid )
24852 {
24853 /*-----------------------------------------------------------------------
24854 Copy the STA Key parameters into the HAL message
24855 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024856 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024857 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24858
Jeff Johnsone7245742012-09-05 17:12:55 -070024859 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024860 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24861
24862 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24863
24864 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24865
24866 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24867
Jeff Johnson295189b2012-06-20 16:38:30 -070024868 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24869 keyIndex++)
24870 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024871 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024872 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24873 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24874 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24875 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24876 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24877 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024878 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024879 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024880 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024881 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024882 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024883 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24884 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070024885 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070024886 WDI_MAX_KEY_LENGTH);
24887 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024888 }
24889 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
24890 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024891 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070024892 sizeof(phalConfigBSS->extSetStaKeyParam) );
24893 }
24894
24895#endif /*WLAN_FEATURE_VOWIFI_11R*/
24896
Jeff Johnsone7245742012-09-05 17:12:55 -070024897#ifdef WLAN_FEATURE_11AC
24898 if(phalConfigBSS_V1 != NULL)
24899 {
24900 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
24901 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
24902 }
24903#endif
24904
Jeff Johnson295189b2012-06-20 16:38:30 -070024905}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
24906
24907
Jeff Johnsone7245742012-09-05 17:12:55 -070024908/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024909 pointed to by user data */
24910WPT_STATIC WPT_INLINE void
24911WDI_ExtractRequestCBFromEvent
24912(
24913 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070024914 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070024915 void** ppUserData
24916)
24917{
24918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24919 switch ( pEvent->wdiRequest )
24920 {
24921 case WDI_START_REQ:
24922 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24923 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
24924 break;
24925 case WDI_STOP_REQ:
24926 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24927 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
24928 break;
24929 case WDI_INIT_SCAN_REQ:
24930 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24931 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
24932 break;
24933 case WDI_START_SCAN_REQ:
24934 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24935 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
24936 break;
24937 case WDI_END_SCAN_REQ:
24938 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24939 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
24940 break;
24941 case WDI_FINISH_SCAN_REQ:
24942 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24943 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24944 break;
24945 case WDI_JOIN_REQ:
24946 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24947 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24948 break;
24949 case WDI_CONFIG_BSS_REQ:
24950 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24951 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24952 break;
24953 case WDI_DEL_BSS_REQ:
24954 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24955 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24956 break;
24957 case WDI_POST_ASSOC_REQ:
24958 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24959 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24960 break;
24961 case WDI_DEL_STA_REQ:
24962 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24963 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24964 break;
24965 case WDI_DEL_STA_SELF_REQ:
24966 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24967 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24968 break;
24969
24970 case WDI_SET_BSS_KEY_REQ:
24971 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24972 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24973 break;
24974 case WDI_RMV_BSS_KEY_REQ:
24975 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24976 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24977 break;
24978 case WDI_SET_STA_KEY_REQ:
24979 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24980 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24981 break;
24982 case WDI_RMV_STA_KEY_REQ:
24983 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24984 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24985 break;
24986 case WDI_ADD_TS_REQ:
24987 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24988 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24989 break;
24990 case WDI_DEL_TS_REQ:
24991 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24992 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24993 break;
24994 case WDI_UPD_EDCA_PRMS_REQ:
24995 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24996 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24997 break;
24998 case WDI_ADD_BA_SESSION_REQ:
24999 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25000 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25001 break;
25002 case WDI_DEL_BA_REQ:
25003 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25004 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25005 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025006#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025007 case WDI_TSM_STATS_REQ:
25008 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25009 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25010 break;
25011#endif
25012 case WDI_CH_SWITCH_REQ:
25013 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25014 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25015 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025016 case WDI_CH_SWITCH_REQ_V1:
25017 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25018 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25019 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025020 case WDI_CONFIG_STA_REQ:
25021 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25022 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25023 break;
25024 case WDI_SET_LINK_ST_REQ:
25025 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25026 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25027 break;
25028 case WDI_GET_STATS_REQ:
25029 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25030 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25031 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025032#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025033 case WDI_GET_ROAM_RSSI_REQ:
25034 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25035 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25036 break;
25037#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025038 case WDI_UPDATE_CFG_REQ:
25039 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25040 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25041 break;
25042 case WDI_ADD_BA_REQ:
25043 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25044 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25045 break;
25046 case WDI_TRIGGER_BA_REQ:
25047 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25048 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25049 break;
25050 case WDI_UPD_BCON_PRMS_REQ:
25051 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25052 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25053 break;
25054 case WDI_SND_BCON_REQ:
25055 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25056 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25057 break;
25058 case WDI_ENTER_BMPS_REQ:
25059 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25060 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25061 break;
25062 case WDI_EXIT_BMPS_REQ:
25063 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25064 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25065 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025066 case WDI_ENTER_IMPS_REQ:
25067 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25068 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25069 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025070 case WDI_ENTER_UAPSD_REQ:
25071 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25072 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25073 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025074 case WDI_EXIT_UAPSD_REQ:
25075 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25076 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25077 break;
25078 case WDI_SET_UAPSD_PARAM_REQ:
25079 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25080 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25081 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025082 case WDI_UPDATE_UAPSD_PARAM_REQ:
25083 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25084 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25085 break;
25086 case WDI_CONFIGURE_RXP_FILTER_REQ:
25087 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25088 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25089 break;
25090 case WDI_SET_BEACON_FILTER_REQ:
25091 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25092 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25093 break;
25094 case WDI_REM_BEACON_FILTER_REQ:
25095 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25096 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025097 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025098 case WDI_SET_RSSI_THRESHOLDS_REQ:
25099 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25100 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25101 break;
25102 case WDI_HOST_OFFLOAD_REQ:
25103 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25104 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25105 break;
25106 case WDI_WOWL_ADD_BC_PTRN_REQ:
25107 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25108 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25109 break;
25110 case WDI_WOWL_DEL_BC_PTRN_REQ:
25111 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25112 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25113 break;
25114 case WDI_WOWL_ENTER_REQ:
25115 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25116 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25117 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025118 case WDI_WOWL_EXIT_REQ:
25119 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25120 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25121 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25123 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25124 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25125 break;
25126 case WDI_FLUSH_AC_REQ:
25127 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25128 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25129 break;
25130 case WDI_BTAMP_EVENT_REQ:
25131 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25132 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25133 break;
25134 case WDI_KEEP_ALIVE_REQ:
25135 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25136 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25137 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025138#if defined FEATURE_WLAN_SCAN_PNO
25139 case WDI_SET_PREF_NETWORK_REQ:
25140 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25141 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25142 break;
25143 case WDI_SET_RSSI_FILTER_REQ:
25144 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25145 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25146 break;
25147 case WDI_UPDATE_SCAN_PARAMS_REQ:
25148 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25149 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25150 break;
25151#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025152 case WDI_SET_TX_PER_TRACKING_REQ:
25153 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25154 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025155 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025156#if defined WLAN_FEATURE_PACKET_FILTERING
25157 case WDI_8023_MULTICAST_LIST_REQ:
25158 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25159 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25160 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025161 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25162 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25163 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25164 break;
25165 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25166 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25167 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25168 break;
25169 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25170 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25171 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25172 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025173#endif
25174 case WDI_SET_POWER_PARAMS_REQ:
25175 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25176 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25177 break;
25178#if defined WLAN_FEATURE_GTK_OFFLOAD
25179 case WDI_GTK_OFFLOAD_REQ:
25180 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25181 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25182 break;
25183 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25184 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25185 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25186 break;
25187#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025188
Siddharth Bhal171788a2014-09-29 21:02:40 +053025189 case WDI_SPOOF_MAC_ADDR_REQ:
25190 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25191 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25192 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025193 default:
25194 *ppfnReqCB = NULL;
25195 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025196 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025197 }
25198}/*WDI_ExtractRequestCBFromEvent*/
25199
25200
25201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025202 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025203 frame xtl is enabled for a particular STA.
25204
25205 WDI_PostAssocReq must have been called.
25206
Jeff Johnsone7245742012-09-05 17:12:55 -070025207 @param uSTAIdx: STA index
25208
Jeff Johnson295189b2012-06-20 16:38:30 -070025209 @see WDI_PostAssocReq
25210 @return Result of the function call
25211*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025212wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025213WDI_IsHwFrameTxTranslationCapable
25214(
25215 wpt_uint8 uSTAIdx
25216)
25217{
Jeff Johnsone7245742012-09-05 17:12:55 -070025218 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025219 uma value*/
25220 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025221 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025222 ------------------------------------------------------------------------*/
25223 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25224 {
25225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25226 "WDI API call before module is initialized - Fail request");
25227
Jeff Johnsone7245742012-09-05 17:12:55 -070025228 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025229 }
25230
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025231#ifdef WLAN_SOFTAP_VSTA_FEATURE
25232 if (IS_VSTA_IDX(uSTAIdx))
25233 {
25234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25235 "STA %d is a Virtual STA, "
25236 "HW frame translation disabled", uSTAIdx);
25237 return eWLAN_PAL_FALSE;
25238 }
25239#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025240
Jeff Johnson295189b2012-06-20 16:38:30 -070025241 return gWDICb.bFrameTransEnabled;
25242}/*WDI_IsHwFrameTxTranslationCapable*/
25243
Katya Nigam6201c3e2014-05-27 17:51:42 +053025244
25245/**
25246 @brief WDI_IsSelfSTA - check if staid is self sta index
25247
25248
25249 @param pWDICtx: pointer to the WLAN DAL context
25250 ucSTAIdx: station index
25251
25252 @return Result of the function call
25253*/
25254wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25255{
25256 wpt_uint8 ucSTAType;
25257
25258 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25259 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25260 {
25261 if( ucSTAType == WDI_STA_ENTRY_SELF )
25262 return eWLAN_PAL_TRUE;
25263 }
25264
25265 return eWLAN_PAL_FALSE;
25266}
25267
25268
25269
Jeff Johnson295189b2012-06-20 16:38:30 -070025270#ifdef FEATURE_WLAN_SCAN_PNO
25271/**
25272 @brief WDI_SetPreferredNetworkList
25273
Jeff Johnsone7245742012-09-05 17:12:55 -070025274 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025275 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025276
Jeff Johnson295189b2012-06-20 16:38:30 -070025277 wdiPNOScanCb: callback for passing back the response
25278 of the Set PNO operation received from the
25279 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025280
Jeff Johnson295189b2012-06-20 16:38:30 -070025281 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025282 callback
25283
Jeff Johnson295189b2012-06-20 16:38:30 -070025284 @return Result of the function call
25285*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025286WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025287WDI_SetPreferredNetworkReq
25288(
25289 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25290 WDI_PNOScanCb wdiPNOScanCb,
25291 void* pUserData
25292)
25293{
25294 WDI_EventInfoType wdiEventData = {{0}};
25295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25296
25297 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025298 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025299 ------------------------------------------------------------------------*/
25300 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25301 {
25302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25303 "WDI API call before module is initialized - Fail request");
25304
Jeff Johnsone7245742012-09-05 17:12:55 -070025305 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025306 }
25307
25308 /*------------------------------------------------------------------------
25309 Fill in Event data and post to the Main FSM
25310 ------------------------------------------------------------------------*/
25311 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025312 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025313 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025314 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025315 wdiEventData.pUserData = pUserData;
25316
25317 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25318}
25319
25320
25321/**
25322 @brief WDI_SetRssiFilterReq
25323
Jeff Johnsone7245742012-09-05 17:12:55 -070025324 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025325 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025326
Jeff Johnson295189b2012-06-20 16:38:30 -070025327 wdiRssiFilterCb: callback for passing back the response
25328 of the Set RSSI Filter operation received from the
25329 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025330
Jeff Johnson295189b2012-06-20 16:38:30 -070025331 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025332 callback
25333
Jeff Johnson295189b2012-06-20 16:38:30 -070025334 @return Result of the function call
25335*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025336WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025337WDI_SetRssiFilterReq
25338(
25339 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25340 WDI_RssiFilterCb wdiRssiFilterCb,
25341 void* pUserData
25342)
25343{
25344 WDI_EventInfoType wdiEventData = {{0}};
25345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25346
25347 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025348 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025349 ------------------------------------------------------------------------*/
25350 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25351 {
25352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25353 "WDI API call before module is initialized - Fail request");
25354
Jeff Johnsone7245742012-09-05 17:12:55 -070025355 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 }
25357
25358 /*------------------------------------------------------------------------
25359 Fill in Event data and post to the Main FSM
25360 ------------------------------------------------------------------------*/
25361 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025362 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025363 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025364 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025365 wdiEventData.pUserData = pUserData;
25366
25367 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25368}/*WDI_SetRssiFilterReq*/
25369
25370/**
25371 @brief WDI_UpdateScanParamsReq
25372
Jeff Johnsone7245742012-09-05 17:12:55 -070025373 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025374 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025375
Jeff Johnson295189b2012-06-20 16:38:30 -070025376 wdiUpdateScanParamsCb: callback for passing back the response
25377 of the Set PNO operation received from the
25378 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025379
Jeff Johnson295189b2012-06-20 16:38:30 -070025380 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025381 callback
25382
Jeff Johnson295189b2012-06-20 16:38:30 -070025383 @return Result of the function call
25384*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025385WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025386WDI_UpdateScanParamsReq
25387(
25388 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25389 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25390 void* pUserData
25391)
25392{
25393 WDI_EventInfoType wdiEventData = {{0}};
25394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25395
25396 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025397 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025398 ------------------------------------------------------------------------*/
25399 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25400 {
25401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25402 "WDI API call before module is initialized - Fail request");
25403
Jeff Johnsone7245742012-09-05 17:12:55 -070025404 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025405 }
25406
25407 /*------------------------------------------------------------------------
25408 Fill in Event data and post to the Main FSM
25409 ------------------------------------------------------------------------*/
25410 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025411 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025412 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025413 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025414 wdiEventData.pUserData = pUserData;
25415
25416 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25417}
25418
25419/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025420 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025421 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025422
25423 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025424 pwdiPNOScanReqParams: pointer to the info received
25425 from upper layers
25426 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025427 and its size
25428
Jeff Johnson295189b2012-06-20 16:38:30 -070025429 @return Result of the function call
25430*/
25431
25432WDI_Status
25433WDI_PackPreferredNetworkList
25434(
25435 WDI_ControlBlockType* pWDICtx,
25436 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25437 wpt_uint8** ppSendBuffer,
25438 wpt_uint16* pSize
25439)
25440{
Jeff Johnsone7245742012-09-05 17:12:55 -070025441 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025442 wpt_uint16 usDataOffset = 0;
25443 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025444 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025445 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025446 /*-----------------------------------------------------------------------
25447 Get message buffer
25448 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025449 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025450 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025451 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025452 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025453 {
25454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025455 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 pwdiPNOScanReqParams);
25457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025459 }
25460
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025461 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25462
Jeff Johnson295189b2012-06-20 16:38:30 -070025463 /*-------------------------------------------------------------------------
25464 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25465 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025466 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025467 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025468 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025469 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25470
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025471 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025472 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025473 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025474 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025475 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25476
25477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025478 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025479 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25480 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25481 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25482
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025483 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025484 {
25485 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025486 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025487 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25488
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025489 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025490 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025491 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025492
25493 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025494 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025495 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025496
25497 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025498 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025499 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025500
Jeff Johnsone7245742012-09-05 17:12:55 -070025501 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025502 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025503 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025504 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25505 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25506 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25507 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025508
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025509 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025510 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025511 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025512
25513 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025514 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025515 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25516
25517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025518 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025519 pPrefNetwListParams->aNetworks[i].ssId.length,
25520 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025521 }
25522
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025523 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025524 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025525 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25526 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25527 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25528
25529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025530 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025531 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25533 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25534
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025535 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025536 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025537 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025538 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025539 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025540 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25541 }
25542
25543 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025544 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025545 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25546 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25547 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025548 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025549
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025550 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025551 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025552 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025553
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025554 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025555 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25556 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25557 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025558 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025559
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025560 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025561 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025562 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025563
25564 /*Set the output values*/
25565 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025566 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025567
25568 return WDI_STATUS_SUCCESS;
25569}/*WDI_PackPreferredNetworkList*/
25570
25571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025573 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025574
25575 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025576 pwdiPNOScanReqParams: pointer to the info received
25577 from upper layers
25578 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025579 and its size
25580
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 @return Result of the function call
25582*/
25583
25584WDI_Status
25585WDI_PackPreferredNetworkListNew
25586(
25587 WDI_ControlBlockType* pWDICtx,
25588 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25589 wpt_uint8** ppSendBuffer,
25590 wpt_uint16* pSize
25591)
25592{
Jeff Johnsone7245742012-09-05 17:12:55 -070025593 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025594 wpt_uint16 usDataOffset = 0;
25595 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025596 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025598
25599 /*-----------------------------------------------------------------------
25600 Get message buffer
25601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025603 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025604 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025605 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025606 {
25607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025608 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025609 pwdiPNOScanReqParams);
25610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025612 }
25613
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025614 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25615
Jeff Johnson295189b2012-06-20 16:38:30 -070025616 /*-------------------------------------------------------------------------
25617 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25618 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025619 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025620 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025621 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025622 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25623
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025624 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025625 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025626 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025627 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025628 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25629
25630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025631 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025632 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25633 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25634 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25635
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025636 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 {
25638 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025639 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025640 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25641
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025642 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025643 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025644 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025645
25646 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025647 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025648 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025649
25650 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025651 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025652 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025653
25654 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025655 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025656 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025657
Jeff Johnsone7245742012-09-05 17:12:55 -070025658 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025660 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025661 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25662
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025663 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025664 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025665 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025666
25667 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025668 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025669 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25670
25671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025672 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025673 pPrefNetwListParams->aNetworks[i].ssId.length,
25674 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025675 }
25676
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025677 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025678 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025679 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25680 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25681 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25682
25683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025684 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025685 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025686 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25687 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25688
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025689 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025690 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025691 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025692 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025693 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025694 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25695 }
25696
25697 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025698 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025699 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25700 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25701 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025702 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025703
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025704 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025705 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025706 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025707
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025708 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025709 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25710 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25711 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025712 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025713
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025714 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025715 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025716 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025717
Jeff Johnson295189b2012-06-20 16:38:30 -070025718
25719 /*Set the output values*/
25720 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025721 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025722
25723 return WDI_STATUS_SUCCESS;
25724}/*WDI_PackPreferredNetworkListNew*/
25725
25726/**
25727 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025728
25729 @param pWDICtx: pointer to the WLAN DAL context
25730 pEventData: pointer to the event information structure
25731
Jeff Johnson295189b2012-06-20 16:38:30 -070025732 @return Result of the function call
25733*/
25734WDI_Status
25735WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025736(
Jeff Johnson295189b2012-06-20 16:38:30 -070025737 WDI_ControlBlockType* pWDICtx,
25738 WDI_EventInfoType* pEventData
25739)
25740{
25741 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25742 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025743 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025744 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025745 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025746
25747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025749 -------------------------------------------------------------------------*/
25750 if (( NULL == pEventData ) ||
25751 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25752 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25753 {
25754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025758 }
25759
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025760 /*----------------------------------------------------------------------
25761 Avoid Enable PNO during any active session or an ongoing session
25762 ----------------------------------------------------------------------*/
25763 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25764 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25765 {
25766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25767 "%s:(Active/Ongoing Session) - Fail request", __func__);
25768
25769 return WDI_STATUS_E_FAILURE;
25770 }
25771
Jeff Johnson295189b2012-06-20 16:38:30 -070025772 /*-------------------------------------------------------------------------
25773 Pack the PNO request structure based on version
25774 -------------------------------------------------------------------------*/
25775 if ( pWDICtx->wdiPNOVersion > 0 )
25776 {
25777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025778 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025779 pWDICtx->wdiPNOVersion);
25780
25781 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25782 &pSendBuffer, &usSendSize);
25783 }
25784 else
25785 {
25786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025787 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025788 pWDICtx->wdiPNOVersion);
25789
25790 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25791 &pSendBuffer, &usSendSize);
25792 }
25793
25794 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25795 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25796 {
25797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025798 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025800 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025801 }
25802
25803 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025804 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025805
25806 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025807 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025808 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025809 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25810 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025811}
25812
25813/**
25814 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025815
25816 @param pWDICtx: pointer to the WLAN DAL context
25817 pEventData: pointer to the event information structure
25818
Jeff Johnson295189b2012-06-20 16:38:30 -070025819 @see
25820 @return Result of the function call
25821*/
25822WDI_Status
25823WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025824(
Jeff Johnson295189b2012-06-20 16:38:30 -070025825 WDI_ControlBlockType* pWDICtx,
25826 WDI_EventInfoType* pEventData
25827)
25828{
25829 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25830 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025832 wpt_uint16 usDataOffset = 0;
25833 wpt_uint16 usSendSize = 0;
25834 wpt_uint8 ucRssiThreshold;
25835
25836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025837 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025838 -------------------------------------------------------------------------*/
25839 if (( NULL == pEventData ) ||
25840 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25841 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25842 {
25843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025844 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025847 }
25848
25849 /*-----------------------------------------------------------------------
25850 Get message buffer
25851 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025852 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025853 sizeof(ucRssiThreshold),
25854 &pSendBuffer, &usDataOffset, &usSendSize))||
25855 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25856 {
25857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025858 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025859 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025862 }
25863
25864 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25865
Jeff Johnsone7245742012-09-05 17:12:55 -070025866 wpalMemoryCopy( pSendBuffer+usDataOffset,
25867 &ucRssiThreshold,
25868 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025869
25870 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025871 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025872
25873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025874 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025875 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025876 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25877 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025878}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025879#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25880/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025881 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025882
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025883 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025884 by the Device Interface
25885
25886 wdiRoamOffloadScancb: callback for passing back the response
25887 of the Roam Candidate Lookup Req operation received from the
25888 device
25889
25890 pUserData: user data will be passed back with the
25891 callback
25892 @return Result of the function call
25893*/
25894WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025895WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025896(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025897 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025898 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
25899 void* pUserData
25900)
25901{
25902 WDI_EventInfoType wdiEventData = {{0}};
25903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25904
25905 /*------------------------------------------------------------------------
25906 Sanity Check
25907 ------------------------------------------------------------------------*/
25908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25909 {
25910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25911 "WDI API call before module is initialized - Fail request");
25912
25913 return WDI_STATUS_E_NOT_ALLOWED;
25914 }
25915
25916 /*------------------------------------------------------------------------
25917 Fill in Event data and post to the Main FSM
25918 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025919 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
25920 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
25921 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025922 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
25923 wdiEventData.pUserData = pUserData;
25924
25925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25926}
25927
25928void
25929WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
25930{
25931 switch (wdiEdType)
25932 {
25933 case WDI_ED_NONE:
25934 *EdType = eED_NONE;
25935 break;
25936 case WDI_ED_WEP40:
25937 case WDI_ED_WEP104:
25938 *EdType = eED_WEP;
25939 break;
25940 case WDI_ED_TKIP:
25941 *EdType = eED_TKIP;
25942 break;
25943 case WDI_ED_CCMP:
25944#ifdef WLAN_FEATURE_11W
25945 case WDI_ED_AES_128_CMAC:
25946#endif
25947 *EdType = eED_CCMP;
25948 break;
25949#ifdef FEATURE_WLAN_WAPI
25950 case WDI_ED_WPI:
25951 *EdType = eED_WPI;
25952 break;
25953#endif
25954 case WDI_ED_ANY:
25955 *EdType = eED_ANY;
25956 break;
25957
25958 default:
25959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25960 "%s: Unknown Encryption Type", __func__);
25961 break;
25962 }
25963}
25964
25965/**
25966 @brief Helper function to pack Start Roam Candidate Lookup
25967 Request parameters
25968
25969 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025970 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025971 from upper layers
25972 ppSendBuffer, pSize - out pointers of the packed buffer
25973 and its size
25974
25975 @return Result of the function call
25976*/
25977
25978WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025979WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025980(
25981 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025982 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025983 wpt_uint8** ppSendBuffer,
25984 wpt_uint16* pSize
25985)
25986{
25987 wpt_uint8* pSendBuffer = NULL;
25988 wpt_uint16 usDataOffset = 0;
25989 wpt_uint16 usSendSize = 0;
25990 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
25991 wpt_uint8 i;
25992 /*-----------------------------------------------------------------------
25993 Get message buffer
25994 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025995 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025996 sizeof(tRoamCandidateListParams),
25997 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025998 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025999 {
26000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026001 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026002 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026003 WDI_ASSERT(0);
26004 return WDI_STATUS_E_FAILURE;
26005 }
26006 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026007 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026008 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026009 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026010 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026011 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026012 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026013 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026014 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026015 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026016 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026017
26018 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026019 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026020 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026021 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026022 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26023 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026024 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26025 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26026 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26027 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26028 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026029 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026030 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026031 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026032 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26033 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26034 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26035 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26036 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26037 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26038 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026039 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026040 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026041 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26042 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26043 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026044
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26046 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26047 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26048 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26049 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26050 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026051 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026052 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26053 pRoamCandidateListParams->RoamScanOffloadEnabled,
26054 pRoamCandidateListParams->Command,
26055 pRoamCandidateListParams->StartScanReason,
26056 pRoamCandidateListParams->NeighborScanTimerPeriod,
26057 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26058 pRoamCandidateListParams->NeighborScanChannelMinTime,
26059 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26060 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26061 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26062 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26063 pRoamCandidateListParams->ConnectedNetwork.authentication,
26064 pRoamCandidateListParams->ConnectedNetwork.encryption,
26065 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26066 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26067 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026068 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026069 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026070 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026071 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026072 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26073 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026074 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026075 pRoamCandidateListParams->us24GProbeSize);
26076 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026077 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026078 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026079 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026080 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26081 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026082 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026083 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026084 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26085 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26086 pRoamCandidateListParams->nProbes =
26087 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26088 pRoamCandidateListParams->HomeAwayTime =
26089 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026091 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26092 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026094 }
26095
26096
26097 /*Set the output values*/
26098 *ppSendBuffer = pSendBuffer;
26099 *pSize = usSendSize;
26100 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026101}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026102
26103/**
26104 @brief Process Start Roam Candidate Lookup Request function
26105
26106 @param pWDICtx: pointer to the WLAN DAL context
26107 pEventData: pointer to the event information structure
26108
26109 @return Result of the function call
26110*/
26111WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026112WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026113(
26114 WDI_ControlBlockType* pWDICtx,
26115 WDI_EventInfoType* pEventData
26116)
26117{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026118 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026119 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26120 wpt_uint8* pSendBuffer = NULL;
26121 wpt_uint16 usSendSize = 0;
26122 WDI_Status wdiStatus;
26123 /*-------------------------------------------------------------------------
26124 Sanity check
26125 -------------------------------------------------------------------------*/
26126 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026127 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026128 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26129 {
26130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26131 "%s: Invalid parameters", __func__);
26132 WDI_ASSERT(0);
26133 return WDI_STATUS_E_FAILURE;
26134 }
26135
26136 /*-------------------------------------------------------------------------
26137 Pack the Start Roam Candidate Lookup request structure based on version
26138 -------------------------------------------------------------------------*/
26139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26140 "%s: Packing Roam Candidate Lookup request ", __func__);
26141
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026142 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026143 &pSendBuffer, &usSendSize);
26144
26145 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26146 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26147 {
26148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26149 "%s: failed to pack request parameters", __func__);
26150 WDI_ASSERT(0);
26151 return wdiStatus;
26152 }
26153
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026154 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26155 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026156
26157 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026158 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026159 -------------------------------------------------------------------------*/
26160 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026161 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026162}
26163
26164/**
26165 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26166 response is being received over the bus from HAL)
26167
26168 @param pWDICtx: pointer to the WLAN DAL context
26169 pEventData: pointer to the event information structure
26170
26171 @see
26172 @return Result of the function call
26173*/
26174WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026175WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026176(
26177 WDI_ControlBlockType* pWDICtx,
26178 WDI_EventInfoType* pEventData
26179)
26180{
26181 WDI_Status wdiStatus;
26182 eHalStatus halStatus;
26183 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26184
26185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26186
26187 /*-------------------------------------------------------------------------
26188 Sanity check
26189 -------------------------------------------------------------------------*/
26190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26191 ( NULL == pEventData->pEventData ))
26192 {
26193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26194 "%s: Invalid parameters", __func__);
26195 WDI_ASSERT(0);
26196 return WDI_STATUS_E_FAILURE;
26197 }
26198
26199 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26200
26201 /*-------------------------------------------------------------------------
26202 Extract response and send it to UMAC
26203 -------------------------------------------------------------------------*/
26204 halStatus = *((eHalStatus*)pEventData->pEventData);
26205 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26206
26207 /*Notify UMAC*/
26208 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26209
26210 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026211}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026212#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026213
26214/**
26215 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026216
26217 @param pWDICtx: pointer to the WLAN DAL context
26218 pEventData: pointer to the event information structure
26219
Jeff Johnson295189b2012-06-20 16:38:30 -070026220 @see
26221 @return Result of the function call
26222*/
26223WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026224WDI_PackUpdateScanParamsReq
26225(
26226 WDI_ControlBlockType* pWDICtx,
26227 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26228 wpt_uint8** ppSendBuffer,
26229 wpt_uint16* pSize
26230)
26231{
26232 wpt_uint8* pSendBuffer = NULL;
26233 wpt_uint16 usDataOffset = 0;
26234 wpt_uint16 usSendSize = 0;
26235 tUpdateScanParams updateScanParams = {0};
26236
26237
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026239 "Begin WDI Update Scan Parameters Old Style Params");
26240 /*-----------------------------------------------------------------------
26241 Get message buffer
26242 -----------------------------------------------------------------------*/
26243 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26244 sizeof(updateScanParams),
26245 &pSendBuffer, &usDataOffset, &usSendSize))||
26246 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26247 {
26248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026249 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026250 pwdiUpdateScanParams);
26251 WDI_ASSERT(0);
26252 return WDI_STATUS_E_FAILURE;
26253 }
26254
26255 //
26256 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26257 //
26258
26259 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26260 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26261
26262 updateScanParams.ucChannelCount =
26263 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26264 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26265 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26266 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26267
26268 wpalMemoryCopy( updateScanParams.aChannels,
26269 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26270 updateScanParams.ucChannelCount);
26271
26272
26273 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26274 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26275 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26276 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26277 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26278
26279 wpalMemoryCopy( pSendBuffer+usDataOffset,
26280 &updateScanParams,
26281 sizeof(updateScanParams));
26282
26283 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26284 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26285
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026287 "End Update Scan Parameters Old Style");
26288
26289 /*Set the output values*/
26290 *ppSendBuffer = pSendBuffer;
26291 *pSize = usSendSize;
26292
26293 return WDI_STATUS_SUCCESS;
26294}
26295
26296/**
26297 @brief Process Update Scan Params function
26298
26299 @param pWDICtx: pointer to the WLAN DAL context
26300 pEventData: pointer to the event information structure
26301
26302 @see
26303 @return Result of the function call
26304*/
26305WDI_Status
26306WDI_PackUpdateScanParamsReqEx
26307(
26308 WDI_ControlBlockType* pWDICtx,
26309 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26310 wpt_uint8** ppSendBuffer,
26311 wpt_uint16* pSize
26312)
26313{
26314 wpt_uint8* pSendBuffer = NULL;
26315 wpt_uint16 usDataOffset = 0;
26316 wpt_uint16 usSendSize = 0;
26317 tUpdateScanParamsEx updateScanParams = {0};
26318
26319
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026320 /*-----------------------------------------------------------------------
26321 Get message buffer
26322 -----------------------------------------------------------------------*/
26323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26324 sizeof(updateScanParams),
26325 &pSendBuffer, &usDataOffset, &usSendSize))||
26326 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26327 {
26328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026329 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026330 pwdiUpdateScanParams);
26331 WDI_ASSERT(0);
26332 return WDI_STATUS_E_FAILURE;
26333 }
26334
26335 //
26336 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26337 //
26338
26339 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26340 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26341
26342 updateScanParams.ucChannelCount =
26343 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26344 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26345 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26346 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26347
26348 wpalMemoryCopy( updateScanParams.aChannels,
26349 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26350 updateScanParams.ucChannelCount);
26351
26352
26353 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26354 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26355 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26356 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26357 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26358
26359 wpalMemoryCopy( pSendBuffer+usDataOffset,
26360 &updateScanParams,
26361 sizeof(updateScanParams));
26362
26363 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26364 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26365
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026366 /*Set the output values*/
26367 *ppSendBuffer = pSendBuffer;
26368 *pSize = usSendSize;
26369
26370 return WDI_STATUS_SUCCESS;
26371}
26372
26373/**
26374 @brief Process Update Scan Params function
26375
26376 @param pWDICtx: pointer to the WLAN DAL context
26377 pEventData: pointer to the event information structure
26378
26379 @see
26380 @return Result of the function call
26381*/
26382WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026383WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026384(
Jeff Johnson295189b2012-06-20 16:38:30 -070026385 WDI_ControlBlockType* pWDICtx,
26386 WDI_EventInfoType* pEventData
26387)
26388{
26389 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26390 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026391 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026392 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026393 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026394
26395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026397 -------------------------------------------------------------------------*/
26398 if (( NULL == pEventData ) ||
26399 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26400 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26401 {
26402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026406 }
26407
26408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26409 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026410
26411 //
26412 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26413 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026414 if ( pWDICtx->wlanVersion.revision < 1 )
26415 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026416 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026417 &pSendBuffer, &usSendSize);
26418 }
26419 else
26420 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026421 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26422 &pSendBuffer, &usSendSize);
26423 }
26424
26425 if(WDI_STATUS_SUCCESS != wdiStatus)
26426 {
26427 //memory allocation failed
26428 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026429 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026430
Jeff Johnson295189b2012-06-20 16:38:30 -070026431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026432 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026435 wdiUpdateScanParamsCb, pEventData->pUserData,
26436 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026437}
26438
26439/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026440 @brief Process Update Channel Params function
26441
26442 @param pWDICtx: pointer to the WLAN DAL context
26443 pEventData: pointer to the event information structure
26444
26445 @see
26446 @return Result of the function call
26447*/
26448WDI_Status
26449WDI_ProcessUpdateChannelParamsReq
26450(
26451 WDI_ControlBlockType* pWDICtx,
26452 WDI_EventInfoType* pEventData
26453)
26454{
26455 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26456 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26457 wpt_uint8* pSendBuffer = NULL;
26458 wpt_uint16 usDataOffset = 0;
26459 wpt_uint16 usSendSize = 0;
26460 tUpdateChannelReqType *updateChannelParams;
26461 wpt_uint32 usUpdateChanParamSize;
26462 wpt_uint8 num_channels = 0;
26463
26464 /*-------------------------------------------------------------------------
26465 Sanity check
26466 -------------------------------------------------------------------------*/
26467 if (( NULL == pEventData ) ||
26468 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26469 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26470 {
26471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26472 "%s: Invalid parameters", __func__);
26473 WDI_ASSERT(0);
26474 return WDI_STATUS_E_FAILURE;
26475 }
26476 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026477 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026478
26479 /*-----------------------------------------------------------------------
26480 Get message buffer
26481 -----------------------------------------------------------------------*/
26482 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26483 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26484 &pSendBuffer, &usDataOffset, &usSendSize))||
26485 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26486 {
26487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26488 "Unable to get send buffer in Update Channel Params req %p",
26489 pwdiUpdateChanListParams);
26490 WDI_ASSERT(0);
26491 return WDI_STATUS_E_FAILURE;
26492 }
26493 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26494
26495 updateChannelParams->numChan = num_channels;
26496 wpalMemoryCopy(&updateChannelParams->chanParam,
26497 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26498 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26499
26500 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26501 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26502
26503 /*-------------------------------------------------------------------------
26504 Send Update channel request to fw
26505 -------------------------------------------------------------------------*/
26506 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26507 wdiUpdateChanParamsCb, pEventData->pUserData,
26508 WDI_UPDATE_CHAN_RESP);
26509}
26510
26511/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026512 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026513
26514 @param pWDICtx: pointer to the WLAN DAL context
26515 pEventData: pointer to the event information structure
26516
Jeff Johnson295189b2012-06-20 16:38:30 -070026517 @see
26518 @return Result of the function call
26519*/
26520WDI_Status
26521WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026522(
Jeff Johnson295189b2012-06-20 16:38:30 -070026523 WDI_ControlBlockType* pWDICtx,
26524 WDI_EventInfoType* pEventData
26525)
26526{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026527 WDI_LowLevelIndType wdiInd;
26528 tpPrefNetwFoundParams pNetwFoundParams;
26529 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026530
26531
26532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026534 -------------------------------------------------------------------------*/
26535 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26536 ( NULL == pEventData->pEventData ))
26537 {
26538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026540 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026542 }
26543
26544 /*-------------------------------------------------------------------------
26545 Extract indication and send it to UMAC
26546 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026547 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26548
26549 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26550 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26551 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26552
26553 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26554 {
26555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26556 "%s: fail to allocate memory", __func__);
26557 return WDI_STATUS_MEM_FAILURE;
26558 }
26559
26560 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26561 (pNetwFoundParams->ssId.length < 32 )?
26562 pNetwFoundParams->ssId.length : 32;
26563 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26564 pNetwFoundParams->ssId.ssId,
26565 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26566 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26567 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26568 pNetwFoundParams->frameLength;
26569 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26570 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26571 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026572
26573 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026574 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026575
Jeff Johnson295189b2012-06-20 16:38:30 -070026576 // DEBUG
26577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026578 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026579 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026580 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026581 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026582 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026583 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26584
ltimariub77f24b2013-01-24 18:54:33 -080026585 if ( pWDICtx->wdiLowLevelIndCB )
26586 {
26587 /*Notify UMAC*/
26588 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26589 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026590
26591 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026592}
26593
26594/**
26595 @brief Process PNO Rsp function (called when a
26596 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026597
26598 @param pWDICtx: pointer to the WLAN DAL context
26599 pEventData: pointer to the event information structure
26600
Jeff Johnson295189b2012-06-20 16:38:30 -070026601 @see
26602 @return Result of the function call
26603*/
26604WDI_Status
26605WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026606(
Jeff Johnson295189b2012-06-20 16:38:30 -070026607 WDI_ControlBlockType* pWDICtx,
26608 WDI_EventInfoType* pEventData
26609)
26610{
26611 WDI_Status wdiStatus;
26612 eHalStatus halStatus;
26613 WDI_PNOScanCb wdiPNOScanCb = NULL;
26614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26615
26616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026618 -------------------------------------------------------------------------*/
26619 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26620 ( NULL == pEventData->pEventData ))
26621 {
26622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026623 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026626 }
26627
26628
Jeff Johnsone7245742012-09-05 17:12:55 -070026629 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026630
26631 /*-------------------------------------------------------------------------
26632 Extract response and send it to UMAC
26633 -------------------------------------------------------------------------*/
26634 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026635 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026636
26637 /*Notify UMAC*/
26638 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26639
Jeff Johnsone7245742012-09-05 17:12:55 -070026640 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026641}/*WDI_ProcessSetPreferredNetworkRsp*/
26642
26643/**
26644 @brief Process RSSI Filter Rsp function (called when a
26645 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026646
26647 @param pWDICtx: pointer to the WLAN DAL context
26648 pEventData: pointer to the event information structure
26649
Jeff Johnson295189b2012-06-20 16:38:30 -070026650 @see
26651 @return Result of the function call
26652*/
26653WDI_Status
26654WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026655(
Jeff Johnson295189b2012-06-20 16:38:30 -070026656 WDI_ControlBlockType* pWDICtx,
26657 WDI_EventInfoType* pEventData
26658)
26659{
26660 WDI_Status wdiStatus;
26661 eHalStatus halStatus;
26662 WDI_RssiFilterCb wdiRssiFilterCb;
26663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26664
26665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026666 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026667 -------------------------------------------------------------------------*/
26668 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26669 ( NULL == pEventData->pEventData ))
26670 {
26671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026675 }
26676
Jeff Johnsone7245742012-09-05 17:12:55 -070026677 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026678
26679 /*-------------------------------------------------------------------------
26680 Extract response and send it to UMAC
26681 -------------------------------------------------------------------------*/
26682 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026683 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026684
26685 /*Notify UMAC*/
26686 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26687
Jeff Johnsone7245742012-09-05 17:12:55 -070026688 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026689}/*WDI_ProcessSetRssiFilterRsp*/
26690
26691/**
26692 @brief Process Update Scan Params Rsp function (called when a
26693 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026694
26695 @param pWDICtx: pointer to the WLAN DAL context
26696 pEventData: pointer to the event information structure
26697
Jeff Johnson295189b2012-06-20 16:38:30 -070026698 @see
26699 @return Result of the function call
26700*/
26701WDI_Status
26702WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026703(
Jeff Johnson295189b2012-06-20 16:38:30 -070026704 WDI_ControlBlockType* pWDICtx,
26705 WDI_EventInfoType* pEventData
26706)
26707{
26708 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026709 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026710 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026711 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26713
26714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026716 -------------------------------------------------------------------------*/
26717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26718 ( NULL == pEventData->pEventData ))
26719 {
26720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026724 }
26725
26726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026727 "%s: Process UPD scan params ptr : %p",
26728 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026729
Jeff Johnsone7245742012-09-05 17:12:55 -070026730 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026731
26732 /*-------------------------------------------------------------------------
26733 Extract response and send it to UMAC
26734 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026735 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26736 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026737 sizeof(halUpdScanParams.status));
26738
26739 uStatus = halUpdScanParams.status;
26740
26741 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026742 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026743
26744 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026745 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026746
Jeff Johnsone7245742012-09-05 17:12:55 -070026747 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026748
26749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026750 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026751 halUpdScanParams.status);
26752
26753 /*Notify UMAC*/
26754 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26755
Jeff Johnsone7245742012-09-05 17:12:55 -070026756 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026757}
26758#endif // FEATURE_WLAN_SCAN_PNO
26759
26760#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026761WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026762WDI_8023MulticastListReq
26763(
26764 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26765 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26766 void* pUserData
26767)
26768{
26769 WDI_EventInfoType wdiEventData;
26770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26771
26772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026773 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026774
26775 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026776 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026777 ------------------------------------------------------------------------*/
26778 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26779 {
26780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26781 "WDI API call before module is initialized - Fail request");
26782
Jeff Johnsone7245742012-09-05 17:12:55 -070026783 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026784 }
26785
26786 /*------------------------------------------------------------------------
26787 Fill in Event data and post to the Main FSM
26788 ------------------------------------------------------------------------*/
26789 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026790 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026791 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026792 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026793 wdiEventData.pUserData = pUserData;
26794
26795 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26796}
26797
Jeff Johnsone7245742012-09-05 17:12:55 -070026798WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026799WDI_ReceiveFilterSetFilterReq
26800(
26801 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26802 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26803 void* pUserData
26804)
26805{
26806 WDI_EventInfoType wdiEventData;
26807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26808
26809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026810 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026811
26812 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026813 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026814 ------------------------------------------------------------------------*/
26815 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26816 {
26817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26818 "WDI API call before module is initialized - Fail request");
26819
Jeff Johnsone7245742012-09-05 17:12:55 -070026820 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026821 }
26822
26823 /*------------------------------------------------------------------------
26824 Fill in Event data and post to the Main FSM
26825 ------------------------------------------------------------------------*/
26826 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026827 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26828 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026829 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26830 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026831 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026832 wdiEventData.pUserData = pUserData;
26833
26834
26835 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26836}
26837
Jeff Johnsone7245742012-09-05 17:12:55 -070026838WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026839WDI_FilterMatchCountReq
26840(
26841 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26842 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26843 void* pUserData
26844)
26845{
26846 WDI_EventInfoType wdiEventData;
26847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26848
26849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026850 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026851
26852 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026853 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026854 ------------------------------------------------------------------------*/
26855 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26856 {
26857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26858 "WDI API call before module is initialized - Fail request");
26859
Jeff Johnsone7245742012-09-05 17:12:55 -070026860 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026861 }
26862
26863 /*------------------------------------------------------------------------
26864 Fill in Event data and post to the Main FSM
26865 ------------------------------------------------------------------------*/
26866 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026867 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026868 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026869 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026870 wdiEventData.pUserData = pUserData;
26871
26872
26873 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26874}
26875
Jeff Johnsone7245742012-09-05 17:12:55 -070026876WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026877WDI_ReceiveFilterClearFilterReq
26878(
26879 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26880 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26881 void* pUserData
26882)
26883{
26884 WDI_EventInfoType wdiEventData;
26885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26886
26887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026888 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026889
26890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026891 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026892 ------------------------------------------------------------------------*/
26893 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26894 {
26895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26896 "WDI API call before module is initialized - Fail request");
26897
Jeff Johnsone7245742012-09-05 17:12:55 -070026898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026899 }
26900
26901 /*------------------------------------------------------------------------
26902 Fill in Event data and post to the Main FSM
26903 ------------------------------------------------------------------------*/
26904 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026905 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026906 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026907 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026908 wdiEventData.pUserData = pUserData;
26909
26910
26911 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26912}
26913
26914/**
26915 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026916
26917 @param pWDICtx: pointer to the WLAN DAL context
26918 pEventData: pointer to the event information structure
26919
Jeff Johnson295189b2012-06-20 16:38:30 -070026920 @see
26921 @return Result of the function call
26922*/
26923WDI_Status
26924WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026925(
Jeff Johnson295189b2012-06-20 16:38:30 -070026926 WDI_ControlBlockType* pWDICtx,
26927 WDI_EventInfoType* pEventData
26928)
26929{
26930 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
26931 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026932 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026933 wpt_uint16 usDataOffset = 0;
26934 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026935 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026936 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026937 wpt_uint8 ucCurrentBSSSesIdx = 0;
26938 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026939
26940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026941 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026942
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026943 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
26944 if( NULL == pRcvFltMcAddrListType )
26945 {
26946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26947 "Failed to alloc in WDI_Process8023MulticastListReq");
26948 return WDI_STATUS_E_FAILURE;
26949 }
26950
Jeff Johnson295189b2012-06-20 16:38:30 -070026951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026953 -------------------------------------------------------------------------*/
26954 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026955 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026956 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026957 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026958 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
26959 {
26960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026961 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026962 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026964 return WDI_STATUS_E_FAILURE;
26965 }
26966
26967 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26968 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
26969 &pBSSSes);
26970 if ( NULL == pBSSSes )
26971 {
26972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026973 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026974 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026976 }
26977
26978 /*-----------------------------------------------------------------------
26979 Get message buffer
26980 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26982 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026983 sizeof(tHalRcvFltMcAddrListType),
26984 &pSendBuffer, &usDataOffset, &usSendSize))||
26985 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
26986 {
26987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26988 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026989 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026990 pEventData, pwdiFltPktSetMcListReqParamsType,
26991 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070026992 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026995 }
26996
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026997 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070026998 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026999 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027000 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027001 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027002 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27003 sizeof(tSirMacAddr));
27004 }
27005
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027006 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027007 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027008 pRcvFltMcAddrListType,
27009 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027010
27011 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027012 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027013
27014
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027015 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027016 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027017 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027018 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027019 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027020 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027021 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027022}
27023
27024/**
27025 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027026
27027 @param pWDICtx: pointer to the WLAN DAL context
27028 pEventData: pointer to the event information structure
27029
Jeff Johnson295189b2012-06-20 16:38:30 -070027030 @see
27031 @return Result of the function call
27032*/
27033WDI_Status
27034WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027035(
Jeff Johnson295189b2012-06-20 16:38:30 -070027036 WDI_ControlBlockType* pWDICtx,
27037 WDI_EventInfoType* pEventData
27038)
27039{
27040 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27041 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027042 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027043 wpt_uint16 usDataOffset = 0;
27044 wpt_uint16 usSendSize = 0;
27045 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027046 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027047 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027048 wpt_uint8 ucCurrentBSSSesIdx = 0;
27049 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027050 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27051 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027052
27053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027054 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027055
27056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027058 -------------------------------------------------------------------------*/
27059 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027060 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027061 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027062 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027063 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27064 {
27065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027068 return WDI_STATUS_E_FAILURE;
27069 }
27070
27071 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27072 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27073 &pBSSSes);
27074 if ( NULL == pBSSSes )
27075 {
27076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027077 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027079 }
27080
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027081 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27082 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027083
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027084 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27085 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27086 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27087
27088 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27089 usSessRcvPktFilterCfgSize);
27090
27091 if(NULL == pSessRcvPktFilterCfg)
27092 {
27093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27094 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027095 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027096 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027097 WDI_ASSERT(0);
27098 return WDI_STATUS_E_FAILURE;
27099 }
27100
27101 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27102
27103 /*-----------------------------------------------------------------------
27104 Get message buffer
27105 -----------------------------------------------------------------------*/
27106
27107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27108 usSessRcvPktFilterCfgSize,
27109 &pSendBuffer, &usDataOffset, &usSendSize))||
27110 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27111 {
27112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27113 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027114 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027115 pEventData, pwdiSetRcvPktFilterReqInfo,
27116 wdiReceiveFilterSetFilterCb);
27117 WDI_ASSERT(0);
27118 wpalMemoryFree(pSessRcvPktFilterCfg);
27119 return WDI_STATUS_E_FAILURE;
27120 }
27121
27122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027123 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027124 usSendSize,pSessRcvPktFilterCfg);
27125
27126 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27127 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27128 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27129 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27130
27131 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27132
27133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27134 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27135 pSessRcvPktFilterCfg->filterType);
27136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27137 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27138 pSessRcvPktFilterCfg->coleasceTime);
27139
27140 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27141 {
27142 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27143 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27144 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27145 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27146 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27147 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27148 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27149 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27150
27151 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27152 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27153 8);
27154 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27155 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27156 8);
27157
27158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027159 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027160 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27161 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27162
27163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027164 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027165 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27166 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27167
27168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027169 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027170 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27171 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27172 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27173 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27174 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27175 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27176
27177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027178 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027179 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27180 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27181 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27182 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27183 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27184 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27185 }
27186
27187 wpalMemoryCopy( pSendBuffer+usDataOffset,
27188 pSessRcvPktFilterCfg,
27189 usSessRcvPktFilterCfgSize);
27190
27191
27192 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27193 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27194
27195 wpalMemoryFree(pSessRcvPktFilterCfg);
27196
27197 }
27198 /*If SLM_SESSIONIZATION is not supported then do this */
27199 else
27200 {
27201 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27202 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27203 * sizeof(tHalRcvPktFilterParams));
27204
27205 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027206 usRcvPktFilterCfgSize);
27207
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027208 if(NULL == pRcvPktFilterCfg)
27209 {
27210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27211 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027212 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027213 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027214 WDI_ASSERT(0);
27215 return WDI_STATUS_E_FAILURE;
27216 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027217
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027218 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027219
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027220 /*-----------------------------------------------------------------------
27221 Get message buffer
27222 -----------------------------------------------------------------------*/
27223 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027224 usRcvPktFilterCfgSize,
27225 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027226 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27227 {
27228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027229 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027230 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027231 pEventData, pwdiSetRcvPktFilterReqInfo,
27232 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027233 WDI_ASSERT(0);
27234 wpalMemoryFree(pRcvPktFilterCfg);
27235 return WDI_STATUS_E_FAILURE;
27236 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027237
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027239 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027240 usSendSize,usRcvPktFilterCfgSize);
27241
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027242 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27243 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27244 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27245 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027246
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027248 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027249 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027251 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027252 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027253
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027254 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27255 {
27256 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27257 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27258 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27259 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27260 pRcvPktFilterCfg->paramsData[i].dataOffset =
27261 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27262 pRcvPktFilterCfg->paramsData[i].dataLength =
27263 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027264
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027265 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027266 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27267 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027268 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027269 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27270 8);
27271
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027273 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027274 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027275 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27276
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027278 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027279 pRcvPktFilterCfg->paramsData[i].dataOffset,
27280 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027281
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027283 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027284 pRcvPktFilterCfg->paramsData[i].compareData[0],
27285 pRcvPktFilterCfg->paramsData[i].compareData[1],
27286 pRcvPktFilterCfg->paramsData[i].compareData[2],
27287 pRcvPktFilterCfg->paramsData[i].compareData[3],
27288 pRcvPktFilterCfg->paramsData[i].compareData[4],
27289 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027290
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027292 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027293 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27294 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27295 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27296 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27297 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27298 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27299 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027300
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027301 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027302 pRcvPktFilterCfg,
27303 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027304
27305
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027306 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27307 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027308
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027310 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027311 wpalMemoryFree(pRcvPktFilterCfg);
27312 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027314 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027315 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027316 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027317 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027318 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027319}
27320
27321/**
27322 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027323
27324 @param pWDICtx: pointer to the WLAN DAL context
27325 pEventData: pointer to the event information structure
27326
Jeff Johnson295189b2012-06-20 16:38:30 -070027327 @see
27328 @return Result of the function call
27329*/
27330WDI_Status
27331WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027332(
Jeff Johnson295189b2012-06-20 16:38:30 -070027333 WDI_ControlBlockType* pWDICtx,
27334 WDI_EventInfoType* pEventData
27335)
27336{
27337 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27338 NULL;
27339 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27340 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027341 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027342 wpt_uint16 usDataOffset = 0;
27343 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027344 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27345 wpt_uint8 ucCurrentBSSSesIdx = 0;
27346 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027347
27348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027349 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027350
27351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027353 -------------------------------------------------------------------------*/
27354 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027355 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027356 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027357 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027358 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27359 {
27360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027364 }
27365
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027366 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27367 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27368 &pBSSSes);
27369 if ( NULL == pBSSSes )
27370 {
27371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027372 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027373 return WDI_STATUS_E_FAILURE;
27374 }
27375
Jeff Johnson295189b2012-06-20 16:38:30 -070027376 /*-----------------------------------------------------------------------
27377 Get message buffer
27378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27380 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027381 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027382 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027383 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027384 {
27385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27386 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027387 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027388 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27389 wdiFilterMatchCountCb);
27390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027392 }
27393
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027394 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27395 wpalMemoryCopy( pSendBuffer+usDataOffset,
27396 &rcvFltPktMatchCntReqParam,
27397 sizeof(rcvFltPktMatchCntReqParam));
27398
Jeff Johnson295189b2012-06-20 16:38:30 -070027399 //
27400 // Don't need to fill send buffer other than header
27401 //
27402 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027403 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027404
27405
27406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027407 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027408 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027409 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27410 wdiFilterMatchCountCb,
27411 pEventData->pUserData,
27412 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027413}
27414
27415/**
27416 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027417
27418 @param pWDICtx: pointer to the WLAN DAL context
27419 pEventData: pointer to the event information structure
27420
Jeff Johnson295189b2012-06-20 16:38:30 -070027421 @see
27422 @return Result of the function call
27423*/
27424WDI_Status
27425WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027426(
Jeff Johnson295189b2012-06-20 16:38:30 -070027427 WDI_ControlBlockType* pWDICtx,
27428 WDI_EventInfoType* pEventData
27429)
Jeff Johnsone7245742012-09-05 17:12:55 -070027430{
Jeff Johnson295189b2012-06-20 16:38:30 -070027431 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27432 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027433 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027434 wpt_uint16 usDataOffset = 0;
27435 wpt_uint16 usSendSize = 0;
27436 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027437 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027438 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027439
27440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027441 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027442
27443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027445 -------------------------------------------------------------------------*/
27446 if (( NULL == pEventData ) ||
27447 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27448 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027449 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027450 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27451 {
27452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027455 return WDI_STATUS_E_FAILURE;
27456 }
27457
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027458 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027459 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27460 &pBSSSes);
27461 if ( NULL == pBSSSes )
27462 {
27463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027464 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027466 }
27467
27468 /*-----------------------------------------------------------------------
27469 Get message buffer
27470 -----------------------------------------------------------------------*/
27471 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027472 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027473 sizeof(tHalRcvFltPktClearParam),
27474 &pSendBuffer, &usDataOffset, &usSendSize))||
27475 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27476 {
27477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27478 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027479 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027480 pEventData, pwdiRcvFltPktClearReqParamsType,
27481 wdiRcvFltPktClearFilterCb);
27482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027484 }
27485
27486
27487 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027488 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027489 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027490 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027491
Jeff Johnsone7245742012-09-05 17:12:55 -070027492 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27493 wpalMemoryCopy( pSendBuffer+usDataOffset,
27494 &rcvFltPktClearParam,
27495 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027496
27497 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027498 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027499
27500
27501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027502 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027505 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027506 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027507}
27508
27509/**
27510 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027511
27512 @param pWDICtx: pointer to the WLAN DAL context
27513 pEventData: pointer to the event information structure
27514
Jeff Johnson295189b2012-06-20 16:38:30 -070027515 @see
27516 @return Result of the function call
27517*/
27518WDI_Status
27519WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027520(
Jeff Johnson295189b2012-06-20 16:38:30 -070027521 WDI_ControlBlockType* pWDICtx,
27522 WDI_EventInfoType* pEventData
27523)
27524{
Jeff Johnson295189b2012-06-20 16:38:30 -070027525 eHalStatus halStatus;
27526 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027527 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27528 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27530
27531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027532 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027533
27534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027536 -------------------------------------------------------------------------*/
27537 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27538 ( NULL == pEventData->pEventData ))
27539 {
27540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027544 }
27545
Jeff Johnsone7245742012-09-05 17:12:55 -070027546 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027547
27548 /*-------------------------------------------------------------------------
27549 Extract response and send it to UMAC
27550 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027551 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27552 {
27553 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27554 pEventData->pEventData,
27555 sizeof(halRcvFltPktSetMcListRsp));
27556
27557 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27558 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27559 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27560 halRcvFltPktSetMcListRsp.bssIdx;
27561 }
27562 else
27563 {
27564 halStatus = *((eHalStatus*)pEventData->pEventData);
27565 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27566 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027567
27568 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027569 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027570
Jeff Johnsone7245742012-09-05 17:12:55 -070027571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027572}
27573
27574/**
27575 @brief Process Set Rsp function (called when a
27576 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027577
27578 @param pWDICtx: pointer to the WLAN DAL context
27579 pEventData: pointer to the event information structure
27580
Jeff Johnson295189b2012-06-20 16:38:30 -070027581 @see
27582 @return Result of the function call
27583*/
27584WDI_Status
27585WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027586(
Jeff Johnson295189b2012-06-20 16:38:30 -070027587 WDI_ControlBlockType* pWDICtx,
27588 WDI_EventInfoType* pEventData
27589)
27590{
Jeff Johnson295189b2012-06-20 16:38:30 -070027591 eHalStatus halStatus;
27592 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027593 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27594 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27596
27597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027598 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027599
27600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027602 -------------------------------------------------------------------------*/
27603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27604 ( NULL == pEventData->pEventData ))
27605 {
27606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027610 }
27611
27612 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027613 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027614
27615 /*-------------------------------------------------------------------------
27616 Extract response and send it to UMAC
27617 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027618 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27619 {
27620 wpalMemoryCopy( &halSetPktFilterRspParams,
27621 pEventData->pEventData,
27622 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027623
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027624 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27625 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27626 }
27627 else
27628 {
27629 halStatus = *((eHalStatus*)pEventData->pEventData);
27630 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27631 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027632 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027633 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027634
Jeff Johnsone7245742012-09-05 17:12:55 -070027635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027636}
27637
27638/**
27639 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027640
27641 @param pWDICtx: pointer to the WLAN DAL context
27642 pEventData: pointer to the event information structure
27643
Jeff Johnson295189b2012-06-20 16:38:30 -070027644 @see
27645 @return Result of the function call
27646*/
27647WDI_Status
27648WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027649(
Jeff Johnson295189b2012-06-20 16:38:30 -070027650 WDI_ControlBlockType* pWDICtx,
27651 WDI_EventInfoType* pEventData
27652)
27653{
Jeff Johnson295189b2012-06-20 16:38:30 -070027654 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027655 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027656 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27657 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027658
27659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27660
27661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027662 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027663
27664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027666 -------------------------------------------------------------------------*/
27667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27668 ( NULL == pEventData->pEventData ))
27669 {
27670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027674 }
27675
Jeff Johnsone7245742012-09-05 17:12:55 -070027676 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027677
27678 /*-------------------------------------------------------------------------
27679 Extract response and send it to UMAC
27680 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027681 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27682 {
27683 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27684 pEventData->pEventData,
27685 sizeof(halRcvFltrPktMatachRsp));
27686
27687 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27688 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27689 }
27690 else
27691 {
27692 halStatus = *((eHalStatus*)pEventData->pEventData);
27693 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27694 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027695
27696 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027697 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027698
Jeff Johnsone7245742012-09-05 17:12:55 -070027699 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027700}
27701
27702/**
27703 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027704
27705 @param pWDICtx: pointer to the WLAN DAL context
27706 pEventData: pointer to the event information structure
27707
Jeff Johnson295189b2012-06-20 16:38:30 -070027708 @see
27709 @return Result of the function call
27710*/
27711WDI_Status
27712WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027713(
Jeff Johnson295189b2012-06-20 16:38:30 -070027714 WDI_ControlBlockType* pWDICtx,
27715 WDI_EventInfoType* pEventData
27716)
27717{
Jeff Johnson295189b2012-06-20 16:38:30 -070027718 eHalStatus halStatus;
27719 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027720 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27721 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27723
27724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027725 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027726
27727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027729 -------------------------------------------------------------------------*/
27730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27731 ( NULL == pEventData->pEventData ))
27732 {
27733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027737 }
27738
27739 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027740 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027741
27742 /*-------------------------------------------------------------------------
27743 Extract response and send it to UMAC
27744 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027745 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27746 {
27747 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27748 pEventData->pEventData,
27749 sizeof(halRcvFltPktClearRspMsg));
27750
27751 wdiRcvFltPktClearRspParamsType.wdiStatus =
27752 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27753 wdiRcvFltPktClearRspParamsType.bssIdx =
27754 halRcvFltPktClearRspMsg.bssIdx;
27755 }
27756 else
27757 {
27758 halStatus = *((eHalStatus*)pEventData->pEventData);
27759 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27760 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027761
27762 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027763 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027764
Jeff Johnsone7245742012-09-05 17:12:55 -070027765 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027766}
27767#endif // WLAN_FEATURE_PACKET_FILTERING
27768
27769/**
27770 @brief Process Shutdown Rsp function
27771 There is no shutdown response comming from HAL
27772 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027773
Jeff Johnson295189b2012-06-20 16:38:30 -070027774 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027775 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027776
27777 @see
27778 @return Result of the function call
27779*/
27780WDI_Status
27781WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027782(
Jeff Johnson295189b2012-06-20 16:38:30 -070027783 WDI_ControlBlockType* pWDICtx,
27784 WDI_EventInfoType* pEventData
27785)
27786{
27787 /*There is no shutdown response comming from HAL - function just kept for
27788 simmetry */
27789 WDI_ASSERT(0);
27790 return WDI_STATUS_SUCCESS;
27791}/*WDI_ProcessShutdownRsp*/
27792
27793/**
27794 @brief WDI_SetPowerParamsReq
27795
Jeff Johnsone7245742012-09-05 17:12:55 -070027796 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027797 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027798
Jeff Johnson295189b2012-06-20 16:38:30 -070027799 wdiPowerParamsCb: callback for passing back the response
27800 of the Set Power Params operation received from the
27801 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027802
Jeff Johnson295189b2012-06-20 16:38:30 -070027803 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027804 callback
27805
Jeff Johnson295189b2012-06-20 16:38:30 -070027806 @return Result of the function call
27807*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027808WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027809WDI_SetPowerParamsReq
27810(
27811 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27812 WDI_SetPowerParamsCb wdiPowerParamsCb,
27813 void* pUserData
27814)
27815{
27816 WDI_EventInfoType wdiEventData;
27817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27818
27819 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027820 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027821 ------------------------------------------------------------------------*/
27822 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27823 {
27824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27825 "WDI API call before module is initialized - Fail request");
27826
Jeff Johnsone7245742012-09-05 17:12:55 -070027827 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027828 }
27829
27830 /*------------------------------------------------------------------------
27831 Fill in Event data and post to the Main FSM
27832 ------------------------------------------------------------------------*/
27833 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027834 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027835 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027836 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027837 wdiEventData.pUserData = pUserData;
27838
27839 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27840}/*WDI_SetPowerParamsReq*/
27841
27842/**
27843 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027844
27845 @param pWDICtx: pointer to the WLAN DAL context
27846 pEventData: pointer to the event information structure
27847
Jeff Johnson295189b2012-06-20 16:38:30 -070027848 @see
27849 @return Result of the function call
27850*/
27851WDI_Status
27852WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027853(
Jeff Johnson295189b2012-06-20 16:38:30 -070027854 WDI_ControlBlockType* pWDICtx,
27855 WDI_EventInfoType* pEventData
27856)
27857{
27858 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27859 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027861 wpt_uint16 usDataOffset = 0;
27862 wpt_uint16 usSendSize = 0;
27863 tSetPowerParamsType powerParams;
27864
27865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027867 -------------------------------------------------------------------------*/
27868 if (( NULL == pEventData ) ||
27869 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27870 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27871 {
27872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027876 }
27877
27878 /*-----------------------------------------------------------------------
27879 Get message buffer
27880 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027881 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027882 sizeof(powerParams),
27883 &pSendBuffer, &usDataOffset, &usSendSize))||
27884 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27885 {
27886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027887 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027888 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
27889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027891 }
27892
27893 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070027894 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070027895 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
27896
27897 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027898 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070027899 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
27900
27901 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027902 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070027903 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
27904
27905 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070027906 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070027907 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
27908
27909 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070027910 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070027911 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
27912
27913 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027914 powerParams.uBETInterval =
27915 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070027916
Yue Mac24062f2013-05-13 17:01:29 -070027917 /* MAX LI for modulated DTIM */
27918 powerParams.uMaxLIModulatedDTIM =
27919 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070027920
27921 wpalMemoryCopy( pSendBuffer+usDataOffset,
27922 &powerParams,
27923 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027924
27925 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027926 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027927
27928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027929 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027930 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027931 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27932 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027933}
27934
27935/**
27936 @brief Process Power Params Rsp function (called when a
27937 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027938
27939 @param pWDICtx: pointer to the WLAN DAL context
27940 pEventData: pointer to the event information structure
27941
Jeff Johnson295189b2012-06-20 16:38:30 -070027942 @see
27943 @return Result of the function call
27944*/
27945WDI_Status
27946WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027947(
Jeff Johnson295189b2012-06-20 16:38:30 -070027948 WDI_ControlBlockType* pWDICtx,
27949 WDI_EventInfoType* pEventData
27950)
27951{
27952 WDI_Status wdiStatus;
27953 eHalStatus halStatus;
27954 WDI_SetPowerParamsCb wdiPowerParamsCb;
27955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27956
27957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027959 -------------------------------------------------------------------------*/
27960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27961 ( NULL == pEventData->pEventData ))
27962 {
27963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027967 }
27968
Jeff Johnsone7245742012-09-05 17:12:55 -070027969 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027970
27971 /*-------------------------------------------------------------------------
27972 Extract response and send it to UMAC
27973 -------------------------------------------------------------------------*/
27974 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027975 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027976
27977 /*Notify UMAC*/
27978 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27979
Jeff Johnsone7245742012-09-05 17:12:55 -070027980 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027981}/*WDI_ProcessSetPowerParamsRsp*/
27982
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027983/**
27984 @brief WDI_dhcpStartInd
27985 Host will send an event to the FW when DHCP is initiated
27986
27987 @param
27988 WDI_DHCPInd: DHCP Indication
27989 @see
27990 @return Result of the function call
27991*/
27992WDI_Status
27993WDI_dhcpStartInd
27994(
27995 WDI_DHCPInd *wdiDHCPInd
27996)
27997{
27998 WDI_EventInfoType wdiEventData;
27999
28000 /*------------------------------------------------------------------------
28001 Sanity Check
28002 ------------------------------------------------------------------------*/
28003 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28004 {
28005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28006 "WDI API call before module is initialized - Fail request");
28007
28008 return WDI_STATUS_E_NOT_ALLOWED;
28009 }
28010
28011 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28012 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028013 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028014 wdiEventData.pCBfnc = NULL;
28015 wdiEventData.pUserData = NULL;
28016
28017 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28018}
28019
28020
28021/**
28022 @brief WDI_dhcpStopInd
28023 Host will send an event to the FW when DHCP is completed
28024
28025 @param
28026 WDI_DHCPInd: DHCP Indication
28027 @see
28028 @return Result of the function call
28029*/
28030WDI_Status
28031WDI_dhcpStopInd
28032(
28033 WDI_DHCPInd *wdiDHCPInd
28034)
28035{
28036 WDI_EventInfoType wdiEventData;
28037
28038 /*------------------------------------------------------------------------
28039 Sanity Check
28040 ------------------------------------------------------------------------*/
28041 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28042 {
28043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28044 "WDI API call before module is initialized - Fail request");
28045
28046 return WDI_STATUS_E_NOT_ALLOWED;
28047 }
28048
28049 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28050 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028051 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028052 wdiEventData.pCBfnc = NULL;
28053 wdiEventData.pUserData = NULL;
28054
28055 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28056}
28057
28058
28059/**
28060 @brief Process DHCP Start Indication message and post it to HAL
28061
28062 @param pWDICtx: pointer to the WLAN DAL context
28063 pEventData: pointer to the event information structure
28064
28065 @see
28066 @return Result of the function call
28067*/
28068WDI_Status
28069WDI_ProcessDHCPStartInd
28070(
28071 WDI_ControlBlockType* pWDICtx,
28072 WDI_EventInfoType* pEventData
28073)
28074{
28075 wpt_uint8* pSendBuffer = NULL;
28076 wpt_uint16 usDataOffset = 0;
28077 wpt_uint16 usSendSize = 0;
28078 wpt_uint16 usLen = 0;
28079 WDI_DHCPInd* pwdiDHCPInd = NULL;
28080 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028081 WDI_Status wdiStatus;
28082
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028083
28084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28085
28086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28087 "%s", __func__);
28088
28089 /*-------------------------------------------------------------------------
28090 Sanity check
28091 -------------------------------------------------------------------------*/
28092 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28093 {
28094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28095 "%s: Invalid parameters", __func__);
28096 WDI_ASSERT(0);
28097 return WDI_STATUS_E_FAILURE;
28098 }
28099 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28100 /*-----------------------------------------------------------------------
28101 Get message buffer
28102 -----------------------------------------------------------------------*/
28103
28104 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28105 WDI_DHCP_START_IND,
28106 sizeof(tDHCPInfo),
28107 &pSendBuffer, &usDataOffset, &usSendSize))||
28108 ( usSendSize < (usDataOffset + usLen )))
28109 {
28110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28111 "Unable to get send buffer in DHCP Start req %p ",
28112 pEventData);
28113 WDI_ASSERT(0);
28114 return WDI_STATUS_E_FAILURE;
28115 }
28116
Sandeep Puligillaee789512014-02-13 19:14:52 +053028117 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028118 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28119 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28120 WDI_MAC_ADDR_LEN);
28121
28122 pWDICtx->pReqStatusUserData = NULL;
28123 pWDICtx->pfncRspCB = NULL;
28124
28125 /*-------------------------------------------------------------------------
28126 Send DHCP Start Indication to HAL
28127 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028128 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28129 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028130}/*WDI_ProcessDHCPStartInd*/
28131
28132/**
28133 @brief Process DHCP Stop indication message and post it to HAL
28134
28135 @param pWDICtx: pointer to the WLAN DAL context
28136 pEventData: pointer to the event information structure
28137
28138 @see
28139 @return Result of the function call
28140*/
28141WDI_Status
28142WDI_ProcessDHCPStopInd
28143(
28144 WDI_ControlBlockType* pWDICtx,
28145 WDI_EventInfoType* pEventData
28146)
28147{
28148 wpt_uint8* pSendBuffer = NULL;
28149 wpt_uint16 usDataOffset = 0;
28150 wpt_uint16 usSendSize = 0;
28151 wpt_uint16 usLen = 0;
28152 WDI_DHCPInd* pwdiDHCPInd = NULL;
28153 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028154 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028155
28156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28157
28158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28159 "%s", __func__);
28160
28161 /*-------------------------------------------------------------------------
28162 Sanity check
28163 -------------------------------------------------------------------------*/
28164
28165 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28166 {
28167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28168 "%s: Invalid parameters", __func__);
28169 WDI_ASSERT(0);
28170 return WDI_STATUS_E_FAILURE;
28171 }
28172 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28173 /*-----------------------------------------------------------------------
28174 Get message buffer
28175 -----------------------------------------------------------------------*/
28176
28177 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28178 WDI_DHCP_STOP_IND,
28179 sizeof(tDHCPInfo),
28180 &pSendBuffer, &usDataOffset, &usSendSize))||
28181 ( usSendSize < (usDataOffset + usLen )))
28182 {
28183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28184 "Unable to get send buffer in DHCP Start req %p ",
28185 pEventData);
28186 WDI_ASSERT(0);
28187 return WDI_STATUS_E_FAILURE;
28188 }
28189
Sandeep Puligillaee789512014-02-13 19:14:52 +053028190 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028191 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28192 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28193 WDI_MAC_ADDR_LEN);
28194
28195 pWDICtx->pReqStatusUserData = NULL;
28196 pWDICtx->pfncRspCB = NULL;
28197 /*-------------------------------------------------------------------------
28198 Send DHCP Stop indication to HAL
28199 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028200 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28201 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028202
28203}/*WDI_ProcessDHCPStopInd*/
28204
28205
Jeff Johnson295189b2012-06-20 16:38:30 -070028206#ifdef WLAN_FEATURE_GTK_OFFLOAD
28207/**
28208 @brief WDI_GTKOffloadReq will be called when the upper MAC
28209 wants to set GTK Rekey Counter while in power save. Upon
28210 the call of this API the WLAN DAL will pack and send a
28211 HAL GTK offload request message to the lower RIVA
28212 sub-system if DAL is in state STARTED.
28213
28214 In state BUSY this request will be queued. Request won't
28215 be allowed in any other state.
28216
28217 WDI_PostAssocReq must have been called.
28218
28219 @param pwdiGtkOffloadParams: the GTK offload as specified
28220 by the Device Interface
28221
28222 wdiGtkOffloadCb: callback for passing back the response
28223 of the GTK offload operation received from the device
28224
28225 pUserData: user data will be passed back with the
28226 callback
28227
28228 @see WDI_PostAssocReq
28229 @return Result of the function call
28230*/
28231WDI_Status
28232WDI_GTKOffloadReq
28233(
28234 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28235 WDI_GtkOffloadCb wdiGtkOffloadCb,
28236 void* pUserData
28237)
28238{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028239 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28241
28242 /*------------------------------------------------------------------------
28243 Sanity Check
28244 ------------------------------------------------------------------------*/
28245 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28246 {
28247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28248 "WDI API call before module is initialized - Fail request");
28249
28250 return WDI_STATUS_E_NOT_ALLOWED;
28251 }
28252
28253 /*------------------------------------------------------------------------
28254 Fill in Event data and post to the Main FSM
28255 ------------------------------------------------------------------------*/
28256 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28257 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028258 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028259 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28260 wdiEventData.pUserData = pUserData;
28261
28262 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28263}
28264
28265
28266/**
28267 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28268 MAC wants to get GTK Rekey Counter while in power save.
28269 Upon the call of this API the WLAN DAL will pack and
28270 send a HAL GTK offload request message to the lower RIVA
28271 sub-system if DAL is in state STARTED.
28272
28273 In state BUSY this request will be queued. Request won't
28274 be allowed in any other state.
28275
28276 WDI_PostAssocReq must have been called.
28277
28278 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28279 Information Message as specified by the
28280 Device Interface
28281
28282 wdiGtkOffloadGetInfoCb: callback for passing back the
28283 response of the GTK offload operation received from the
28284 device
28285
28286 pUserData: user data will be passed back with the
28287 callback
28288
28289 @see WDI_PostAssocReq
28290 @return Result of the function call
28291*/
28292WDI_Status
28293WDI_GTKOffloadGetInfoReq
28294(
28295 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28296 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28297 void* pUserData
28298)
28299{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028300 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28302
28303 /*------------------------------------------------------------------------
28304 Sanity Check
28305 ------------------------------------------------------------------------*/
28306 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28307 {
28308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28309 "WDI API call before module is initialized - Fail request");
28310
28311 return WDI_STATUS_E_NOT_ALLOWED;
28312 }
28313
28314 /*------------------------------------------------------------------------
28315 Fill in Event data and post to the Main FSM
28316 ------------------------------------------------------------------------*/
28317 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28318 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28319 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28320 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28321 wdiEventData.pUserData = pUserData;
28322
28323 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28324}
28325
28326
28327/**
28328 @brief Process set GTK Offload Request function
28329
28330 @param pWDICtx: pointer to the WLAN DAL context
28331 pEventData: pointer to the event information structure
28332
28333 @see
28334 @return Result of the function call
28335*/
28336WDI_Status
28337WDI_ProcessGTKOffloadReq
28338(
28339 WDI_ControlBlockType* pWDICtx,
28340 WDI_EventInfoType* pEventData
28341)
28342{
28343 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28344 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28345 wpt_uint8* pSendBuffer = NULL;
28346 wpt_uint16 usDataOffset = 0;
28347 wpt_uint16 usSendSize = 0;
28348 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028349 wpt_uint8 ucCurrentSessionId = 0;
28350 WDI_BSSSessionType* pBSSSes = NULL;
28351
Jeff Johnson295189b2012-06-20 16:38:30 -070028352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28353
28354 /*-------------------------------------------------------------------------
28355 Sanity check
28356 -------------------------------------------------------------------------*/
28357 if (( NULL == pEventData ) ||
28358 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28359 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28360 {
28361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028363 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028364 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028365 }
28366
28367 /*-----------------------------------------------------------------------
28368 Get message buffer
28369 -----------------------------------------------------------------------*/
28370 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28371 sizeof(gtkOffloadReqParams),
28372 &pSendBuffer, &usDataOffset, &usSendSize))||
28373 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28374 {
28375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028376 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028377 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28378 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028379 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028380 }
28381
28382 //
28383 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28384 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028385 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28386 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28387 &pBSSSes);
28388 if ( NULL == pBSSSes )
28389 {
28390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028391 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028392 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028393 }
28394
28395 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28396
Jeff Johnson295189b2012-06-20 16:38:30 -070028397 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28398 // Copy KCK
28399 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28400 // Copy KEK
28401 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28402 // Copy KeyReplayCounter
28403 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28404
28405 wpalMemoryCopy( pSendBuffer+usDataOffset,
28406 &gtkOffloadReqParams,
28407 sizeof(gtkOffloadReqParams));
28408
28409 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28410 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28411
28412 /*-------------------------------------------------------------------------
28413 Send Get STA Request to HAL
28414 -------------------------------------------------------------------------*/
28415 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28416 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028417
28418fail:
28419 // Release the message buffer so we don't leak
28420 wpalMemoryFree(pSendBuffer);
28421
28422failRequest:
28423 //WDA should have failure check to avoid the memory leak
28424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028425}
28426
28427
28428/**
28429 @brief Process GTK Offload Get Information Request function
28430
28431 @param pWDICtx: pointer to the WLAN DAL context
28432 pEventData: pointer to the event information structure
28433
28434 @see
28435 @return Result of the function call
28436*/
28437WDI_Status
28438WDI_ProcessGTKOffloadGetInfoReq
28439(
28440 WDI_ControlBlockType* pWDICtx,
28441 WDI_EventInfoType* pEventData
28442)
28443{
28444 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28445 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28446 wpt_uint8* pSendBuffer = NULL;
28447 wpt_uint16 usDataOffset = 0;
28448 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028449 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28450 wpt_uint8 ucCurrentSessionId = 0;
28451 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028452
28453 /*-------------------------------------------------------------------------
28454 Sanity check
28455 -------------------------------------------------------------------------*/
28456 if (( NULL == pEventData ) ||
28457 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28458 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28459 {
28460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028462 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028463 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028464 }
28465
28466 /*-----------------------------------------------------------------------
28467 Get message buffer
28468 -----------------------------------------------------------------------*/
28469 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028470 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028471 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028472 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028473 {
28474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028475 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028476 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28477 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028478 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028479 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028480 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28481 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28482 &pBSSSes);
28483 if ( NULL == pBSSSes )
28484 {
28485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028486 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028487 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028488 }
28489 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028490
28491 //
28492 // Don't need to fill send buffer other than header
28493 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028494 wpalMemoryCopy( pSendBuffer+usDataOffset,
28495 &halGtkOffloadGetInfoReqParams,
28496 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028497
28498 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28499 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28500
28501 /*-------------------------------------------------------------------------
28502 Send Get STA Request to HAL
28503 -------------------------------------------------------------------------*/
28504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28505 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028506fail:
28507 // Release the message buffer so we don't leak
28508 wpalMemoryFree(pSendBuffer);
28509
28510failRequest:
28511 //WDA should have failure check to avoid the memory leak
28512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028513}
28514
28515/**
28516 @brief Process host offload Rsp function (called when a
28517 response is being received over the bus from HAL)
28518
28519 @param pWDICtx: pointer to the WLAN DAL context
28520 pEventData: pointer to the event information structure
28521
28522 @see
28523 @return Result of the function call
28524*/
28525WDI_Status
28526WDI_ProcessGtkOffloadRsp
28527(
28528 WDI_ControlBlockType* pWDICtx,
28529 WDI_EventInfoType* pEventData
28530)
28531{
Jeff Johnson295189b2012-06-20 16:38:30 -070028532 eHalStatus halStatus;
28533 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028534 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28535 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028536
28537 /*-------------------------------------------------------------------------
28538 Sanity check
28539 -------------------------------------------------------------------------*/
28540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28541 ( NULL == pEventData->pEventData))
28542 {
28543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028545 WDI_ASSERT(0);
28546 return WDI_STATUS_E_FAILURE;
28547 }
28548
Wilson Yang00256342013-10-10 23:13:38 -070028549 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28550
Jeff Johnson295189b2012-06-20 16:38:30 -070028551 /*-------------------------------------------------------------------------
28552 Extract response and send it to UMAC
28553 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028554 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28555 {
28556 wpalMemoryCopy( &halGtkOffloadRspParams,
28557 pEventData->pEventData,
28558 sizeof(halGtkOffloadRspParams));
28559
28560 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028561 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028562 wdiGtkOffloadRsparams.bssIdx =
28563 halGtkOffloadRspParams.bssIdx;
28564 }
28565 else
28566 {
28567 halStatus = *((eHalStatus*)pEventData->pEventData);
28568 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28569 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028570
28571 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028572 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028573
28574 return WDI_STATUS_SUCCESS;
28575}
28576
28577/**
28578 @brief Process GTK Offload Get Information Response function
28579
28580 @param pWDICtx: pointer to the WLAN DAL context
28581 pEventData: pointer to the event information structure
28582
28583 @see
28584 @return Result of the function call
28585*/
28586WDI_Status
28587WDI_ProcessGTKOffloadGetInfoRsp
28588(
28589 WDI_ControlBlockType* pWDICtx,
28590 WDI_EventInfoType* pEventData
28591)
28592{
Jeff Johnson295189b2012-06-20 16:38:30 -070028593 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028594 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028595 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28596 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028597 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028598
Jeff Johnson295189b2012-06-20 16:38:30 -070028599
28600 /*-------------------------------------------------------------------------
28601 Sanity check
28602 -------------------------------------------------------------------------*/
28603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28604 ( NULL == pEventData->pEventData ))
28605 {
28606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028608 WDI_ASSERT(0);
28609 return WDI_STATUS_E_FAILURE;
28610 }
28611
Wilson Yang00256342013-10-10 23:13:38 -070028612 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28613
28614 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028615 Extract response and send it to UMAC
28616 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028617 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28618 {
28619 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28620 pEventData->pEventData,
28621 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028622
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028623 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028624 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028625 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28626 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28627 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28628 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28629 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28630 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28631 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28632 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028633
28634 wpalMutexAcquire(&pWDICtx->wptMutex);
28635 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28636 &pBSSSes);
28637
28638 if ( NULL == pBSSSes )
28639 {
28640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28641 "Association sequence for this BSS does not exist or "
28642 "association no longer in progress - mysterious HAL response");
28643 wpalMutexRelease(&pWDICtx->wptMutex);
28644 return WDI_STATUS_E_NOT_ALLOWED;
28645 }
28646
28647 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28648 sizeof (wpt_macAddr));
28649 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028650 }
28651 else
28652 {
28653 halStatus = *((eHalStatus*)pEventData->pEventData);
28654 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28655 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028656 /*Notify UMAC*/
28657 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28658 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028659 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028660
28661 return WDI_STATUS_SUCCESS;
28662}
28663#endif // WLAN_FEATURE_GTK_OFFLOAD
28664
28665#ifdef WLAN_WAKEUP_EVENTS
28666WDI_Status
28667WDI_ProcessWakeReasonInd
28668(
28669 WDI_ControlBlockType* pWDICtx,
28670 WDI_EventInfoType* pEventData
28671)
28672{
28673 WDI_LowLevelIndType *pWdiInd;
28674 tpWakeReasonParams pWakeReasonParams;
28675 wpt_uint32 allocSize = 0;
28676
28677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028678 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028679
28680 /*-------------------------------------------------------------------------
28681 Sanity check
28682 -------------------------------------------------------------------------*/
28683 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28684 ( NULL == pEventData->pEventData ))
28685 {
28686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028688 WDI_ASSERT( 0 );
28689 return WDI_STATUS_E_FAILURE;
28690 }
28691
28692 /*-------------------------------------------------------------------------
28693 Extract indication and send it to UMAC
28694 -------------------------------------------------------------------------*/
28695 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28696
28697 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28698
28699 //Allocate memory for WDI_WakeReasonIndType structure
28700 pWdiInd = wpalMemoryAllocate(allocSize) ;
28701
28702 if(NULL == pWdiInd)
28703 {
28704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028705 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028706 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028707 WDI_ASSERT(0);
28708 return WDI_STATUS_E_FAILURE;
28709 }
28710
28711 wpalMemoryZero(pWdiInd, allocSize);
28712
28713 /* Fill in the indication parameters*/
28714 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28715 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28716 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28717 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28718 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28719 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28720 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28721 &(pWakeReasonParams->aDataStart[0]),
28722 pWakeReasonParams->ulStoredDataLen);
28723
ltimariub77f24b2013-01-24 18:54:33 -080028724
28725 if ( pWDICtx->wdiLowLevelIndCB )
28726 {
28727 /*Notify UMAC*/
28728 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28729 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028730
28731 //Free memory allocated for WDI_WakeReasonIndType structure
28732 wpalMemoryFree(pWdiInd);
28733
28734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028735 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028736
28737 return WDI_STATUS_SUCCESS;
28738}
28739#endif // WLAN_WAKEUP_EVENTS
28740
28741void WDI_GetWcnssCompiledApiVersion
28742(
28743 WDI_WlanVersionType *pWcnssApiVersion
28744)
28745{
28746 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28747 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28748 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28749 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28750}
28751
28752/**
28753 @brief Process Set TM Level Rsp function (called when a
28754 response is being received over the bus from HAL)
28755
28756 @param pWDICtx: pointer to the WLAN DAL context
28757 pEventData: pointer to the event information structure
28758
28759 @see
28760 @return Result of the function call
28761*/
28762WDI_Status
28763WDI_ProcessSetTmLevelRsp
28764(
28765 WDI_ControlBlockType* pWDICtx,
28766 WDI_EventInfoType* pEventData
28767)
28768{
28769 WDI_Status wdiStatus;
28770 eHalStatus halStatus;
28771 WDI_SetTmLevelCb wdiSetTmLevelCb;
28772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28773
28774 /*-------------------------------------------------------------------------
28775 Sanity check
28776 -------------------------------------------------------------------------*/
28777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28778 ( NULL == pEventData->pEventData ))
28779 {
28780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028782 WDI_ASSERT(0);
28783 return WDI_STATUS_E_FAILURE;
28784 }
28785
28786 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28787
28788 /*-------------------------------------------------------------------------
28789 Extract response and send it to UMAC
28790 -------------------------------------------------------------------------*/
28791 halStatus = *((eHalStatus*)pEventData->pEventData);
28792 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28793
28794 /*Notify UMAC*/
28795 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28796
28797 return WDI_STATUS_SUCCESS;
28798}/*WDI_ProcessSetTmLevelRsp*/
28799
28800/**
28801 @brief Process Set Thermal Mitigation level Changed request
28802
28803 @param pWDICtx: pointer to the WLAN DAL context
28804 pEventData: pointer to the event information structure
28805
28806 @see
28807 @return Result of the function call
28808*/
28809WDI_Status
28810WDI_ProcessSetTmLevelReq
28811(
28812 WDI_ControlBlockType* pWDICtx,
28813 WDI_EventInfoType* pEventData
28814)
28815{
28816 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28817 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28818 wpt_uint8* pSendBuffer = NULL;
28819 wpt_uint16 usDataOffset = 0;
28820 wpt_uint16 usSendSize = 0;
28821 tSetThermalMitgationType halTmMsg;
28822
28823 /*-------------------------------------------------------------------------
28824 Sanity check
28825 -------------------------------------------------------------------------*/
28826 if (( NULL == pEventData ) ||
28827 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28828 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28829 {
28830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028831 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028832 WDI_ASSERT(0);
28833 return WDI_STATUS_E_FAILURE;
28834 }
28835
28836 /*-----------------------------------------------------------------------
28837 Get message buffer
28838 -----------------------------------------------------------------------*/
28839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28840 sizeof(halTmMsg),
28841 &pSendBuffer, &usDataOffset, &usSendSize))||
28842 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28843 {
28844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028845 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028846 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28847 WDI_ASSERT(0);
28848 return WDI_STATUS_E_FAILURE;
28849 }
28850
28851 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28852 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28853
28854 wpalMemoryCopy( pSendBuffer+usDataOffset,
28855 &halTmMsg,
28856 sizeof(halTmMsg));
28857
28858 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28859 pWDICtx->pfncRspCB = NULL;
28860 /*-------------------------------------------------------------------------
28861 Send Get STA Request to HAL
28862 -------------------------------------------------------------------------*/
28863 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28864 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28865}
28866
28867/* Fill the value from the global features enabled array to the global capabilities
28868 * bitmap struct
28869 */
28870static void
28871FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28872{
28873 wpt_int8 i;
28874 for (i=0; i<len; i++)
28875 {
28876 setFeatCaps(fCaps, enabledFeat[i]);
28877 }
28878}
28879
28880/**
28881 @brief WDI_featureCapsExchangeReq
28882 Post feature capability bitmap exchange event.
28883 Host will send its own capability to FW in this req and
28884 expect FW to send its capability back as a bitmap in Response
28885
28886 @param
28887
28888 wdiFeatureCapsExchangeCb: callback called on getting the response.
28889 It is kept to mantain similarity between WDI reqs and if needed, can
28890 be used in future. Currently, It is set to NULL
28891
28892 pUserData: user data will be passed back with the
28893 callback
28894
28895 @see
28896 @return Result of the function call
28897*/
28898WDI_Status
28899WDI_featureCapsExchangeReq
28900(
28901 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
28902 void* pUserData
28903)
28904{
28905 WDI_EventInfoType wdiEventData;
28906 wpt_int32 fCapsStructSize;
28907
28908 /*------------------------------------------------------------------------
28909 Sanity Check
28910 ------------------------------------------------------------------------*/
28911 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28912 {
28913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28914 "WDI API call before module is initialized - Fail request");
28915
28916 return WDI_STATUS_E_NOT_ALLOWED;
28917 }
28918
28919 /* Allocate memory separately for global variable carrying FW caps */
28920 fCapsStructSize = sizeof(tWlanFeatCaps);
28921 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28922 if ( NULL == gpHostWlanFeatCaps )
28923 {
28924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028925 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028926 WDI_ASSERT(0);
28927 return WDI_STATUS_MEM_FAILURE;
28928 }
28929
28930 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
28931
28932 /*------------------------------------------------------------------------
28933 Fill in Event data and post to the Main FSM
28934 ------------------------------------------------------------------------*/
28935 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
28936 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028938 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028939 gpHostWlanFeatCaps->featCaps[0],
28940 gpHostWlanFeatCaps->featCaps[1],
28941 gpHostWlanFeatCaps->featCaps[2],
28942 gpHostWlanFeatCaps->featCaps[3]
28943 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
28945 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028946 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
28947 wdiEventData.pEventData = gpHostWlanFeatCaps;
28948 wdiEventData.uEventDataSize = fCapsStructSize;
28949 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
28950 wdiEventData.pUserData = pUserData;
28951
28952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28953}
28954
28955/**
Yathish9f22e662012-12-10 14:21:35 -080028956 @brief Disable Active mode offload in Host
28957
28958 @param void
28959 @see
28960 @return void
28961*/
28962void
28963WDI_disableCapablityFeature(wpt_uint8 feature_index)
28964{
28965 supportEnabledFeatures[feature_index] = 0;
28966 return;
28967}
28968
28969/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028970 @brief Process Host-FW Capability Exchange Request function
28971
28972 @param pWDICtx: pointer to the WLAN DAL context
28973 pEventData: pointer to the event information structure
28974
28975 @see
28976 @return Result of the function call
28977*/
28978WDI_Status
28979WDI_ProcessFeatureCapsExchangeReq
28980(
28981 WDI_ControlBlockType* pWDICtx,
28982 WDI_EventInfoType* pEventData
28983)
28984{
28985 wpt_uint8* pSendBuffer = NULL;
28986 wpt_uint16 usDataOffset = 0;
28987 wpt_uint16 usSendSize = 0;
28988 wpt_uint16 usLen = 0;
28989
28990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28991
28992 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028993 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028994
28995 /*-------------------------------------------------------------------------
28996 Sanity check
28997 -------------------------------------------------------------------------*/
28998 /* Call back function is NULL since not required for cap exchange req */
28999 if (( NULL == pEventData ) ||
29000 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29001 {
29002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029004 WDI_ASSERT(0);
29005 return WDI_STATUS_E_FAILURE;
29006 }
29007
29008 /*-----------------------------------------------------------------------
29009 Get message buffer
29010 -----------------------------------------------------------------------*/
29011 usLen = sizeof(tWlanFeatCaps);
29012
29013 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29014 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29015 usLen,
29016 &pSendBuffer, &usDataOffset, &usSendSize))||
29017 ( usSendSize < (usDataOffset + usLen )))
29018 {
29019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029020 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029021 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29022 WDI_ASSERT(0);
29023 return WDI_STATUS_E_FAILURE;
29024 }
29025
29026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029027 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029028 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29029 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29030 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29031 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29032 );
29033
29034 /* Copy host caps after the offset in the send buffer */
29035 wpalMemoryCopy( pSendBuffer+usDataOffset,
29036 (tWlanFeatCaps *)pEventData->pEventData,
29037 usLen);
29038
29039 /*-------------------------------------------------------------------------
29040 Send Start Request to HAL
29041 -------------------------------------------------------------------------*/
29042 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29043 (WDI_StartRspCb)pEventData->pCBfnc,
29044 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29045
29046}/*WDI_ProcessFeatureCapsExchangeReq*/
29047
29048/**
29049 @brief Process Host-FW Capability Exchange Response function
29050
29051 @param pWDICtx: pointer to the WLAN DAL context
29052 pEventData: pointer to the event information structure
29053
29054 @see
29055 @return Result of the function call
29056*/
29057WDI_Status
29058WDI_ProcessFeatureCapsExchangeRsp
29059(
29060 WDI_ControlBlockType* pWDICtx,
29061 WDI_EventInfoType* pEventData
29062)
29063{
29064 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29065 wpt_int32 fCapsStructSize;
29066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29067
29068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029069 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029070
29071 /*-------------------------------------------------------------------------
29072 Sanity check
29073 -------------------------------------------------------------------------*/
29074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29075 ( NULL == pEventData->pEventData ))
29076 {
29077 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029080 WDI_ASSERT(0);
29081 return WDI_STATUS_E_FAILURE;
29082 }
29083
29084 /* Allocate memory separately for global variable carrying FW caps */
29085 fCapsStructSize = sizeof(tWlanFeatCaps);
29086 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29087 if ( NULL == gpFwWlanFeatCaps )
29088 {
29089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029090 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029091 WDI_ASSERT(0);
29092 return WDI_STATUS_MEM_FAILURE;
29093 }
29094
29095 /*-------------------------------------------------------------------------
29096 Unpack HAL Response Message - the header was already extracted by the
29097 main Response Handling procedure
29098 -------------------------------------------------------------------------*/
29099 /*-------------------------------------------------------------------------
29100 Extract response and send it to UMAC
29101 -------------------------------------------------------------------------*/
29102
29103 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29104 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029106 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029107 gpFwWlanFeatCaps->featCaps[0],
29108 gpFwWlanFeatCaps->featCaps[1],
29109 gpFwWlanFeatCaps->featCaps[2],
29110 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029111 );
29112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29113 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029114 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29115
29116 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29117 if (wdiFeatureCapsExchangeCb != NULL)
29118 wdiFeatureCapsExchangeCb(NULL, NULL);
29119
29120 return WDI_STATUS_SUCCESS;
29121}
29122
Mohit Khanna4a70d262012-09-11 16:30:12 -070029123#ifdef WLAN_FEATURE_11AC
29124WDI_Status
29125WDI_ProcessUpdateVHTOpModeRsp
29126(
29127 WDI_ControlBlockType* pWDICtx,
29128 WDI_EventInfoType* pEventData
29129)
29130{
29131 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29132 WDI_Status wdiStatus;
29133 eHalStatus halStatus;
29134
29135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29136
29137 /*-------------------------------------------------------------------------
29138 Sanity check
29139 -------------------------------------------------------------------------*/
29140 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29141 ( NULL == pEventData->pEventData))
29142 {
29143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029144 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029145 WDI_ASSERT(0);
29146 return WDI_STATUS_E_FAILURE;
29147 }
29148 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29149
29150 /*-------------------------------------------------------------------------
29151 Extract response and send it to UMAC
29152 -------------------------------------------------------------------------*/
29153 halStatus = *((eHalStatus*)pEventData->pEventData);
29154 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29155
29156 /*Notify UMAC*/
29157 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29158
29159 return WDI_STATUS_SUCCESS;
29160}
29161#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029162/**
29163 @brief WDI_getHostWlanFeatCaps
29164 WDI API that returns whether the feature passed to it as enum value in
29165 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29166 variable storing host capability bitmap to find this. This can be used by
29167 other moduels to decide certain things like call different APIs based on
29168 whether a particular feature is supported.
29169
29170 @param
29171
29172 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29173
29174 @see
29175 @return
29176 0 - if the feature is NOT supported in host
29177 any non-zero value - if the feature is SUPPORTED in host.
29178*/
29179wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29180{
29181 wpt_uint8 featSupported = 0;
29182 if (gpHostWlanFeatCaps != NULL)
29183 {
29184 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29185 }
29186 else
29187 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029189 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029190 }
29191 return featSupported;
29192}
29193
29194/**
29195 @brief WDI_getFwWlanFeatCaps
29196 WDI API that returns whether the feature passed to it as enum value in
29197 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29198 variable storing host capability bitmap to find this. This can be used by
29199 other moduels to decide certain things like call different APIs based on
29200 whether a particular feature is supported.
29201
29202 @param
29203
29204 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29205 in wlan_hal_msg.h.
29206
29207 @see
29208 @return
29209 0 - if the feature is NOT supported in FW
29210 any non-zero value - if the feature is SUPPORTED in FW.
29211*/
29212wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29213{
29214 wpt_uint8 featSupported = 0;
29215 if (gpFwWlanFeatCaps != NULL)
29216 {
29217 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29218 }
29219 else
29220 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029222 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029223 }
29224 return featSupported;
29225}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029226
29227#ifdef WLAN_FEATURE_11AC
29228WDI_Status
29229WDI_ProcessUpdateVHTOpModeReq
29230(
29231 WDI_ControlBlockType* pWDICtx,
29232 WDI_EventInfoType* pEventData
29233)
29234{
29235 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29236 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29237 wpt_uint8* pSendBuffer = NULL;
29238 wpt_uint16 usDataOffset = 0;
29239 wpt_uint16 usSendSize = 0;
29240
29241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29242
29243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029244 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029245
29246 /*-------------------------------------------------------------------------
29247 Sanity check
29248 -------------------------------------------------------------------------*/
29249 if (( NULL == pEventData ) ||
29250 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29251 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29252 {
29253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029254 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029255 WDI_ASSERT(0);
29256 return WDI_STATUS_E_FAILURE;
29257 }
29258
29259 /*-----------------------------------------------------------------------
29260 Get message buffer
29261 -----------------------------------------------------------------------*/
29262 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29263 sizeof(WDI_UpdateVHTOpMode),
29264 &pSendBuffer, &usDataOffset, &usSendSize))||
29265 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29266 {
29267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29268 "Unable to get send buffer in update vht opMode req");
29269 WDI_ASSERT(0);
29270 return WDI_STATUS_E_FAILURE;
29271 }
29272
29273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029274 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029275
29276 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29277 sizeof(WDI_UpdateVHTOpMode));
29278
29279 /*-------------------------------------------------------------------------
29280 Send Start Request to HAL
29281 -------------------------------------------------------------------------*/
29282 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29283 wdiVHTOpModeCb,
29284 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29285
29286}
29287
29288WDI_Status
29289WDI_UpdateVHTOpModeReq
29290(
29291 WDI_UpdateVHTOpMode *pData,
29292 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29293 void* pUserData
29294)
29295{
29296 WDI_EventInfoType wdiEventData;
29297
29298 /*------------------------------------------------------------------------
29299 Sanity Check
29300 ------------------------------------------------------------------------*/
29301 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29302 {
29303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29304 "WDI API call before module is initialized - Fail request");
29305
29306 return WDI_STATUS_E_NOT_ALLOWED;
29307 }
29308
29309 /*------------------------------------------------------------------------
29310 Fill in Event data and post to the Main FSM
29311 ------------------------------------------------------------------------*/
29312 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29313 wdiEventData.pEventData = pData;
29314 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29315 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29316 wdiEventData.pUserData = pUserData;
29317
29318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029319 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029320
29321 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29322
29323}
29324#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029325
29326/**
29327 @brief WDI_TransportChannelDebug -
29328 Display DXE Channel debugging information
29329 User may request to display DXE channel snapshot
29330 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029331
Jeff Johnsonb88db982012-12-10 13:34:59 -080029332 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029333 @param debugFlags : Enable stall detect features
29334 defined by WPAL_DeviceDebugFlags
29335 These features may effect
29336 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029337 @see
29338 @return none
29339*/
29340void WDI_TransportChannelDebug
29341(
29342 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029343 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029344)
29345{
Mihir Shete40a55652014-03-02 14:14:47 +053029346 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029347 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029348}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029349/**
29350 @brief WDI_SsrTimerCB
29351 Callback function for SSR timer, if this is called then the graceful
29352 shutdown for Riva did not happen.
29353
29354 @param pUserData : user data to timer
29355
29356 @see
29357 @return none
29358*/
29359void
29360WDI_SsrTimerCB
29361(
29362 void *pUserData
29363)
29364{
29365 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29367
29368 if (NULL == pWDICtx )
29369 {
29370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029371 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029372 WDI_ASSERT(0);
29373 return;
29374 }
29375 wpalRivaSubystemRestart();
29376
29377 return;
29378
29379}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029380
29381/**
29382 @brief WDI_SetEnableSSR -
29383 This API is called to enable/disable SSR on WDI timeout.
29384
29385 @param enableSSR : enable/disable SSR
29386
29387 @see
29388 @return none
29389*/
29390void WDI_SetEnableSSR(wpt_boolean enableSSR)
29391{
29392 gWDICb.bEnableSSR = enableSSR;
29393}
Leo Chang9056f462013-08-01 19:21:11 -070029394
29395
29396#ifdef FEATURE_WLAN_LPHB
29397/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029398 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029399 This function will be invoked when FW detects low power
29400 heart beat failure
29401
29402 @param pWDICtx : wdi context
29403 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029404 @see
29405 @return Result of the function call
29406*/
29407WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029408WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029409(
29410 WDI_ControlBlockType* pWDICtx,
29411 WDI_EventInfoType* pEventData
29412)
29413{
29414 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029415 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29417
29418 /*-------------------------------------------------------------------------
29419 Sanity check
29420 -------------------------------------------------------------------------*/
29421 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29422 (NULL == pEventData->pEventData))
29423 {
29424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29425 "%s: Invalid parameters", __func__);
29426 WDI_ASSERT(0);
29427 return WDI_STATUS_E_FAILURE;
29428 }
29429
29430 /*-------------------------------------------------------------------------
29431 Extract indication and send it to UMAC
29432 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029433 wpalMemoryCopy(&lphbIndicationParam,
29434 pEventData->pEventData,
29435 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029436
Leo Changd9df8aa2013-09-26 13:32:26 -070029437 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029438 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029439 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029440 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029441 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029442 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029443 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029444 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029445 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029446 /*Notify UMAC*/
29447 if (pWDICtx->wdiLowLevelIndCB)
29448 {
29449 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29450 }
29451
29452 return WDI_STATUS_SUCCESS;
29453}
29454
29455/**
29456 @brief WDI_ProcessLphbCfgRsp -
29457 LPHB configuration response from FW
29458
29459 @param pWDICtx : wdi context
29460 pEventData : indication data
29461
29462 @see
29463 @return Result of the function call
29464*/
29465WDI_Status WDI_ProcessLphbCfgRsp
29466(
29467 WDI_ControlBlockType* pWDICtx,
29468 WDI_EventInfoType* pEventData
29469)
29470{
29471 WDI_Status wdiStatus;
29472 eHalStatus halStatus;
29473 WDI_LphbCfgCb wdiLphbCfgCb;
29474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29475
29476 /*-------------------------------------------------------------------------
29477 Sanity check
29478 -------------------------------------------------------------------------*/
29479 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29480 (NULL == pEventData->pEventData))
29481 {
29482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29483 "%s: Invalid parameters", __func__);
29484 WDI_ASSERT(0);
29485 return WDI_STATUS_E_FAILURE;
29486 }
29487
29488 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29489
29490 /*-------------------------------------------------------------------------
29491 Extract response and send it to UMAC
29492 -------------------------------------------------------------------------*/
29493 halStatus = *((eHalStatus*)pEventData->pEventData);
29494 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29495
29496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29497 "LPHB Cfg Rsp Return status %d", wdiStatus);
29498 /*Notify UMAC*/
29499 if (NULL != wdiLphbCfgCb)
29500 {
29501 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29502 }
29503
29504 return WDI_STATUS_SUCCESS;
29505}
29506
29507/**
29508 @brief WDI_ProcessLPHBConfReq -
29509 LPHB configuration request to FW
29510
29511 @param pWDICtx : wdi context
29512 pEventData : indication data
29513
29514 @see
29515 @return none
29516*/
29517WDI_Status WDI_ProcessLPHBConfReq
29518(
29519 WDI_ControlBlockType* pWDICtx,
29520 WDI_EventInfoType* pEventData
29521)
29522{
29523 WDI_LPHBReq *pLphbReqParams;
29524 WDI_Status wdiStatus;
29525 wpt_uint8* pSendBuffer = NULL;
29526 wpt_uint16 usDataOffset = 0;
29527 wpt_uint16 usSendSize = 0;
29528 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29530
29531 /*-------------------------------------------------------------------------
29532 Sanity check
29533 -------------------------------------------------------------------------*/
29534 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29535 {
29536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29537 "%s: Invalid parameters in Suspend ind",__func__);
29538 WDI_ASSERT(0);
29539 return WDI_STATUS_E_FAILURE;
29540 }
29541
29542 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29543
29544 /*-----------------------------------------------------------------------
29545 Get message buffer
29546 -----------------------------------------------------------------------*/
29547 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29548 WDI_LPHB_CFG_REQ,
29549 sizeof(tHalLowPowerHeartBeatReqMsg),
29550 &pSendBuffer, &usDataOffset, &usSendSize))||
29551 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29552 {
29553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29554 "Unable to get send buffer in LPHB Ind ");
29555 WDI_ASSERT(0);
29556 return WDI_STATUS_E_FAILURE;
29557 }
29558
29559 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29560 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29561
29562 halLphbReqRarams->lowPowerHeartBeatCmdType =
29563 (tANI_U16)(++pLphbReqParams->cmd);
29564 switch ((tANI_U16)pLphbReqParams->cmd)
29565 {
29566 case WDI_LPHB_SET_EN_PARAMS_INDID:
29567 halLphbReqRarams->sessionIdx =
29568 pLphbReqParams->params.lphbEnableReq.session;
29569 halLphbReqRarams->options.control.heartBeatEnable =
29570 pLphbReqParams->params.lphbEnableReq.enable;
29571 halLphbReqRarams->options.control.heartBeatType =
29572 pLphbReqParams->params.lphbEnableReq.item;
29573 break;
29574
29575 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29576 halLphbReqRarams->sessionIdx =
29577 pLphbReqParams->params.lphbTcpParamReq.session;
29578 halLphbReqRarams->options.tcpParams.timeOutSec =
29579 pLphbReqParams->params.lphbTcpParamReq.timeout;
29580 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29581 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29582 sizeof(v_U32_t));
29583 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29584 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29585 sizeof(v_U32_t));
29586
29587 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29588 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29589 WDI_MAC_ADDR_LEN);
29590
29591 halLphbReqRarams->options.tcpParams.hostPort =
29592 pLphbReqParams->params.lphbTcpParamReq.src_port;
29593 halLphbReqRarams->options.tcpParams.destPort =
29594 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029595 halLphbReqRarams->options.tcpParams.timePeriodSec =
29596 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29597 halLphbReqRarams->options.tcpParams.tcpSn =
29598 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029599 break;
29600
29601 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29602 halLphbReqRarams->sessionIdx =
29603 pLphbReqParams->params.lphbTcpFilterReq.session;
29604 halLphbReqRarams->options.tcpUdpFilter.offset =
29605 pLphbReqParams->params.lphbTcpFilterReq.offset;
29606 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29607 pLphbReqParams->params.lphbTcpFilterReq.length;
29608 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29609 pLphbReqParams->params.lphbTcpFilterReq.filter,
29610 WDI_LPHB_FILTER_LEN);
29611 break;
29612
29613 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29614 halLphbReqRarams->sessionIdx =
29615 pLphbReqParams->params.lphbUdpParamReq.session;
29616 halLphbReqRarams->options.udpParams.timeOutSec =
29617 pLphbReqParams->params.lphbUdpParamReq.timeout;
29618 halLphbReqRarams->options.udpParams.timePeriodSec =
29619 pLphbReqParams->params.lphbUdpParamReq.interval;
29620 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29621 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29622 sizeof(v_U32_t));
29623 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29624 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29625 sizeof(v_U32_t));
29626
29627 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29628 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29629 WDI_MAC_ADDR_LEN);
29630
29631 halLphbReqRarams->options.udpParams.hostPort =
29632 pLphbReqParams->params.lphbUdpParamReq.src_port;
29633 halLphbReqRarams->options.udpParams.destPort =
29634 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29635 break;
29636
29637 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29638 halLphbReqRarams->sessionIdx =
29639 pLphbReqParams->params.lphbUdpFilterReq.session;
29640 halLphbReqRarams->options.tcpUdpFilter.offset =
29641 pLphbReqParams->params.lphbUdpFilterReq.offset;
29642 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29643 pLphbReqParams->params.lphbUdpFilterReq.length;
29644 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29645 pLphbReqParams->params.lphbUdpFilterReq.filter,
29646 WDI_LPHB_FILTER_LEN);
29647 break;
29648
29649 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29650 /* NA */
29651 break;
29652
29653 default:
29654 break;
29655 }
29656
29657 /*-------------------------------------------------------------------------
29658 Send Suspend Request to HAL
29659 -------------------------------------------------------------------------*/
29660 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29661 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29662
29663 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29664 usSendSize, pWDICtx->pfncRspCB,
29665 pWDICtx->pReqStatusUserData,
29666 WDI_LPHB_CFG_RESP);
29667
29668 return wdiStatus;
29669}
29670
29671/**
29672 @brief WDI_LPHBConfReq -
29673 LPHB configuration request API
29674
29675 @param lphbconfParam : configuration parameter
29676 usrData : client context
29677 lphbCfgCb : callback function pointer
29678
29679 @see
29680 @return Success or fail status code
29681*/
29682WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29683 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29684{
29685 WDI_EventInfoType wdiEventData;
29686
29687 /*------------------------------------------------------------------------
29688 Sanity Check
29689 ------------------------------------------------------------------------*/
29690 if (eWLAN_PAL_FALSE == gWDIInitialized)
29691 {
29692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29693 "WDI API call before module is initialized - Fail request");
29694
29695 return WDI_STATUS_E_NOT_ALLOWED;
29696 }
29697
29698 /*------------------------------------------------------------------------
29699 Fill in Event data and post to the Main FSM
29700 ------------------------------------------------------------------------*/
29701 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29702 wdiEventData.pEventData = lphbconfParam;
29703 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29704 wdiEventData.pCBfnc = lphbCfgCb;
29705 wdiEventData.pUserData = usrData;
29706
29707 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29708}
29709#endif /* FEATURE_WLAN_LPHB */
29710
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029711/**
29712 @brief WDI_ProcessIbssPeerInactivityInd
29713 Process peer inactivity indication coming from HAL
29714
29715 @param pWDICtx: pointer to the WLAN DAL context
29716 pEventData: pointer to the event information structure
29717 @see
29718 @return Result of the function call
29719*/
29720WDI_Status
29721WDI_ProcessIbssPeerInactivityInd
29722(
29723 WDI_ControlBlockType* pWDICtx,
29724 WDI_EventInfoType* pEventData
29725)
29726{
29727 WDI_LowLevelIndType wdiInd;
29728 tIbssPeerInactivityIndMsg halIbssIndMsg;
29729
29730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29731
29732 /*-------------------------------------------------------------------------
29733 Sanity check
29734 -------------------------------------------------------------------------*/
29735 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29736 ( NULL == pEventData->pEventData ))
29737 {
29738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29739 "%s: Invalid parameters", __func__);
29740 WDI_ASSERT( 0 );
29741 return WDI_STATUS_E_FAILURE;
29742 }
29743
29744 /*-------------------------------------------------------------------------
29745 Extract indication and send it to UMAC
29746 -------------------------------------------------------------------------*/
29747 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29748 pEventData->pEventData,
29749 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29750
29751 /*Fill in the indication parameters*/
29752 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29753
29754 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29755 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29756
29757 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29758 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29759
29760 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29761 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29762 sizeof(tSirMacAddr));
29763
29764 /*Notify UMAC*/
29765 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29766
29767 return WDI_STATUS_SUCCESS;
29768
29769} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029770
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029771/**
29772*@brief WDI_RateUpdateInd will be called when the upper MAC
29773 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029774
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029775
29776 @param wdiRateUpdateIndParams:
29777
29778
29779 @see
29780 @return Result of the function call
29781*/
29782WDI_Status
29783WDI_RateUpdateInd
29784(
29785 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29786)
29787{
29788 WDI_EventInfoType wdiEventData;
29789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29790
29791 /*------------------------------------------------------------------------
29792 Sanity Check
29793 ------------------------------------------------------------------------*/
29794 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29795 {
29796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29797 "WDI API call before module is initialized - Fail request");
29798
29799 return WDI_STATUS_E_NOT_ALLOWED;
29800 }
29801
29802 /*------------------------------------------------------------------------
29803 Fill in Event data and post to the Main FSM
29804 ------------------------------------------------------------------------*/
29805 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29806 wdiEventData.pEventData = wdiRateUpdateIndParams;
29807 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29808 wdiEventData.pCBfnc = NULL;
29809 wdiEventData.pUserData = NULL;
29810
29811 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29812
29813}/* WDI_RateUpdateInd */
29814
29815/**
29816 @brief Process Rate Update Indication and post it to HAL
29817
29818 @param pWDICtx: pointer to the WLAN DAL context
29819 pEventData: pointer to the event information structure
29820
29821 @see
29822 @return Result of the function call
29823*/
29824WDI_Status
29825WDI_ProcessRateUpdateInd
29826(
29827 WDI_ControlBlockType* pWDICtx,
29828 WDI_EventInfoType* pEventData
29829)
29830{
29831 wpt_uint8* pSendBuffer = NULL;
29832 wpt_uint16 usDataOffset = 0;
29833 wpt_uint16 usSendSize = 0;
29834 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29835 tHalRateUpdateInd *pRateUpdateInd;
29836 WDI_Status wdiStatus;
29837
29838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29839
29840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29841 "%s", __func__);
29842
29843 /*-------------------------------------------------------------------------
29844 Sanity check
29845 -------------------------------------------------------------------------*/
29846 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29847 {
29848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29849 "%s: Invalid parameters", __func__);
29850 WDI_ASSERT(0);
29851 return WDI_STATUS_E_FAILURE;
29852 }
29853 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29854 /*-----------------------------------------------------------------------
29855 Get message buffer
29856 -----------------------------------------------------------------------*/
29857
29858 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29859 WDI_RATE_UPDATE_IND,
29860 sizeof(tHalRateUpdateParams),
29861 &pSendBuffer, &usDataOffset, &usSendSize))||
29862 ( usSendSize < (usDataOffset +
29863 sizeof(tHalRateUpdateParams) )))
29864 {
29865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29866 "Unable to get send buffer in Rate Update Indication %p ",
29867 pEventData);
29868 WDI_ASSERT(0);
29869 return WDI_STATUS_E_FAILURE;
29870 }
29871
29872 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29873
29874 /* Copy the bssid */
29875 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29876 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29877
29878 /* Copy the tx flags */
29879 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29880 pwdiRateUpdateInd->ucastDataRateTxFlag;
29881 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29882 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29883 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29884 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29885 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
29886 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
29887
29888 /* Copy the tx rates */
29889 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
29890 pwdiRateUpdateInd->ucastDataRate;
29891 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
29892 pwdiRateUpdateInd->reliableMcastDataRate;
29893 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
29894 pwdiRateUpdateInd->mcastDataRate24GHz;
29895 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
29896 pwdiRateUpdateInd->mcastDataRate5GHz;
29897
29898 /*-------------------------------------------------------------------------
29899 Send Rate Update Indication to HAL
29900 -------------------------------------------------------------------------*/
29901 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
29902 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
29903
29904 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
29905
29906 return (wdiStatus != WDI_STATUS_SUCCESS) ?
29907 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
29908
29909} /* WDI_ProcessRateUpdateInd */
29910
29911#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053029912/**
29913 @brief Process stop batch indication from WDA
29914
29915 @param pWDICtx: pointer to the WLAN DAL context
29916 pEventData: pointer to the event information structure
29917
29918 @see
29919 @return Result of the function call
29920*/
29921WDI_Status
29922WDI_ProcessStopBatchScanInd
29923(
29924 WDI_ControlBlockType* pWDICtx,
29925 WDI_EventInfoType* pEventData
29926)
29927{
29928 wpt_uint8* pSendBuffer = NULL;
29929 wpt_uint16 usDataOffset = 0;
29930 wpt_uint16 usSendSize = 0;
29931 WDI_Status wdiStatus;
29932 tHalBatchScanStopIndParam *pHalInd = NULL;
29933 WDI_StopBatchScanIndType *pWdiInd = NULL;
29934
29935
29936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29937
29938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29939 "%s", __func__);
29940
29941 /*-------------------------------------------------------------------------
29942 Sanity check
29943 -------------------------------------------------------------------------*/
29944
29945 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29946 {
29947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29948 "%s: Invalid parameters", __func__);
29949 WDI_ASSERT(0);
29950 return WDI_STATUS_E_FAILURE;
29951 }
29952 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
29953 /*-----------------------------------------------------------------------
29954 Get message buffer
29955 -----------------------------------------------------------------------*/
29956
29957 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29958 WDI_STOP_BATCH_SCAN_IND,
29959 sizeof(tHalBatchScanStopIndParam),
29960 &pSendBuffer, &usDataOffset, &usSendSize))||
29961 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
29962 {
29963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29964 "Unable to get send buffer in stop batch scan ind %p ",
29965 pEventData);
29966 WDI_ASSERT(0);
29967 return WDI_STATUS_E_FAILURE;
29968 }
29969
29970 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
29971 pHalInd->param = pWdiInd->param;
29972
29973 pWDICtx->pReqStatusUserData = NULL;
29974 pWDICtx->pfncRspCB = NULL;
29975 /*-------------------------------------------------------------------------
29976 Send Stop batch scan indication to HAL
29977 -------------------------------------------------------------------------*/
29978 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29979 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29980}
29981
29982/**
29983 @brief This API is called to trigger batch scan results from FW
29984
29985 @param pWDICtx: pointer to the WLAN DAL context
29986 pEventData: pointer to the event information structure
29987
29988 @see
29989 @return Result of the function call
29990*/
29991WDI_Status
29992WDI_ProcessTriggerBatchScanResultInd
29993(
29994 WDI_ControlBlockType* pWDICtx,
29995 WDI_EventInfoType* pEventData
29996)
29997{
29998 WDI_Status wdiStatus;
29999 wpt_uint8* pSendBuffer = NULL;
30000 wpt_uint16 usDataOffset = 0;
30001 wpt_uint16 usSendSize = 0;
30002 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30003 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30004
30005
30006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30007
30008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30009 "%s", __func__);
30010
30011 /*-------------------------------------------------------------------------
30012 Sanity check
30013 -------------------------------------------------------------------------*/
30014
30015 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30016 {
30017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30018 "%s: Invalid parameters", __func__);
30019 WDI_ASSERT(0);
30020 return WDI_STATUS_E_FAILURE;
30021 }
30022 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30023 /*-----------------------------------------------------------------------
30024 Get message buffer
30025 -----------------------------------------------------------------------*/
30026
30027 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30028 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30029 sizeof(tHalBatchScanTriggerResultParam),
30030 &pSendBuffer, &usDataOffset, &usSendSize))||
30031 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30032 {
30033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30034 "Unable to get send buffer in stop batch scan ind %p ",
30035 pEventData);
30036 WDI_ASSERT(0);
30037 return WDI_STATUS_E_FAILURE;
30038 }
30039
30040 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30041 pHalInd->param = pWdiInd->param;
30042
30043 pWDICtx->pReqStatusUserData = NULL;
30044 pWDICtx->pfncRspCB = NULL;
30045 /*-------------------------------------------------------------------------
30046 Send trigger batch scan result indication to HAL
30047 -------------------------------------------------------------------------*/
30048 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30049 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30050}
30051
30052
30053/**
30054 @brief Process set batch scan response from FW
30055
30056 @param pWDICtx: pointer to the WLAN DAL context
30057 pEventData: pointer to the event information structure
30058
30059 @see
30060 @return Result of the function call
30061*/
30062WDI_Status
30063WDI_ProcessSetBatchScanRsp
30064(
30065 WDI_ControlBlockType* pWDICtx,
30066 WDI_EventInfoType* pEventData
30067)
30068{
30069 WDI_SetBatchScanCb wdiSetBatchScanCb;
30070 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30071
30072 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30074
30075 /*sanity check*/
30076 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30077 ( NULL == pEventData->pEventData))
30078 {
30079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30080 "%s: Invalid parameters", __func__);
30081 WDI_ASSERT(0);
30082 return WDI_STATUS_E_FAILURE;
30083 }
30084
30085 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30086 if ( NULL == wdiSetBatchScanCb)
30087 {
30088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30089 "%s: call back function is NULL", __func__);
30090 WDI_ASSERT(0);
30091 return WDI_STATUS_E_FAILURE;
30092 }
30093
30094 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30095
30096 if (NULL == pSetBatchScanRsp)
30097 {
30098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030099 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030100 pWDICtx, pEventData, pEventData->pEventData);
30101 WDI_ASSERT(0);
30102 return WDI_STATUS_E_FAILURE;
30103 }
30104
Sunil Duttbd736ed2014-05-26 21:19:41 +053030105 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030106 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30107
30108 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30109
Sunil Duttbd736ed2014-05-26 21:19:41 +053030110 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030111 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30112
30113 wpalMemoryFree(pSetBatchScanRsp);
30114
30115 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030116}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030117
30118/**
30119 @brief Process batch scan result indication from FW
30120
30121 @param pWDICtx: pointer to the WLAN DAL context
30122 pEventData: pointer to the event information structure
30123
30124 @see
30125 @return Result of the function call
30126*/
30127WDI_Status
30128WDI_ProcessBatchScanResultInd
30129(
30130 WDI_ControlBlockType* pWDICtx,
30131 WDI_EventInfoType* pEventData
30132)
30133{
30134 void *pBatchScanResultInd;
30135 WDI_LowLevelIndType wdiInd;
30136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30137
Sunil Duttbd736ed2014-05-26 21:19:41 +053030138 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030139 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30140 ( NULL == pEventData->pEventData))
30141 {
30142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30143 "%s: Invalid parameters", __func__);
30144 WDI_ASSERT(0);
30145 return WDI_STATUS_E_FAILURE;
30146 }
30147
Sunil Duttbd736ed2014-05-26 21:19:41 +053030148 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030149 pBatchScanResultInd = (void *)pEventData->pEventData;
30150
Sunil Duttbd736ed2014-05-26 21:19:41 +053030151 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030152 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30153
30154 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30155
Sunil Duttbd736ed2014-05-26 21:19:41 +053030156 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030157 if (pWDICtx->wdiLowLevelIndCB)
30158 {
30159 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30160 }
30161 else
30162 {
30163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30164 "%s: WDILowLevelIndCb is null", __func__);
30165 WDI_ASSERT(0);
30166 return WDI_STATUS_E_FAILURE;
30167 }
30168
30169 return WDI_STATUS_SUCCESS;
30170} /*End of WDI_ProcessBatchScanResultInd*/
30171
Sunil Duttbd736ed2014-05-26 21:19:41 +053030172#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30173/**
30174 @brief Process Link Layer Statistics Result indication from FW
30175
30176 @param pWDICtx: pointer to the WLAN DAL context
30177 pEventData: pointer to the event information structure
30178
30179 @see
30180 @return Result of the function call
30181*/
30182WDI_Status
30183WDI_ProcessLinkLayerStatsResultsInd
30184(
30185 WDI_ControlBlockType* pWDICtx,
30186 WDI_EventInfoType* pEventData
30187)
30188{
30189 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030190 WDI_LLstatsResultsType *halLLStatsResults;
30191 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030192 WDI_LowLevelIndType wdiInd;
30193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30194
30195 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30196 "%s: Event RESULTS Indication", __func__);
30197
30198 /* sanity check */
30199 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30200 ( NULL == pEventData->pEventData))
30201 {
30202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30203 "%s: Invalid parameters", __func__);
30204 WDI_ASSERT(0);
30205 return WDI_STATUS_E_FAILURE;
30206 }
30207
30208 /* extract response and send it to UMAC */
30209 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30210
30211 /* Fill in the indication parameters */
30212 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30213
Dino Mycled3d50022014-07-07 12:58:25 +053030214 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30215 = pLinkLayerStatsInd;
30216
30217 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30218
30219
30220 /* Need to fill in the MAC address */
30221 if ( WDI_STATUS_SUCCESS !=
30222 WDI_STATableGetStaMacAddr(pWDICtx,
30223 halLLStatsResults->iface_id,
30224 &macAddr))
30225 {
30226 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30227 " ifaceId: %u does not exist in the WDI Station Table",
30228 halLLStatsResults->iface_id);
30229
30230 return WDI_STATUS_E_FAILURE;
30231 }
30232 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30233 macAddr, WDI_MAC_ADDR_LEN);
30234
30235 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30236 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30237 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030238
30239 /* Notify UMAC */
30240 if (pWDICtx->wdiLowLevelIndCB)
30241 {
30242 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30243 }
30244 else
30245 {
30246 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30247 "%s: WDILowLevelIndCb is null", __func__);
30248 WDI_ASSERT(0);
30249 return WDI_STATUS_E_FAILURE;
30250 }
30251
30252 return WDI_STATUS_SUCCESS;
30253} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30254#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30255
Rajeev79dbe4c2013-10-05 11:03:42 +053030256/**
30257 @brief WDI_ProcessSetBatchScanReq -
30258 Set batch scan request to FW
30259
30260 @param pWDICtx : wdi context
30261 pEventData : indication data
30262
30263 @see
30264 @return none
30265*/
30266WDI_Status WDI_ProcessSetBatchScanReq
30267(
30268 WDI_ControlBlockType* pWDICtx,
30269 WDI_EventInfoType* pEventData
30270)
30271{
30272 WDI_SetBatchScanReqType *pWdiReq;
30273 WDI_Status wdiStatus;
30274 wpt_uint8* pSendBuffer = NULL;
30275 wpt_uint16 usDataOffset = 0;
30276 wpt_uint16 usSendSize = 0;
30277 tHalBatchScanSetParams *pHalReq;
30278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30279
30280 /*sanity check*/
30281 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30282 {
30283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30284 "%s: Invalid parameters in set batch scan request", __func__);
30285 WDI_ASSERT(0);
30286 return WDI_STATUS_E_FAILURE;
30287 }
30288
30289
30290 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30291
30292
30293 /*get message buffer*/
30294 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30295 WDI_SET_BATCH_SCAN_REQ,
30296 sizeof(tHalBatchScanSetParams),
30297 &pSendBuffer, &usDataOffset, &usSendSize))||
30298 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30299 {
30300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30301 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30302 WDI_ASSERT(0);
30303 return WDI_STATUS_E_FAILURE;
30304 }
30305
30306 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30307
30308 pHalReq->rtt = pWdiReq->rtt;
30309 pHalReq->rfBand = pWdiReq->rfBand;
30310 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30311 pHalReq->scanInterval = pWdiReq->scanFrequency;
30312 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30313
30314 /*send set batch scan request to fw*/
30315 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30316 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30317
30318 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30319 usSendSize, pWDICtx->pfncRspCB,
30320 pWDICtx->pReqStatusUserData,
30321 WDI_SET_BATCH_SCAN_RESP);
30322
30323 return wdiStatus;
30324}
30325
30326/**
30327 @brief WDI_SetBatchScanReq
30328 This API is called to set batch scan request in FW
30329
30330 @param pBatchScanReqParam : pointer to set batch scan re param
30331 usrData : Client context
30332 setBatchScanRspCb : set batch scan resp callback
30333 @see
30334 @return SUCCESS or FAIL
30335*/
30336WDI_Status WDI_SetBatchScanReq
30337(
30338 void *pBatchScanReqParam,
30339 void *usrData,
30340 WDI_SetBatchScanCb setBatchScanRspCb
30341)
30342{
30343 WDI_EventInfoType wdiEventData;
30344
30345 /*sanity check*/
30346 if (eWLAN_PAL_FALSE == gWDIInitialized)
30347 {
30348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30349 "WDI API call before module is initialized - Fail request");
30350
30351 return WDI_STATUS_E_NOT_ALLOWED;
30352 }
30353
30354 /* fill in event data and post to the main FSM */
30355 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30356 wdiEventData.pEventData = pBatchScanReqParam;
30357 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30358 wdiEventData.pCBfnc = setBatchScanRspCb;
30359 wdiEventData.pUserData = usrData;
30360
30361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30362}
30363
30364/**
30365 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30366
30367 @param None
30368
30369 @see
30370
30371 @return Status of the request
30372*/
30373WDI_Status
30374WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30375{
30376 WDI_EventInfoType wdiEventData;
30377
30378 /*-------------------------------------------------------------------------
30379 Sanity Check
30380 ------------------------------------------------------------------------*/
30381 if (eWLAN_PAL_FALSE == gWDIInitialized)
30382 {
30383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30384 "WDI API call before module is initialized - Fail request!");
30385
30386 return WDI_STATUS_E_NOT_ALLOWED;
30387 }
30388
30389 /*-------------------------------------------------------------------------
30390 Fill in Event data and post to the Main FSM
30391 ------------------------------------------------------------------------*/
30392 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30393 wdiEventData.pEventData = pWdiReq;
30394 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30395 wdiEventData.pCBfnc = NULL;
30396 wdiEventData.pUserData = NULL;
30397
30398 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30399}
30400
30401/**
30402 @brief WDI_TriggerBatchScanResultInd
30403 This API is called to pull batch scan result from FW
30404
30405 @param pWdiReq : pointer to get batch scan ind param
30406 @see
30407 @return SUCCESS or FAIL
30408*/
30409WDI_Status WDI_TriggerBatchScanResultInd
30410(
30411 WDI_TriggerBatchScanResultIndType *pWdiReq
30412)
30413{
30414 WDI_EventInfoType wdiEventData;
30415 /*-------------------------------------------------------------------------
30416 Sanity Check
30417 ------------------------------------------------------------------------*/
30418 if (eWLAN_PAL_FALSE == gWDIInitialized)
30419 {
30420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30421 "WDI API call before module is initialized - Fail request!");
30422
30423 return WDI_STATUS_E_NOT_ALLOWED;
30424 }
30425
30426 /*-------------------------------------------------------------------------
30427 Fill in Event data and post to the Main FSM
30428 ------------------------------------------------------------------------*/
30429 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30430 wdiEventData.pEventData = pWdiReq;
30431 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30432 wdiEventData.pCBfnc = NULL;
30433 wdiEventData.pUserData = NULL;
30434
30435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30436}
Rajeev79dbe4c2013-10-05 11:03:42 +053030437#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030438
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030439/**
30440 @brief Process Update Channel Rsp function (called when a response is
30441 being received over the bus from HAL)
30442
30443 @param pWDICtx: pointer to the WLAN DAL context
30444 pEventData: pointer to the event information structure
30445
30446 @see
30447 @return Result of the function call
30448*/
30449WDI_Status
30450WDI_ProcessUpdateChanRsp
30451(
30452 WDI_ControlBlockType* pWDICtx,
30453 WDI_EventInfoType* pEventData
30454)
30455{
30456 WDI_Status wdiStatus;
30457 eHalStatus halStatus;
30458 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30460
30461 /*-------------------------------------------------------------------------
30462 Sanity check
30463 -------------------------------------------------------------------------*/
30464 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30465 ( NULL == pEventData->pEventData))
30466 {
30467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30468 "%s: Invalid parameters", __func__);
30469 WDI_ASSERT(0);
30470 return WDI_STATUS_E_FAILURE;
30471 }
30472
30473 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30474
30475 /*-------------------------------------------------------------------------
30476 Extract response and send it to UMAC
30477 -------------------------------------------------------------------------*/
30478 halStatus = *((eHalStatus*)pEventData->pEventData);
30479 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30480
30481 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30482
30483 return WDI_STATUS_SUCCESS;
30484}/*WDI_ProcessUpdateChanRsp*/
30485
Leo Chang0b0e45a2013-12-15 15:18:55 -080030486#ifdef FEATURE_WLAN_CH_AVOID
30487/**
30488 @brief v -WDI_ProcessChAvoidInd
30489
30490
30491 @param pWDICtx : wdi context
30492 pEventData : indication data
30493 @see
30494 @return Result of the function call
30495*/
30496WDI_Status
30497WDI_ProcessChAvoidInd
30498(
30499 WDI_ControlBlockType* pWDICtx,
30500 WDI_EventInfoType* pEventData
30501)
30502{
30503 WDI_LowLevelIndType wdiInd;
30504 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30505 wpt_uint16 rangeLoop;
30506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30507
30508 /*-------------------------------------------------------------------------
30509 Sanity check
30510 -------------------------------------------------------------------------*/
30511 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30512 (NULL == pEventData->pEventData))
30513 {
30514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30515 "%s: Invalid parameters", __func__);
30516 WDI_ASSERT(0);
30517 return WDI_STATUS_E_FAILURE;
30518 }
30519
30520 /*-------------------------------------------------------------------------
30521 Extract indication and send it to UMAC
30522 -------------------------------------------------------------------------*/
30523 wpalMemoryCopy(&chAvoidIndicationParam,
30524 pEventData->pEventData,
30525 sizeof(tHalAvoidFreqRangeIndParams));
30526
30527 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30528 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30529 chAvoidIndicationParam.avoidCnt;
30530 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30531 (void *)chAvoidIndicationParam.avoidRange,
30532 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30533 sizeof(WDI_ChAvoidFreqType));
30534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30535 "%s: band count %d", __func__,
30536 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30537 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30538 {
30539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30540 "%s: srart freq %d, end freq %d", __func__,
30541 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30542 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30543 }
30544
30545 /*Notify UMAC*/
30546 if (pWDICtx->wdiLowLevelIndCB)
30547 {
30548 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30549 }
30550
30551 return WDI_STATUS_SUCCESS;
30552}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030553
Leo Chang0b0e45a2013-12-15 15:18:55 -080030554#endif /* FEATURE_WLAN_CH_AVOID */
30555
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030556/**
30557 @brief Process OBSS Start scan result indication
30558
30559 @param pWDICtx: pointer to the WLAN DAL context
30560 pEventData: pointer to the event information structure
30561
30562 @see
30563 @return Result of the function call
30564*/
30565WDI_Status
30566WDI_ProcessHT40OBSSScanInd
30567(
30568 WDI_ControlBlockType* pWDICtx,
30569 WDI_EventInfoType* pEventData
30570)
30571{
30572 wpt_uint8* pSendBuffer = NULL;
30573 wpt_uint16 usDataOffset = 0;
30574 wpt_uint16 usSendSize = 0;
30575 wpt_uint16 usLen = 0;
30576 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30577 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30578 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30579 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30580
30581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30582
30583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30584 "%s", __func__);
30585
30586 /*-------------------------------------------------------------------------
30587 Sanity check
30588 -------------------------------------------------------------------------*/
30589 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30590 {
30591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30592 "%s: Invalid parameters", __func__);
30593 WDI_ASSERT(0);
30594 return WDI_STATUS_E_FAILURE;
30595 }
30596 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30597
30598 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30599 /*-----------------------------------------------------------------------
30600 Get message buffer
30601 -----------------------------------------------------------------------*/
30602
30603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30604 WDI_START_HT40_OBSS_SCAN_IND,
30605 sizeof(tHT40ObssScanIndType),
30606 &pSendBuffer, &usDataOffset, &usSendSize))||
30607 ( usSendSize < (usDataOffset + usLen )))
30608 {
30609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30610 "Unable to get send buffer in HT40 OBSS Start req %p ",
30611 pEventData);
30612 WDI_ASSERT(0);
30613 return WDI_STATUS_E_FAILURE;
30614 }
30615 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30616 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30617 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30618 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30619 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30620 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30621 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30622 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30623 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30624 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30625 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30626 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30627 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30628 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30629 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30630 pHT40ObssScanInd->OBSSScanActivityThreshold =
30631 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30632 pHT40ObssScanInd->selfStaIdx =
30633 pwdiHT40OBSSScanInd->selfStaIdx;
30634 pHT40ObssScanInd->bssIdx =
30635 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053030636 pHT40ObssScanInd->currentOperatingClass =
30637 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030638 pHT40ObssScanInd->fortyMHZIntolerent =
30639 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30640 pHT40ObssScanInd->channelCount =
30641 pwdiHT40OBSSScanInd->channelCount;
30642
30643 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30644 WDI_ROAM_SCAN_MAX_CHANNELS);
30645 pHT40ObssScanInd->ieFieldLen =
30646 pwdiHT40OBSSScanInd->ieFieldLen;
30647
30648 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30649 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30650 pWDICtx->pReqStatusUserData = NULL;
30651 pWDICtx->pfncRspCB = NULL;
30652
30653 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30654 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30655
30656 /*-------------------------------------------------------------------------
30657 Send OBSS Start Indication to HAL
30658 -------------------------------------------------------------------------*/
30659 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30660 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30661
30662} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30663
30664
30665/**
30666 @brief wdi_HT40OBSSScanInd
30667 This API is called to start OBSS scan
30668
30669 @param pWdiReq : pointer to get ind param
30670 @see
30671 @return SUCCESS or FAIL
30672*/
30673WDI_Status WDI_HT40OBSSScanInd
30674(
30675 WDI_HT40ObssScanParamsType *pWdiReq
30676)
30677{
30678 WDI_EventInfoType wdiEventData;
30679
30680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30681 "%s", __func__);
30682 /*-------------------------------------------------------------------------
30683 Sanity Check
30684 ------------------------------------------------------------------------*/
30685 if (eWLAN_PAL_FALSE == gWDIInitialized)
30686 {
30687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30688 "WDI API call before module is initialized - Fail request!");
30689
30690 return WDI_STATUS_E_NOT_ALLOWED;
30691 }
30692
30693 /*-------------------------------------------------------------------------
30694 Fill in Event data and post to the Main FSM
30695 ------------------------------------------------------------------------*/
30696 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30697 wdiEventData.pEventData = pWdiReq;
30698 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30699 wdiEventData.pCBfnc = NULL;
30700 wdiEventData.pUserData = NULL;
30701
30702
30703 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30704}
30705
30706/**
30707 @brief Process OBSS Stop scan result
30708
30709 @param pWDICtx: pointer to the WLAN DAL context
30710 pEventData: pointer to the event information structure
30711
30712 @see
30713 @return Result of the function call
30714*/
30715WDI_Status
30716WDI_ProcessHT40OBSSStopScanInd
30717(
30718 WDI_ControlBlockType* pWDICtx,
30719 WDI_EventInfoType* pEventData
30720)
30721{
30722 wpt_uint8* pSendBuffer = NULL;
30723 wpt_uint16 usDataOffset = 0;
30724 wpt_uint16 usSendSize = 0;
30725 wpt_uint16 usLen = 0;
30726 wpt_uint8 *wdiBssIdx = 0;
30727 tANI_U8 *bssIdx = 0;
30728 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30729
30730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30731
30732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30733 "%s", __func__);
30734
30735 /*-------------------------------------------------------------------------
30736 Sanity check
30737 -------------------------------------------------------------------------*/
30738 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30739 {
30740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30741 "%s: Invalid parameters", __func__);
30742 WDI_ASSERT(0);
30743 return WDI_STATUS_E_FAILURE;
30744 }
30745 bssIdx = (wpt_uint8*)pEventData->pEventData;
30746 /*-----------------------------------------------------------------------
30747 Get message buffer
30748 -----------------------------------------------------------------------*/
30749
30750 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30751 WDI_STOP_HT40_OBSS_SCAN_IND,
30752 sizeof(tANI_U8),
30753 &pSendBuffer, &usDataOffset, &usSendSize))||
30754 ( usSendSize < (usDataOffset + usLen )))
30755 {
30756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30757 "Unable to get send buffer in HT40 OBSS Start req %p ",
30758 pEventData);
30759 WDI_ASSERT(0);
30760 return WDI_STATUS_E_FAILURE;
30761 }
30762
30763 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30764 bssIdx = wdiBssIdx;
30765
30766 pWDICtx->pReqStatusUserData = NULL;
30767 pWDICtx->pfncRspCB = NULL;
30768
30769 /*-------------------------------------------------------------------------
30770 Send DHCP Start Indication to HAL
30771 -------------------------------------------------------------------------*/
30772 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30773 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30774} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30775
30776/**
30777 @brief WDI_HT40OBSSStopScanInd
30778 This API is called to start OBSS scan
30779 @param pWdiReq : pointer to get ind param
30780 @see
30781 @return SUCCESS or FAIL
30782*/
30783WDI_Status WDI_HT40OBSSStopScanInd
30784(
30785 wpt_uint8 bssIdx
30786)
30787{
30788 WDI_EventInfoType wdiEventData;
30789
30790 /*-------------------------------------------------------------------------
30791 Sanity Check
30792 ------------------------------------------------------------------------*/
30793 if (eWLAN_PAL_FALSE == gWDIInitialized)
30794 {
30795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30796 "WDI API call before module is initialized - Fail request!");
30797
30798 return WDI_STATUS_E_NOT_ALLOWED;
30799 }
30800
30801 /*-------------------------------------------------------------------------
30802 Fill in Event data and post to the Main FSM
30803 ------------------------------------------------------------------------*/
30804 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30805 wdiEventData.pEventData = &bssIdx;
30806 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30807 wdiEventData.pCBfnc = NULL;
30808 wdiEventData.pUserData = NULL;
30809
30810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30811}
30812
c_hpothu86041002014-04-14 19:06:51 +053030813WDI_Status
30814WDI_printRegInfo
30815(
30816 WDI_ControlBlockType* pWDICtx,
30817 WDI_EventInfoType* pEventData
30818)
30819{
30820 tHalRegDebugInfo *pRegTable;
30821 tHalRegDebugInfoParams *pRegParams;
30822 uint32 cnt=0;
30823
30824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30825 "%s: ", __func__);
30826 /*-------------------------------------------------------------------------
30827 Sanity check
30828 -------------------------------------------------------------------------*/
30829 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30830 ( NULL == pEventData->pEventData))
30831 {
30832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30833 "%s: Invalid parameters", __func__);
30834 WDI_ASSERT(0);
30835 return WDI_STATUS_E_FAILURE;
30836 }
30837
30838 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30839
30840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30841 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30842 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30843
30844 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30845
30846 if (pRegParams->regCount <= 0)
30847 {
30848 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30849 "%s incorrect parameters passed", __func__);
30850 return WDI_STATUS_E_FAILURE;
30851 }
30852
30853 while(pRegParams->regCount--)
30854 {
30855 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30856 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30857 cnt++;
30858 }
30859
30860 return WDI_STATUS_SUCCESS;
30861}
c_hpothu92367912014-05-01 15:18:17 +053030862
30863/*
Abhishek Singh66c16762014-08-14 19:13:19 +053030864 * FUNCTION: WDI_delBaInd
30865 * send the delBA to peer.
30866 */
30867
30868WDI_Status
30869WDI_delBaInd
30870(
30871 WDI_ControlBlockType* pWDICtx,
30872 WDI_EventInfoType* pEventData
30873
30874)
30875{
30876 tHalWlanDelBaIndMsg halDelBaInd;
30877 WDI_LowLevelIndType wdiInd;
30878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30879
30880 /*-------------------------------------------------------------------------
30881 Sanity check
30882 -------------------------------------------------------------------------*/
30883 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30884 ( NULL == pEventData->pEventData))
30885 {
30886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30887 "%s: Invalid parameters", __func__);
30888 WDI_ASSERT(0);
30889 return WDI_STATUS_E_FAILURE;
30890 }
30891
30892 /*-------------------------------------------------------------------------
30893 Extract indication and send it to UMAC
30894 -------------------------------------------------------------------------*/
30895
30896 /* Parameters need to be unpacked according to HAL struct*/
30897 wpalMemoryCopy( &halDelBaInd,
30898 pEventData->pEventData,
30899 sizeof(halDelBaInd));
30900
30901 /*Fill in the indication parameters*/
30902 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
30903
30904 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
30905 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
30906 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
30907
30908 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
30909 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
30910 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
30911
30912 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
30913 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
30914 if ( pWDICtx->wdiLowLevelIndCB )
30915 {
30916 /*Notify UMAC*/
30917 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30918 }
30919
30920 return WDI_STATUS_SUCCESS;
30921
30922
30923}
30924
30925/*
c_hpothu92367912014-05-01 15:18:17 +053030926 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
30927 * send the response to PE with beacon miss count
30928 * received from WDI.
30929 */
30930WDI_Status
30931WDI_ProcessGetBcnMissRateRsp
30932(
30933 WDI_ControlBlockType* pWDICtx,
30934 WDI_EventInfoType* pEventData
30935)
30936{
30937 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
30938 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
30939
30940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30941 "In %s",__func__);
30942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30943
30944 /*-------------------------------------------------------------------------
30945 Sanity check
30946 -------------------------------------------------------------------------*/
30947 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30948 ( NULL == pEventData->pEventData))
30949 {
30950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30951 "%s: Invalid parameters", __func__);
30952 WDI_ASSERT(0);
30953 return WDI_STATUS_E_FAILURE;
30954 }
30955
30956 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
30957 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
30958
30959 /*Notify UMAC*/
30960 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
30961 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
30962 return WDI_STATUS_SUCCESS;
30963}
30964
30965/*
30966 * FUNCTION: WDI_ProcessGetBcnMissRateReq
30967 * Request to WDI to get missed beacon rate.
30968 */
30969WDI_Status
30970WDI_ProcessGetBcnMissRateReq
30971(
30972 WDI_ControlBlockType* pWDICtx,
30973 WDI_EventInfoType* pEventData
30974)
30975{
30976 wpt_uint8* pSendBuffer = NULL;
30977 wpt_uint16 usDataOffset = 0;
30978 wpt_uint16 usSendSize = 0;
30979 wpt_uint8 ucCurrentBSSSesIdx = 0;
30980 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053030981 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
30982 tHalBcnMissRateReqParams halBcnMissRateReq;
30983
30984/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30985
30986 /*-------------------------------------------------------------------------
30987 Sanity check
30988 -------------------------------------------------------------------------*/
30989 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
30990 ( NULL == pEventData->pCBfnc ) )
30991 {
30992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30993 "%s: Invalid parameters", __func__);
30994 WDI_ASSERT(0);
30995 return WDI_STATUS_E_FAILURE;
30996 }
30997
30998 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
30999
31000 wpalMutexAcquire(&pWDICtx->wptMutex);
31001
31002 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31003 pEventData->pEventData, &pBSSSes);
31004 if ( NULL == pBSSSes )
31005 {
31006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31007 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031008 MAC_ADDRESS_STR, __func__,
31009 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031010 wpalMutexRelease(&pWDICtx->wptMutex);
31011 return WDI_STATUS_E_NOT_ALLOWED;
31012 }
31013 wpalMutexRelease(&pWDICtx->wptMutex);
31014
31015 /*-----------------------------------------------------------------------
31016 Get message buffer
31017 -----------------------------------------------------------------------*/
31018 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31019 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31020 sizeof(tHalBcnMissRateReqParams),
31021 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31022 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31023 {
31024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31025 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31026 pEventData);
31027 WDI_ASSERT(0);
31028 return WDI_STATUS_E_FAILURE;
31029 }
31030
31031 pWDICtx->wdiReqStatusCB = NULL;
31032 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31033
31034 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31035
31036 wpalMemoryCopy( pSendBuffer+usDataOffset,
31037 &halBcnMissRateReq,
31038 sizeof(tHalBcnMissRateReqParams));
31039 /*-------------------------------------------------------------------------
31040 Send Get STA Request to HAL
31041 -------------------------------------------------------------------------*/
31042 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31043 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31044}
31045
31046/**
31047 @brief WDI_GetBcnMissRate
31048
31049 @param pUserData: user data will be passed back with the
31050 callback
31051 WDI_GetBcnMissRateCb: callback for passing back the response
31052 of the get stats operation received from the device
31053 bssid: bssid, to send bssIdx to FW
31054
31055 @return SUCCESS or FAIL
31056*/
31057WDI_Status WDI_GetBcnMissRate( void *pUserData,
31058 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31059 tANI_U8 *bssid )
31060{
31061 WDI_EventInfoType wdiEventData;
31062
31063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31064
31065 /*------------------------------------------------------------------------
31066 Sanity Check
31067 ------------------------------------------------------------------------*/
31068 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31069 {
31070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31071 "WDI API call before module is initialized - Fail request");
31072
31073 return WDI_STATUS_E_NOT_ALLOWED;
31074 }
31075
31076 /*------------------------------------------------------------------------
31077 Fill in Event data and post to the Main FSM
31078 ------------------------------------------------------------------------*/
31079 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31080 wdiEventData.pEventData = bssid;
31081 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31082 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31083 wdiEventData.pUserData = pUserData;
31084
31085 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31086}
Sunil Duttbd736ed2014-05-26 21:19:41 +053031087#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31088
31089/**
31090 @brief WDI_LLStatsSetReq
31091 This API is called to set link layer stats request in FW
31092
31093 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31094 wdiLLStatsSetRspCb : set link layer stats resp callback
31095 usrData : Client context
31096 @see
31097 @return SUCCESS or FAIL
31098*/
31099WDI_Status
31100WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31101 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31102 void* pUserData)
31103{
31104 WDI_EventInfoType wdiEventData;
31105
31106 /*------------------------------------------------------------------------
31107 Sanity Check
31108 ------------------------------------------------------------------------*/
31109 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31110 {
31111 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31112 "WDI API call before module is initialized - Fail request");
31113
31114 return WDI_STATUS_E_NOT_ALLOWED;
31115 }
31116
31117 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31118 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31119 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31120 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31121 wdiEventData.pUserData = pUserData;
31122
31123 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31124}
31125
31126/**
31127 @brief WDI_ProcessLLStatsSetReq -
31128 Set Link Layer Stats request to FW
31129
31130 @param pWDICtx : wdi context
31131 pEventData : indication data
31132
31133 @see
31134 @return none
31135*/
31136WDI_Status
31137WDI_ProcessLLStatsSetReq
31138(
31139 WDI_ControlBlockType* pWDICtx,
31140 WDI_EventInfoType* pEventData
31141)
31142{
31143 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31144 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31145 wpt_uint8* pSendBuffer = NULL;
31146 wpt_uint16 usSendSize = 0;
31147 wpt_uint16 usDataOffset = 0;
31148 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31149
31150 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31151 ( NULL == pEventData->pCBfnc ))
31152 {
31153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31154 "%s: Invalid parameters", __func__);
31155 WDI_ASSERT(0);
31156 return WDI_STATUS_E_FAILURE;
31157 }
31158
31159 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31160 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31161
31162 /*-----------------------------------------------------------------------
31163 Get message buffer
31164 ! TO DO : proper conversion into the HAL Message Request Format
31165 -----------------------------------------------------------------------*/
31166 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31167 pWDICtx,
31168 WDI_LL_STATS_SET_REQ,
31169 sizeof(tHalMacLlSetStatsReqParams),
31170 &pSendBuffer, &usDataOffset,
31171 &usSendSize))||
31172 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31173 {
31174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31175 "Unable to get send buffer in %s %p %p %p", __func__,
31176 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31177 WDI_ASSERT(0);
31178 return WDI_STATUS_E_FAILURE;
31179 }
31180
31181
Dino Mycled3d50022014-07-07 12:58:25 +053031182 /* Need to fill in the self STA Index */
31183 if ( WDI_STATUS_SUCCESS !=
31184 WDI_STATableFindStaidByAddr(pWDICtx,
31185 pwdiLLStatsSetReqParams->macAddr,
31186 &halLLStatsSetParams.sta_id))
31187 {
31188 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31189 MAC_ADDRESS_STR
31190 ": This station does not exist in the WDI Station Table",
31191 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31192
31193 wpalMemoryFree(pSendBuffer);
31194 return WDI_STATUS_E_FAILURE;
31195 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031196
31197 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031198 halLLStatsSetParams.mpdu_size_threshold =
31199 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31200 halLLStatsSetParams.aggressive_statistics_gathering =
31201 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31202
31203 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31204 " halLLStatsSetParams.req_id = %u",
31205 halLLStatsSetParams.req_id);
31206 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31207 " halLLStatsSetParams.sta_id = %u",
31208 halLLStatsSetParams.sta_id);
31209 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31210 " halLLStatsSetParams.mpdu_size_threshold = %u",
31211 halLLStatsSetParams.mpdu_size_threshold);
31212 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31213 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31214 halLLStatsSetParams.aggressive_statistics_gathering);
31215
31216 wpalMemoryCopy(pSendBuffer+usDataOffset,
31217 &halLLStatsSetParams,
31218 sizeof(halLLStatsSetParams));
31219
31220 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31221
31222 /*-------------------------------------------------------------------------
31223 Send Clear Link Layer Stats Request to HAL
31224 -------------------------------------------------------------------------*/
31225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31226 wdiLLStatsSetCb, pEventData->pUserData,
31227 WDI_LL_STATS_SET_RSP);
31228}
31229
31230/**
31231 @brief WDI_LLStatsGetReq
31232 This API is called to get link layer stats request in FW
31233
31234 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31235 wdiLLStatsGetRspCb : get link layer stats resp callback
31236 usrData : Client context
31237 @see
31238 @return SUCCESS or FAIL
31239*/
31240WDI_Status
31241WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31242 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31243 void* pUserData)
31244{
31245 WDI_EventInfoType wdiEventData;
31246
31247 /*------------------------------------------------------------------------
31248 Sanity Check
31249 ------------------------------------------------------------------------*/
31250 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31251 {
31252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31253 "WDI API call before module is initialized - Fail request");
31254
31255 return WDI_STATUS_E_NOT_ALLOWED;
31256 }
31257
31258 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31259 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31260 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31261 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31262 wdiEventData.pUserData = pUserData;
31263
31264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31265}
31266
31267/**
31268 @brief WDI_ProcessLLStatsGetReq -
31269 Get Link Layer Stats request to FW
31270
31271 @param pWDICtx : wdi context
31272 pEventData : indication data
31273
31274 @see
31275 @return none
31276*/
31277WDI_Status
31278WDI_ProcessLLStatsGetReq
31279(
31280 WDI_ControlBlockType* pWDICtx,
31281 WDI_EventInfoType* pEventData
31282)
31283{
31284 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31285 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31286 wpt_uint8* pSendBuffer = NULL;
31287 wpt_uint16 usSendSize = 0;
31288 wpt_uint16 usDataOffset = 0;
31289 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31290
31291 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31292 ( NULL == pEventData->pCBfnc ))
31293 {
31294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31295 "%s: Invalid parameters", __func__);
31296 WDI_ASSERT(0);
31297 return WDI_STATUS_E_FAILURE;
31298 }
31299
31300 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31301 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31302
31303 /*-----------------------------------------------------------------------
31304 Get message buffer
31305 ! TO DO : proper conversion into the HAL Message Request Format
31306 -----------------------------------------------------------------------*/
31307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31308 pWDICtx,
31309 WDI_LL_STATS_GET_REQ,
31310 sizeof(tHalMacLlGetStatsReqParams),
31311 &pSendBuffer, &usDataOffset,
31312 &usSendSize))||
31313 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31314 {
31315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31316 "Unable to get send buffer in %s %p %p %p", __func__,
31317 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31318 WDI_ASSERT(0);
31319 return WDI_STATUS_E_FAILURE;
31320 }
Dino Mycled3d50022014-07-07 12:58:25 +053031321 /* Need to fill in the self STA Index */
31322 if ( WDI_STATUS_SUCCESS !=
31323 WDI_STATableFindStaidByAddr(pWDICtx,
31324 pwdiLLStatsGetReqParams->macAddr,
31325 &halLLStatsGetParams.sta_id))
31326 {
31327 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31328 MAC_ADDRESS_STR
31329 ": This station does not exist in the WDI Station Table",
31330 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31331
31332 wpalMemoryFree(pSendBuffer);
31333 return WDI_STATUS_E_FAILURE;
31334 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031335
31336 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031337 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31338
31339 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31340 " halLLStatsGetParams.req_id = %u",
31341 halLLStatsGetParams.req_id);
31342 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31343 " halLLStatsGetParams.staId = %u",
31344 halLLStatsGetParams.sta_id);
31345 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31346 " halLLStatsGetParams.Mask = %u",
31347 halLLStatsGetParams.param_id_mask);
31348
31349 wpalMemoryCopy(pSendBuffer+usDataOffset,
31350 &halLLStatsGetParams,
31351 sizeof(halLLStatsGetParams));
31352
31353 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31354
31355 /*-------------------------------------------------------------------------
31356 Send Clear Link Layer Stats Request to HAL
31357 -------------------------------------------------------------------------*/
31358 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31359 wdiLLStatsGetCb, pEventData->pUserData,
31360 WDI_LL_STATS_GET_RSP);
31361}
31362
31363/**
31364 @brief WDI_LLStatsClearReq
31365 This API is called to clear link layer stats request in FW
31366
31367 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31368 wdiLLStatsSetRspCb : clear link layer stats resp callback
31369 usrData : Client context
31370 @see
31371 @return SUCCESS or FAIL
31372*/
31373WDI_Status
31374WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31375 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31376 void* pUserData)
31377{
31378 WDI_EventInfoType wdiEventData;
31379
31380 /*------------------------------------------------------------------------
31381 Sanity Check
31382 ------------------------------------------------------------------------*/
31383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31384 {
31385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31386 "WDI API call before module is initialized - Fail request");
31387
31388 return WDI_STATUS_E_NOT_ALLOWED;
31389 }
31390
31391 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31392 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31393 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31394 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31395 wdiEventData.pUserData = pUserData;
31396
31397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31398 "%s:%d Enter", __func__, __LINE__);
31399
31400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31401}
31402
31403/**
31404 @brief WDI_ProcessLLStatsClearReq -
31405 Clear Link Layer Stats request to FW
31406
31407 @param pWDICtx : wdi context
31408 pEventData : indication data
31409
31410 @see
31411 @return none
31412*/
31413WDI_Status
31414WDI_ProcessLLStatsClearReq
31415(
31416 WDI_ControlBlockType* pWDICtx,
31417 WDI_EventInfoType* pEventData
31418)
31419{
31420 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31421 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31422 wpt_uint8* pSendBuffer = NULL;
31423 wpt_uint16 usSendSize = 0;
31424 wpt_uint16 usDataOffset = 0;
31425 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31426
31427 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31428 ( NULL == pEventData->pCBfnc ))
31429 {
31430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31431 "%s: Invalid parameters", __func__);
31432 WDI_ASSERT(0);
31433 return WDI_STATUS_E_FAILURE;
31434 }
31435
31436 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31437 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31438
31439 /*-----------------------------------------------------------------------
31440 Get message buffer
31441 ! TO DO : proper conversion into the HAL Message Request Format
31442 -----------------------------------------------------------------------*/
31443 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31444 pWDICtx,
31445 WDI_LL_STATS_CLEAR_REQ,
31446 sizeof(tHalMacLlClearStatsReqParams),
31447 &pSendBuffer, &usDataOffset,
31448 &usSendSize))||
31449 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31450 {
31451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31452 "Unable to get send buffer in %s %p %p %p", __func__,
31453 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31454 WDI_ASSERT(0);
31455 return WDI_STATUS_E_FAILURE;
31456 }
Dino Mycled3d50022014-07-07 12:58:25 +053031457 /* Need to fill in the self STA Index */
31458 if ( WDI_STATUS_SUCCESS !=
31459 WDI_STATableFindStaidByAddr(pWDICtx,
31460 pwdiLLStatsClearReqParams->macAddr,
31461 &halLLStatsClearParams.sta_id))
31462 {
31463 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31464 MAC_ADDRESS_STR
31465 ": This station does not exist in the WDI Station Table",
31466 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
31467
31468 wpalMemoryFree(pSendBuffer);
31469 return WDI_STATUS_E_FAILURE;
31470 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031471
31472 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031473 halLLStatsClearParams.stats_clear_req_mask =
31474 pwdiLLStatsClearReqParams->statsClearReqMask;
31475 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31476
31477 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31478 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31479 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31480 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31481 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31482 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31483 halLLStatsClearParams.stats_clear_req_mask);
31484 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31485 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31486
31487 wpalMemoryCopy(pSendBuffer+usDataOffset,
31488 &halLLStatsClearParams,
31489 sizeof(halLLStatsClearParams));
31490
31491 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31492
31493 /*-------------------------------------------------------------------------
31494 Send Clear Link Layer Stats Request to HAL
31495 -------------------------------------------------------------------------*/
31496 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31497 wdiLLStatsClearCb, pEventData->pUserData,
31498 WDI_LL_STATS_CLEAR_RSP);
31499}
31500#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031501
31502#ifdef WLAN_FEATURE_EXTSCAN
31503
31504/**
31505 @brief Process EXTSCAN BUffer full indication from FW
31506
31507 @param pWDICtx: pointer to the WLAN DAL context
31508 pEventData: pointer to the event information structure
31509
31510 @see
31511 @return Result of the function call
31512*/
31513WDI_Status
31514WDI_ProcessEXTScanProgressInd
31515(
31516 WDI_ControlBlockType* pWDICtx,
31517 WDI_EventInfoType* pEventData
31518)
31519{
31520 WDI_LowLevelIndType wdiInd;
31521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31522
31523 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31524 "%s: ", __func__);
31525
31526 /* sanity check */
31527 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31528 ( NULL == pEventData->pEventData))
31529 {
31530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31531 "%s: Invalid parameters", __func__);
31532 WDI_ASSERT(0);
31533 return WDI_STATUS_E_FAILURE;
31534 }
31535
31536 /* Fill in the indication parameters */
31537 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31538
31539 /* extract response and send it to UMAC */
31540 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31541
31542 /* Notify UMAC */
31543 if (pWDICtx->wdiLowLevelIndCB)
31544 {
31545 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31546 }
31547 else
31548 {
Dino Mycled3d50022014-07-07 12:58:25 +053031549 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053031550 "%s: WDILowLevelIndCb is null", __func__);
31551 WDI_ASSERT(0);
31552 return WDI_STATUS_E_FAILURE;
31553 }
31554 return WDI_STATUS_SUCCESS;
31555
31556} /* End of WDI_ProcessEXTScanProgressInd */
31557
31558
31559/**
31560 @brief Process EXTScan Scan Available indication from FW
31561
31562 @param pWDICtx: pointer to the WLAN DAL context
31563 pEventData: pointer to the event information structure
31564
31565 @see
31566 @return Result of the function call
31567*/
31568WDI_Status
31569WDI_ProcessEXTScanScanAvailableInd
31570(
31571 WDI_ControlBlockType* pWDICtx,
31572 WDI_EventInfoType* pEventData
31573)
31574{
31575 WDI_LowLevelIndType wdiInd;
31576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31577
31578 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31579 "%s: ", __func__);
31580
31581 /* sanity check */
31582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31583 ( NULL == pEventData->pEventData))
31584 {
31585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31586 "%s: Invalid parameters", __func__);
31587 WDI_ASSERT(0);
31588 return WDI_STATUS_E_FAILURE;
31589 }
31590
31591
31592
31593 /* Fill in the indication parameters */
31594 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
31595
31596 /* extract response and send it to UMAC */
31597 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31598
31599 /* Notify UMAC */
31600 if (pWDICtx->wdiLowLevelIndCB)
31601 {
31602 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31603 }
31604 else
31605 {
31606 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31607 "%s: WDILowLevelIndCb is null", __func__);
31608 WDI_ASSERT(0);
31609 return WDI_STATUS_E_FAILURE;
31610 }
31611 return WDI_STATUS_SUCCESS;
31612} /* End of WDI_ProcessEXTScanScanDoneInd */
31613
31614/**
31615 @brief Process EXTScan Result Indication indication from FW
31616
31617 @param pWDICtx: pointer to the WLAN DAL context
31618 pEventData: pointer to the event information structure
31619
31620 @see
31621 @return Result of the function call
31622*/
31623WDI_Status
31624WDI_ProcessEXTScanResultInd
31625(
31626 WDI_ControlBlockType* pWDICtx,
31627 WDI_EventInfoType* pEventData
31628)
31629{
31630 WDI_LowLevelIndType wdiInd;
31631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31632
31633 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31634 "%s: ", __func__);
31635
31636 /* sanity check */
31637 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31638 ( NULL == pEventData->pEventData))
31639 {
31640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31641 "%s: Invalid parameters", __func__);
31642 WDI_ASSERT(0);
31643 return WDI_STATUS_E_FAILURE;
31644 }
31645
31646 /* Fill in the indication parameters */
31647 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
31648
31649 /* extract response and send it to UMAC */
31650 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31651
31652 /* Notify UMAC */
31653 if (pWDICtx->wdiLowLevelIndCB)
31654 {
31655 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31656 }
31657 else
31658 {
31659 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31660 "%s: WDILowLevelIndCb is null", __func__);
31661 WDI_ASSERT(0);
31662 return WDI_STATUS_E_FAILURE;
31663 }
31664 return WDI_STATUS_SUCCESS;
31665} /* End of WDI_ProcessEXTScanResultInd */
31666
31667/**
31668 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
31669
31670 @param pWDICtx: pointer to the WLAN DAL context
31671 pEventData: pointer to the event information structure
31672
31673 @see
31674 @return Result of the function call
31675*/
31676WDI_Status
31677WDI_ProcessEXTScanBssidHotListResultInd
31678(
31679 WDI_ControlBlockType* pWDICtx,
31680 WDI_EventInfoType* pEventData
31681)
31682{
31683 WDI_LowLevelIndType wdiInd;
31684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31685
31686 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31687 "%s: ", __func__);
31688
31689 /* sanity check */
31690 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31691 ( NULL == pEventData->pEventData))
31692 {
31693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31694 "%s: Invalid parameters", __func__);
31695 WDI_ASSERT(0);
31696 return WDI_STATUS_E_FAILURE;
31697 }
31698
31699 /* Fill in the indication parameters */
31700 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
31701
31702 /* extract response and send it to UMAC */
31703 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31704
31705 /* Notify UMAC */
31706 if (pWDICtx->wdiLowLevelIndCB)
31707 {
31708 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31709 }
31710 else
31711 {
31712 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31713 "%s: WDILowLevelIndCb is null", __func__);
31714 WDI_ASSERT(0);
31715 return WDI_STATUS_E_FAILURE;
31716 }
31717 return WDI_STATUS_SUCCESS;
31718} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
31719
31720/**
31721 @brief Process EXTScan Significant RSSI Result Indication indication from FW
31722
31723 @param pWDICtx: pointer to the WLAN DAL context
31724 pEventData: pointer to the event information structure
31725
31726 @see
31727 @return Result of the function call
31728*/
31729WDI_Status
31730WDI_ProcessEXTScanSignfRssiResultInd
31731(
31732 WDI_ControlBlockType* pWDICtx,
31733 WDI_EventInfoType* pEventData
31734)
31735{
31736 WDI_LowLevelIndType wdiInd;
31737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31738
31739 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31740 "%s: ", __func__);
31741
31742 /* sanity check */
31743 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31744 ( NULL == pEventData->pEventData))
31745 {
31746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31747 "%s: Invalid parameters", __func__);
31748 WDI_ASSERT(0);
31749 return WDI_STATUS_E_FAILURE;
31750 }
31751
31752 /* Fill in the indication parameters */
31753 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
31754
31755 /* extract response and send it to UMAC */
31756 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31757
31758 /* Notify UMAC */
31759 if (pWDICtx->wdiLowLevelIndCB)
31760 {
31761 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31762 }
31763 else
31764 {
31765 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31766 "%s: WDILowLevelIndCb is null", __func__);
31767 WDI_ASSERT(0);
31768 return WDI_STATUS_E_FAILURE;
31769 }
31770 return WDI_STATUS_SUCCESS;
31771} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
31772
31773/**
31774 @brief WDI_EXTScanGetCapabilitiesReq
31775
31776 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
31777 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
31778 of the Req operation received from the device
31779 pUserData: user data will be passed back with the callback
31780
31781 @return SUCCESS or FAIL
31782*/
31783WDI_Status
31784WDI_EXTScanGetCapabilitiesReq(
31785 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
31786 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
31787 void* pUserData)
31788{
31789 WDI_EventInfoType wdiEventData;
31790
31791 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31792 "%s: %d ",__func__, __LINE__);
31793 /*------------------------------------------------------------------------
31794 Sanity Check
31795 ------------------------------------------------------------------------*/
31796 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31797 {
31798 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31799 "WDI API call before module is initialized - Fail request");
31800
31801 return WDI_STATUS_E_NOT_ALLOWED;
31802 }
31803
31804 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
31805 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
31806 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
31807 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
31808 wdiEventData.pUserData = pUserData;
31809
31810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31811}
31812
31813/**
31814 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
31815 Extended Scan Get Capability request to FW
31816
31817 @param pWDICtx : wdi context
31818 pEventData : indication data
31819
31820 @see
31821 @return none
31822*/
31823WDI_Status
31824WDI_ProcessEXTScanGetCapabilitiesReq
31825(
31826 WDI_ControlBlockType* pWDICtx,
31827 WDI_EventInfoType* pEventData
31828)
31829{
31830 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
31831 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
31832 wpt_uint8* pSendBuffer = NULL;
31833 wpt_uint16 usSendSize = 0;
31834 wpt_uint16 usDataOffset = 0;
31835 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
31836
31837 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31838 "%s: %d Enter",__func__, __LINE__);
31839
31840 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31841 ( NULL == pEventData->pCBfnc ))
31842 {
31843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31844 "%s: Invalid parameters", __func__);
31845 WDI_ASSERT(0);
31846 return WDI_STATUS_E_FAILURE;
31847 }
31848
31849 pwdiEXTScanGetCapabilitiesReqParams =
31850 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
31851 wdiEXTScanGetCapabilitiesRspCb =
31852 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
31853
31854 /*-----------------------------------------------------------------------
31855 Get message buffer
31856 ! TO DO : proper conversion into the HAL Message Request Format
31857 -----------------------------------------------------------------------*/
31858 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31859 pWDICtx,
31860 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
31861 sizeof(halEXTScanGetCapReqParams),
31862 &pSendBuffer, &usDataOffset,
31863 &usSendSize))||
31864 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
31865 {
31866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31867 "Unable to get send buffer in %s %p %p %p", __func__,
31868 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
31869 wdiEXTScanGetCapabilitiesRspCb);
31870 WDI_ASSERT(0);
31871 return WDI_STATUS_E_FAILURE;
31872 }
31873
31874 halEXTScanGetCapReqParams.requestId =
31875 pwdiEXTScanGetCapabilitiesReqParams->requestId;
31876 halEXTScanGetCapReqParams.sessionId =
31877 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
31878
31879 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31880 " requestId %u "
31881 " sessionId %u ",
31882 halEXTScanGetCapReqParams.requestId,
31883 halEXTScanGetCapReqParams.sessionId);
31884
31885 wpalMemoryCopy(pSendBuffer+usDataOffset,
31886 &halEXTScanGetCapReqParams,
31887 sizeof(halEXTScanGetCapReqParams));
31888
31889 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31890
31891
31892 /*-------------------------------------------------------------------------
31893 Send EXTScan Stop Request to HAL
31894 -------------------------------------------------------------------------*/
31895 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31896 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
31897 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
31898}
31899
31900/**
31901 @brief WDI_EXTScanGetCachedResultsReq
31902
31903 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
31904 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
31905 of the Req operation received from the device
31906 pUserData: user data will be passed back with the callback
31907
31908 @return SUCCESS or FAIL
31909*/
31910
31911WDI_Status
31912WDI_EXTScanGetCachedResultsReq(
31913 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
31914 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
31915 void* pUserData)
31916{
31917 WDI_EventInfoType wdiEventData;
31918
31919 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31920 "%s: %d Enter",__func__, __LINE__);
31921 /*------------------------------------------------------------------------
31922 Sanity Check
31923 ------------------------------------------------------------------------*/
31924 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31925 {
31926 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31927 "WDI API call before module is initialized - Fail request");
31928
31929 return WDI_STATUS_E_NOT_ALLOWED;
31930 }
31931
31932 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
31933 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
31934 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
31935 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
31936 wdiEventData.pUserData = pUserData;
31937
31938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31939}
31940
31941/**
31942 @brief WDI_ProcessEXTScanGetCachedResultsReq -
31943 Extended Scan Get Cached Result request to FW
31944
31945 @param pWDICtx : wdi context
31946 pEventData : indication data
31947
31948 @see
31949 @return none
31950*/
31951WDI_Status
31952WDI_ProcessEXTScanGetCachedResultsReq
31953(
31954 WDI_ControlBlockType* pWDICtx,
31955 WDI_EventInfoType* pEventData
31956)
31957{
31958 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
31959 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
31960 wpt_uint8* pSendBuffer = NULL;
31961 wpt_uint16 usSendSize = 0;
31962 wpt_uint16 usDataOffset = 0;
31963 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
31964
31965 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31966 "%s: %d Enter",__func__, __LINE__);
31967
31968 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31969 ( NULL == pEventData->pCBfnc ))
31970 {
31971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31972 "%s: Invalid parameters", __func__);
31973 WDI_ASSERT(0);
31974 return WDI_STATUS_E_FAILURE;
31975 }
31976
31977 pwdiEXTScanGetCachedResultsReqParams =
31978 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
31979 wdiEXTScanGetCachedResultsCb =
31980 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
31981
31982 /*-----------------------------------------------------------------------
31983 Get message buffer
31984 ! TO DO : proper conversion into the HAL Message Request Format
31985 -----------------------------------------------------------------------*/
31986 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31987 pWDICtx,
31988 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
31989 sizeof(tHalExtScanGetScanReq),
31990 &pSendBuffer, &usDataOffset,
31991 &usSendSize))||
31992 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
31993 {
31994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31995 "Unable to get send buffer in %s %p %p %p", __func__,
31996 pEventData, pwdiEXTScanGetCachedResultsReqParams,
31997 wdiEXTScanGetCachedResultsCb);
31998 WDI_ASSERT(0);
31999 return WDI_STATUS_E_FAILURE;
32000 }
32001
32002 halEXTScanGetScanReqParams.requestId =
32003 pwdiEXTScanGetCachedResultsReqParams->requestId;
32004 halEXTScanGetScanReqParams.sessionId =
32005 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32006 halEXTScanGetScanReqParams.flush =
32007 pwdiEXTScanGetCachedResultsReqParams->flush;
32008
32009 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32010 " requestId %u "
32011 " sessionId %u "
32012 " flush %u ",
32013 halEXTScanGetScanReqParams.requestId,
32014 halEXTScanGetScanReqParams.sessionId,
32015 halEXTScanGetScanReqParams.flush);
32016
32017 wpalMemoryCopy(pSendBuffer+usDataOffset,
32018 &halEXTScanGetScanReqParams,
32019 sizeof(halEXTScanGetScanReqParams));
32020
32021 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32022
32023
32024 /*-------------------------------------------------------------------------
32025 Send EXTScan Stop Request to HAL
32026 -------------------------------------------------------------------------*/
32027 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32028 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32029 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32030}
32031
32032/**
32033 @brief WDI_EXTScanStopReq
32034
32035 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32036 WDI_EXTScanStopRspCb: callback for passing back the response
32037 of the Req operation received from the device
32038 pUserData: user data will be passed back with the callback
32039
32040 @return SUCCESS or FAIL
32041*/
32042WDI_Status
32043WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32044 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32045 void* pUserData)
32046{
32047 WDI_EventInfoType wdiEventData;
32048
32049 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32050 "%s: %d ",__func__, __LINE__);
32051 /*------------------------------------------------------------------------
32052 Sanity Check
32053 ------------------------------------------------------------------------*/
32054 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32055 {
32056 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32057 "WDI API call before module is initialized - Fail request");
32058
32059 return WDI_STATUS_E_NOT_ALLOWED;
32060 }
32061
32062 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32063 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32064 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32065 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32066 wdiEventData.pUserData = pUserData;
32067
32068 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32069}
32070
32071/**
32072 @brief WDI_ProcessEXTScanStopReq -
32073 Extended Scan Stop request to FW
32074
32075 @param pWDICtx : wdi context
32076 pEventData : indication data
32077
32078 @see
32079 @return none
32080*/
32081WDI_Status
32082WDI_ProcessEXTScanStopReq
32083(
32084 WDI_ControlBlockType* pWDICtx,
32085 WDI_EventInfoType* pEventData
32086)
32087{
32088 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32089 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32090 wpt_uint8* pSendBuffer = NULL;
32091 wpt_uint16 usSendSize = 0;
32092 wpt_uint16 usDataOffset = 0;
32093 tHalExtScanStopReq halEXTScanStopReqParams;
32094
32095 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32096 "%s: %d ",__func__, __LINE__);
32097
32098 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32099 ( NULL == pEventData->pCBfnc ))
32100 {
32101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32102 "%s: Invalid parameters", __func__);
32103 WDI_ASSERT(0);
32104 return WDI_STATUS_E_FAILURE;
32105 }
32106
32107 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32108 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32109
32110 /*-----------------------------------------------------------------------
32111 Get message buffer
32112 ! TO DO : proper conversion into the HAL Message Request Format
32113 -----------------------------------------------------------------------*/
32114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32115 pWDICtx,
32116 WDI_EXTSCAN_STOP_REQ,
32117 sizeof(tHalExtScanStopReq),
32118 &pSendBuffer, &usDataOffset,
32119 &usSendSize))||
32120 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32121 {
32122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32123 "Unable to get send buffer in %s %p %p %p", __func__,
32124 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32125 WDI_ASSERT(0);
32126 return WDI_STATUS_E_FAILURE;
32127 }
32128
32129 halEXTScanStopReqParams.requestId =
32130 pwdiEXTScanStopReqParams->requestId;
32131 halEXTScanStopReqParams.sessionId =
32132 pwdiEXTScanStopReqParams->sessionId;
32133
32134 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32135 " halEXTScanStopReqParams.requestId %u "
32136 " halEXTScanStopReqParams.sessionId %u ",
32137 halEXTScanStopReqParams.requestId,
32138 halEXTScanStopReqParams.sessionId);
32139
32140 wpalMemoryCopy(pSendBuffer+usDataOffset,
32141 &halEXTScanStopReqParams,
32142 sizeof(halEXTScanStopReqParams));
32143
32144 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32145
32146
32147 /*-------------------------------------------------------------------------
32148 Send EXTScan Stop Request to HAL
32149 -------------------------------------------------------------------------*/
32150 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32151 wdiEXTScanStopCb, pEventData->pUserData,
32152 WDI_EXTSCAN_STOP_RSP);
32153}
32154
32155/**
32156 @brief WDI_EXTScanStartReq
32157
32158 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32159 WDI_EXTScanStartRspCb: callback for passing back the response
32160 of the Req operation received from the device
32161 pUserData: user data will be passed back with the callback
32162
32163 @return SUCCESS or FAIL
32164*/
32165WDI_Status
32166WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
32167 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
32168 void* pUserData)
32169{
32170 WDI_EventInfoType wdiEventData;
32171
32172 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32173 "%s: %d Enter",__func__, __LINE__);
32174 /*------------------------------------------------------------------------
32175 Sanity Check
32176 ------------------------------------------------------------------------*/
32177 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32178 {
32179 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32180 "WDI API call before module is initialized - Fail request");
32181
32182 return WDI_STATUS_E_NOT_ALLOWED;
32183 }
32184
32185 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
32186 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
32187 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
32188 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
32189 wdiEventData.pUserData = pUserData;
32190
32191 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32192}
32193
32194/**
32195 @brief WDI_ProcessEXTScanStartReq -
32196 Extended Scan Start Request to FW
32197
32198 @param pWDICtx : wdi context
32199 pEventData : indication data
32200
32201 @see
32202 @return none
32203*/
32204WDI_Status
32205WDI_ProcessEXTScanStartReq
32206(
32207 WDI_ControlBlockType* pWDICtx,
32208 WDI_EventInfoType* pEventData
32209)
32210{
32211 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
32212 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
32213 wpt_uint8* pSendBuffer = NULL;
32214 wpt_uint16 usSendSize = 0;
32215 wpt_uint16 usDataOffset = 0;
32216 tpHalExtScanStartReq pHalExtScanStartReqParams;
32217 int i = 0;
32218 int j = 0;
32219
32220 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32221 "%s: %d Enter",__func__, __LINE__);
32222
32223 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32224 ( NULL == pEventData->pCBfnc ))
32225 {
32226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32227 "%s: Invalid parameters", __func__);
32228 WDI_ASSERT(0);
32229 return WDI_STATUS_E_FAILURE;
32230 }
32231
32232 pwdiEXTScanStartReqParams =
32233 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
32234 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
32235
32236 /*-----------------------------------------------------------------------
32237 Get message buffer
32238 ! TO DO : proper conversion into the HAL Message Request Format
32239 -----------------------------------------------------------------------*/
32240 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32241 pWDICtx,
32242 WDI_EXTSCAN_START_REQ,
32243 sizeof(tHalExtScanStartReq),
32244 &pSendBuffer, &usDataOffset,
32245 &usSendSize))||
32246 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
32247 {
32248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32249 "Unable to get send buffer in %s %p %p %p", __func__,
32250 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
32251 WDI_ASSERT(0);
32252 return WDI_STATUS_E_FAILURE;
32253 }
32254
32255 pHalExtScanStartReqParams =
32256 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
32257
32258 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
32259 pHalExtScanStartReqParams->maxApPerScan =
32260 pwdiEXTScanStartReqParams->maxAPperScan;
32261 pHalExtScanStartReqParams->reportThreshold =
32262 pwdiEXTScanStartReqParams->reportThreshold;
32263 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
32264 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
32265 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
32266
32267 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
32268 {
32269 pHalExtScanStartReqParams->bucketData[i].bucketId =
32270 pwdiEXTScanStartReqParams->buckets[i].bucket;
32271 pHalExtScanStartReqParams->bucketData[i].channelBand =
32272 pwdiEXTScanStartReqParams->buckets[i].band;
32273 pHalExtScanStartReqParams->bucketData[i].period =
32274 pwdiEXTScanStartReqParams->buckets[i].period;
32275 pHalExtScanStartReqParams->bucketData[i].reportEvents =
32276 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
32277 pHalExtScanStartReqParams->bucketData[i].numChannels =
32278 pwdiEXTScanStartReqParams->buckets[i].numChannels;
32279
32280 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
32281 {
32282 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
32283 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
32284 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
32285 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
32286 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
32287 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
32288 }
32289
32290 }
32291
32292
32293 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32294 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
32295 " sessionId %u numBuckets%u ",
32296 pHalExtScanStartReqParams->basePeriod,
32297 pHalExtScanStartReqParams->maxApPerScan,
32298 pHalExtScanStartReqParams->reportThreshold,
32299 pHalExtScanStartReqParams->requestId,
32300 pHalExtScanStartReqParams->sessionId,
32301 pHalExtScanStartReqParams->numBuckets);
32302
32303 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
32304 {
32305 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
32306 " %d) bucketId %u channelBand %u period %u "
32307 " reportEvents %u numChannels %u ",i,
32308 pHalExtScanStartReqParams->bucketData[i].bucketId,
32309 pHalExtScanStartReqParams->bucketData[i].channelBand,
32310 pHalExtScanStartReqParams->bucketData[i].period,
32311 pHalExtScanStartReqParams->bucketData[i].reportEvents,
32312 pHalExtScanStartReqParams->bucketData[i].numChannels);
32313
32314 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
32315 {
32316 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32317 "%d) channel %u dwellTimeMs %u passive %u ",j,
32318 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
32319 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
32320 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
32321 }
32322
32323 }
32324
Dino Mycle41bdc942014-06-10 11:30:24 +053032325 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32326
32327 /*-------------------------------------------------------------------------
32328 Send EXTSCAN Start Request to HAL
32329 -------------------------------------------------------------------------*/
32330 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32331 wdiEXTScanStartCb, pEventData->pUserData,
32332 WDI_EXTSCAN_START_RSP);
32333}
32334
32335/**
32336 @brief WDI_EXTScanSetBSSIDHotlistReq
32337
32338 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
32339 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
32340 of the Req operation received from the device
32341 pUserData: user data will be passed back with the callback
32342
32343 @return SUCCESS or FAIL
32344*/
32345WDI_Status
32346WDI_EXTScanSetBSSIDHotlistReq(
32347 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
32348 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
32349 void* pUserData)
32350{
32351 WDI_EventInfoType wdiEventData;
32352
32353 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32354 "%s: %d Enter ",__func__, __LINE__);
32355 /*------------------------------------------------------------------------
32356 Sanity Check
32357 ------------------------------------------------------------------------*/
32358 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32359 {
32360 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32361 "WDI API call before module is initialized - Fail request");
32362
32363 return WDI_STATUS_E_NOT_ALLOWED;
32364 }
32365
32366 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
32367 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
32368 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
32369 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
32370 wdiEventData.pUserData = pUserData;
32371
32372 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32373}
32374
32375/**
32376 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
32377 Extended Scan Set BSSSID Hotlist Request to FW
32378
32379 @param pWDICtx : wdi context
32380 pEventData : indication data
32381
32382 @see
32383 @return none
32384*/
32385WDI_Status
32386WDI_ProcessEXTScanSetBSSIDHotlistReq
32387(
32388 WDI_ControlBlockType* pWDICtx,
32389 WDI_EventInfoType* pEventData
32390)
32391{
32392 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32393 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32394 wpt_uint8* pSendBuffer = NULL;
32395 wpt_uint16 usSendSize = 0;
32396 wpt_uint16 usDataOffset = 0;
32397 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32398 int i;
32399
32400 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32401 "%s: %d Enter",__func__, __LINE__);
32402
32403 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32404 ( NULL == pEventData->pCBfnc ))
32405 {
32406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32407 "%s: Invalid parameters", __func__);
32408 WDI_ASSERT(0);
32409 return WDI_STATUS_E_FAILURE;
32410 }
32411
32412 pwdiEXTScanSetBSSIDHotlistReqParams =
32413 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32414 wdiEXTScanSetBSSIDHotlistRspCb =
32415 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32416
32417 /*-----------------------------------------------------------------------
32418 Get message buffer
32419 ! TO DO : proper conversion into the HAL Message Request Format
32420 -----------------------------------------------------------------------*/
32421 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32422 pWDICtx,
32423 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32424 sizeof(tHalBssidHotlistSetReq),
32425 &pSendBuffer, &usDataOffset,
32426 &usSendSize))||
32427 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32428 {
32429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32430 "Unable to get send buffer in %s %p %p %p", __func__,
32431 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32432 wdiEXTScanSetBSSIDHotlistRspCb);
32433 WDI_ASSERT(0);
32434 return WDI_STATUS_E_FAILURE;
32435 }
32436 pHalBssidHotlistSetReqParams =
32437 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32438
32439 pHalBssidHotlistSetReqParams->requestId =
32440 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32441
32442 pHalBssidHotlistSetReqParams->sessionId =
32443 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32444
32445 pHalBssidHotlistSetReqParams->numAp =
32446 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32447
32448 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32449
32450 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32451 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32452 WDI_MAC_ADDR_LEN);
32453
32454 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32455 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32456
32457 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32458 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32459
32460 pHalBssidHotlistSetReqParams->ap[i].channel =
32461 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32462
32463 }
32464
32465 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32466 "ReqID %u sessionId %u numAp %u ",
32467 pHalBssidHotlistSetReqParams->requestId,
32468 pHalBssidHotlistSetReqParams->sessionId,
32469 pHalBssidHotlistSetReqParams->numAp);
32470
32471 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32472
32473 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32474 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32475 __func__, __LINE__, i,
32476 pHalBssidHotlistSetReqParams->ap[i].bssid,
32477 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32478 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32479 pHalBssidHotlistSetReqParams->ap[i].channel);
32480
32481 }
32482
32483 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32484
32485
32486 /*-------------------------------------------------------------------------
32487 Send EXTScan Stop Request to HAL
32488 -------------------------------------------------------------------------*/
32489 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32490 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32491 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32492}
32493
32494/**
32495 @brief WDI_EXTScanResetBSSIDHotlistReq
32496
32497 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32498 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32499 of the Req operation received from the device
32500 pUserData: user data will be passed back with the callback
32501
32502 @return SUCCESS or FAIL
32503*/
32504WDI_Status
32505WDI_EXTScanResetBSSIDHotlistReq(
32506 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32507 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32508 void* pUserData)
32509{
32510 WDI_EventInfoType wdiEventData;
32511
32512 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32513 "%s: %d",__func__, __LINE__);
32514 /*------------------------------------------------------------------------
32515 Sanity Check
32516 ------------------------------------------------------------------------*/
32517 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32518 {
32519 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32520 "WDI API call before module is initialized - Fail request");
32521
32522 return WDI_STATUS_E_NOT_ALLOWED;
32523 }
32524
32525 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32526 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32527 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32528 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32529 wdiEventData.pUserData = pUserData;
32530
32531 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32532}
32533
32534/**
32535 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32536 Extended Scan reset BSSID hotlist Request to FW
32537
32538 @param pWDICtx : wdi context
32539 pEventData : indication data
32540
32541 @see
32542 @return none
32543*/
32544WDI_Status
32545WDI_ProcessEXTScanResetBSSIDHotlistReq
32546(
32547 WDI_ControlBlockType* pWDICtx,
32548 WDI_EventInfoType* pEventData
32549)
32550{
32551 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32552 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32553 wpt_uint8* pSendBuffer = NULL;
32554 wpt_uint16 usSendSize = 0;
32555 wpt_uint16 usDataOffset = 0;
32556 tpHalHotlistResetReq pHalHotlistResetReqParams;
32557
32558 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32559 "%s: %d",__func__, __LINE__);
32560
32561 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32562 ( NULL == pEventData->pCBfnc ))
32563 {
32564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32565 "%s: Invalid parameters", __func__);
32566 WDI_ASSERT(0);
32567 return WDI_STATUS_E_FAILURE;
32568 }
32569
32570 pwdiEXTScanResetBSSIDHotlistReqParams =
32571 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
32572 wdiEXTScanResetBSSIDHotlistRspCb =
32573 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
32574
32575 /*-----------------------------------------------------------------------
32576 Get message buffer
32577 ! TO DO : proper conversion into the HAL Message Request Format
32578 -----------------------------------------------------------------------*/
32579 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32580 pWDICtx,
32581 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
32582 sizeof(tHalHotlistResetReq),
32583 &pSendBuffer, &usDataOffset,
32584 &usSendSize))||
32585 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
32586 {
32587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32588 "Unable to get send buffer in %s %p %p %p", __func__,
32589 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
32590 wdiEXTScanResetBSSIDHotlistRspCb);
32591 WDI_ASSERT(0);
32592 return WDI_STATUS_E_FAILURE;
32593 }
32594 pHalHotlistResetReqParams =
32595 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
32596
32597 pHalHotlistResetReqParams->requestId =
32598 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
32599
32600 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32601
32602 /*-------------------------------------------------------------------------
32603 Send EXTScan Stop Request to HAL
32604 -------------------------------------------------------------------------*/
32605 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32606 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
32607 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
32608}
32609
32610/**
32611 @brief WDI_EXTScanSetSignfRSSIChangeReq
32612
32613 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
32614 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
32615 of the Req operation received from the device
32616 pUserData: user data will be passed back with the callback
32617
32618 @return SUCCESS or FAIL
32619*/
32620WDI_Status
32621WDI_EXTScanSetSignfRSSIChangeReq(
32622 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
32623 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
32624 void* pUserData)
32625{
32626 WDI_EventInfoType wdiEventData;
32627
32628 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32629 "%s: %d ",__func__, __LINE__);
32630 /*------------------------------------------------------------------------
32631 Sanity Check
32632 ------------------------------------------------------------------------*/
32633 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32634 {
32635 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32636 "WDI API call before module is initialized - Fail request");
32637
32638 return WDI_STATUS_E_NOT_ALLOWED;
32639 }
32640
32641 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
32642 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
32643 wdiEventData.uEventDataSize =
32644 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
32645 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
32646 wdiEventData.pUserData = pUserData;
32647
32648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32649}
32650
32651/**
32652 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
32653 Extended Scan set Significant RSSI change Request to FW
32654
32655 @param pWDICtx : wdi context
32656 pEventData : indication data
32657
32658 @see
32659 @return none
32660*/
32661WDI_Status
32662WDI_ProcessEXTScanSetSignifRSSIChangeReq
32663(
32664 WDI_ControlBlockType* pWDICtx,
32665 WDI_EventInfoType* pEventData
32666)
32667{
32668 WDI_EXTScanSetSignfRSSIChangeReqParams*
32669 pwdiEXTScanSetSignfRSSIChangeReqParams;
32670 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32671 wpt_uint8* pSendBuffer = NULL;
32672 wpt_uint16 usSendSize = 0;
32673 wpt_uint16 usDataOffset = 0;
32674 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
32675 int i;
32676
32677 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32678 "%s: %d Enter",__func__, __LINE__);
32679
32680 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32681 ( NULL == pEventData->pCBfnc ))
32682 {
32683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32684 "%s: Invalid parameters", __func__);
32685 WDI_ASSERT(0);
32686 return WDI_STATUS_E_FAILURE;
32687 }
32688
32689 pwdiEXTScanSetSignfRSSIChangeReqParams =
32690 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
32691 wdiEXTScanSetSignfRSSIChangeRspCb =
32692 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32693
32694 /*-----------------------------------------------------------------------
32695 Get message buffer
32696 ! TO DO : proper conversion into the HAL Message Request Format
32697 -----------------------------------------------------------------------*/
32698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32699 pWDICtx,
32700 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
32701 sizeof(tHalSigRssiSetReq),
32702 &pSendBuffer, &usDataOffset,
32703 &usSendSize))||
32704 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
32705 {
32706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32707 "Unable to get send buffer in %s %p %p %p", __func__,
32708 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
32709 wdiEXTScanSetSignfRSSIChangeRspCb);
32710 WDI_ASSERT(0);
32711 return WDI_STATUS_E_FAILURE;
32712 }
32713
32714 pHalSigRssiSetReqParams =
32715 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
32716
32717 pHalSigRssiSetReqParams->requestId =
32718 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
32719 pHalSigRssiSetReqParams->sessionId =
32720 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
32721 pHalSigRssiSetReqParams->rssiSampleSize =
32722 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
32723 pHalSigRssiSetReqParams->lostApSampleSize =
32724 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
32725 pHalSigRssiSetReqParams->minBreaching =
32726 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
32727 pHalSigRssiSetReqParams->numAp =
32728 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
32729
32730
32731 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
32732
32733 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
32734 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
32735 WDI_MAC_ADDR_LEN);
32736
32737 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
32738 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
32739
32740 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
32741 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
32742
32743 pHalSigRssiSetReqParams->ap[i].channel =
32744 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
32745
32746 }
32747
32748
32749 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32750 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
32751 " minBreaching %u numAp %u ",
32752 pHalSigRssiSetReqParams->requestId,
32753 pHalSigRssiSetReqParams->sessionId,
32754 pHalSigRssiSetReqParams->rssiSampleSize,
32755 pHalSigRssiSetReqParams->lostApSampleSize,
32756 pHalSigRssiSetReqParams->minBreaching,
32757 pHalSigRssiSetReqParams->numAp);
32758
32759 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
32760
32761 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32762 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32763 i,
32764 pHalSigRssiSetReqParams->ap[i].bssid,
32765 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
32766 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
32767 pHalSigRssiSetReqParams->ap[i].channel);
32768
32769 }
32770
32771 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32772
32773
32774 /*-------------------------------------------------------------------------
32775 Send EXTScan Stop Request to HAL
32776 -------------------------------------------------------------------------*/
32777 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32778 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
32779 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
32780}
32781
32782/**
32783 @brief WDI_EXTScanResetSignfRSSIChangeReq
32784
32785 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
32786 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
32787 of the Req operation received from the device
32788 pUserData: user data will be passed back with the callback
32789
32790 @return SUCCESS or FAIL
32791*/
32792WDI_Status
32793WDI_EXTScanResetSignfRSSIChangeReq(
32794 WDI_EXTScanResetSignfRSSIChangeReqParams*
32795 pwdiEXTScanResetSignfRSSIChangeReqParams,
32796 WDI_EXTScanResetSignfRSSIChangeRspCb
32797 wdiEXTScanResetSignfRSSIChangeRspCb,
32798 void* pUserData)
32799{
32800 WDI_EventInfoType wdiEventData;
32801
32802 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32803 "%s: %d ",__func__, __LINE__);
32804 /*------------------------------------------------------------------------
32805 Sanity Check
32806 ------------------------------------------------------------------------*/
32807 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32808 {
32809 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32810 "WDI API call before module is initialized - Fail request");
32811
32812 return WDI_STATUS_E_NOT_ALLOWED;
32813 }
32814
32815 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
32816 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
32817 wdiEventData.uEventDataSize =
32818 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
32819 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
32820 wdiEventData.pUserData = pUserData;
32821
32822 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32823}
32824
32825/**
32826 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
32827 Extended Scana reset Significant RSSI change Request to FW
32828
32829 @param pWDICtx : wdi context
32830 pEventData : indication data
32831
32832 @see
32833 @return none
32834*/
32835WDI_Status
32836WDI_ProcessEXTScanResetSignfRSSIChangeReq
32837(
32838 WDI_ControlBlockType* pWDICtx,
32839 WDI_EventInfoType* pEventData
32840)
32841{
32842 WDI_EXTScanResetSignfRSSIChangeReqParams*
32843 pwdiEXTScanResetSignfRSSIChangeReqParams;
32844 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
32845 wpt_uint8* pSendBuffer = NULL;
32846 wpt_uint16 usSendSize = 0;
32847 wpt_uint16 usDataOffset = 0;
32848 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
32849
32850 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32851 "%s: %d ",__func__, __LINE__);
32852
32853 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32854 ( NULL == pEventData->pCBfnc ))
32855 {
32856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32857 "%s: Invalid parameters", __func__);
32858 WDI_ASSERT(0);
32859 return WDI_STATUS_E_FAILURE;
32860 }
32861
32862 pwdiEXTScanResetSignfRSSIChangeReqParams =
32863 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
32864 wdiEXTScanResetSignfRSSIChangeRspCb =
32865 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32866
32867 /*-----------------------------------------------------------------------
32868 Get message buffer
32869 ! TO DO : proper conversion into the HAL Message Request Format
32870 -----------------------------------------------------------------------*/
32871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32872 pWDICtx,
32873 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
32874 sizeof(tHalSigRssiResetReq),
32875 &pSendBuffer, &usDataOffset,
32876 &usSendSize))||
32877 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
32878 {
32879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32880 "Unable to get send buffer in %s %p %p %p", __func__,
32881 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
32882 wdiEXTScanResetSignfRSSIChangeRspCb);
32883 WDI_ASSERT(0);
32884 return WDI_STATUS_E_FAILURE;
32885 }
32886 pHalSigRssiResetReqParams =
32887 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
32888
32889 pHalSigRssiResetReqParams->requestId =
32890 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
32891
32892 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32893
32894
32895 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32896 wdiEXTScanResetSignfRSSIChangeRspCb,
32897 pEventData->pUserData,
32898 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
32899}
32900
32901/**
32902 @brief Process Extended Scan Start Rsp function (called when a response
32903 is being received over the bus from HAL)
32904
32905 @param pWDICtx: pointer to the WLAN DAL context
32906 pEventData: pointer to the event information structure
32907
32908 @see
32909 @return Result of the function call
32910*/
32911WDI_Status
32912WDI_ProcessEXTScanStartRsp
32913(
32914 WDI_ControlBlockType* pWDICtx,
32915 WDI_EventInfoType* pEventData
32916)
32917{
32918 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
32919
32920 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32921 "%s: %d",__func__, __LINE__);
32922 /*-------------------------------------------------------------------------
32923 Sanity check
32924 -------------------------------------------------------------------------*/
32925 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32926 ( NULL == pEventData->pEventData))
32927 {
32928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32929 "%s: Invalid parameters", __func__);
32930 WDI_ASSERT(0);
32931 return WDI_STATUS_E_FAILURE;
32932 }
32933
32934 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32935 if ( NULL == wdiEXTScanStartRspCb)
32936 {
32937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32938 "%s: Callback function Invalid", __func__);
32939 WDI_ASSERT(0);
32940 return WDI_STATUS_E_FAILURE;
32941 }
32942
32943 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
32944
32945 return WDI_STATUS_SUCCESS;
32946}
32947
32948
32949/**
32950 @brief Process Extended Scan Stop Rsp function (called when a response
32951 is being received over the bus from HAL)
32952
32953 @param pWDICtx: pointer to the WLAN DAL context
32954 pEventData: pointer to the event information structure
32955
32956 @see
32957 @return Result of the function call
32958*/
32959WDI_Status
32960WDI_ProcessEXTScanStopRsp
32961(
32962 WDI_ControlBlockType* pWDICtx,
32963 WDI_EventInfoType* pEventData
32964)
32965{
32966 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
32967
32968 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32969 "%s: %d",__func__, __LINE__);
32970
32971
32972 /*-------------------------------------------------------------------------
32973 Sanity check
32974 -------------------------------------------------------------------------*/
32975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32976 ( NULL == pEventData->pEventData))
32977 {
32978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32979 "%s: Invalid parameters", __func__);
32980 WDI_ASSERT(0);
32981 return WDI_STATUS_E_FAILURE;
32982 }
32983
32984 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32985 if ( NULL == wdiEXTScanStopRspCb)
32986 {
32987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32988 "%s: Callback function Invalid", __func__);
32989 WDI_ASSERT(0);
32990 return WDI_STATUS_E_FAILURE;
32991 }
32992
32993 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32994
32995 return WDI_STATUS_SUCCESS;
32996}
32997
32998/**
32999 @brief Process Extended Scan Get Cached Rsp function (called when a response
33000 is being received over the bus from HAL)
33001
33002 @param pWDICtx: pointer to the WLAN DAL context
33003 pEventData: pointer to the event information structure
33004
33005 @see
33006 @return Result of the function call
33007*/
33008WDI_Status
33009WDI_ProcessEXTScanGetCachedResultsRsp
33010(
33011 WDI_ControlBlockType* pWDICtx,
33012 WDI_EventInfoType* pEventData
33013)
33014{
33015 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33016
33017 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33018 "%s: %d Enter",__func__, __LINE__);
33019
33020
33021 /*-------------------------------------------------------------------------
33022 Sanity check
33023 -------------------------------------------------------------------------*/
33024 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33025 ( NULL == pEventData->pEventData))
33026 {
33027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33028 "%s: Invalid parameters", __func__);
33029 WDI_ASSERT(0);
33030 return WDI_STATUS_E_FAILURE;
33031 }
33032
33033 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33034 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33035 {
33036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33037 "%s: Callback function Invalid", __func__);
33038 WDI_ASSERT(0);
33039 return WDI_STATUS_E_FAILURE;
33040 }
33041
33042 wdiEXTScanGetCachedResultsRspCb(
33043 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33044
33045 return WDI_STATUS_SUCCESS;
33046}
33047
33048/**
33049 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33050 is being received over the bus from HAL)
33051
33052 @param pWDICtx: pointer to the WLAN DAL context
33053 pEventData: pointer to the event information structure
33054
33055 @see
33056 @return Result of the function call
33057*/
33058WDI_Status
33059WDI_ProcessEXTScanGetCapabilitiesRsp
33060(
33061 WDI_ControlBlockType* pWDICtx,
33062 WDI_EventInfoType* pEventData
33063)
33064{
33065 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33066
33067 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33068 "%s: %d ",__func__, __LINE__);
33069
33070
33071 /*-------------------------------------------------------------------------
33072 Sanity check
33073 -------------------------------------------------------------------------*/
33074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33075 ( NULL == pEventData->pEventData))
33076 {
33077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33078 "%s: Invalid parameters", __func__);
33079 WDI_ASSERT(0);
33080 return WDI_STATUS_E_FAILURE;
33081 }
33082
33083 wdiEXTScanGetCapabilitiesRspCb =
33084 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33085 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33086 {
33087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33088 "%s: Callback function Invalid", __func__);
33089 WDI_ASSERT(0);
33090 return WDI_STATUS_E_FAILURE;
33091 }
33092
33093 wdiEXTScanGetCapabilitiesRspCb(
33094 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33095
33096 return WDI_STATUS_SUCCESS;
33097}
33098
33099/**
33100 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33101 response is being received over the bus from HAL)
33102
33103 @param pWDICtx: pointer to the WLAN DAL context
33104 pEventData: pointer to the event information structure
33105
33106 @see
33107 @return Result of the function call
33108*/
33109WDI_Status
33110WDI_ProcessEXTScanSetHotlistBSSIDRsp
33111(
33112 WDI_ControlBlockType* pWDICtx,
33113 WDI_EventInfoType* pEventData
33114)
33115{
33116 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33117
33118 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33119 "%s: %d ",__func__, __LINE__);
33120
33121
33122 /*-------------------------------------------------------------------------
33123 Sanity check
33124 -------------------------------------------------------------------------*/
33125 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33126 ( NULL == pEventData->pEventData))
33127 {
33128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33129 "%s: Invalid parameters", __func__);
33130 WDI_ASSERT(0);
33131 return WDI_STATUS_E_FAILURE;
33132 }
33133
33134 wdiEXTScanSetBSSIDHotlistRspCb =
33135 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33136 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33137 {
33138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33139 "%s: Callback function Invalid", __func__);
33140 WDI_ASSERT(0);
33141 return WDI_STATUS_E_FAILURE;
33142 }
33143
33144 wdiEXTScanSetBSSIDHotlistRspCb(
33145 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33146
33147 return WDI_STATUS_SUCCESS;
33148}
33149
33150/**
33151 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33152 when a response is being received over the bus from HAL)
33153
33154 @param pWDICtx: pointer to the WLAN DAL context
33155 pEventData: pointer to the event information structure
33156
33157 @see
33158 @return Result of the function call
33159*/
33160WDI_Status
33161WDI_ProcessEXTScanResetHotlistBSSIDRsp
33162(
33163 WDI_ControlBlockType* pWDICtx,
33164 WDI_EventInfoType* pEventData
33165)
33166{
33167 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33168
33169 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33170 "%s: %d ",__func__, __LINE__);
33171
33172
33173 /*-------------------------------------------------------------------------
33174 Sanity check
33175 -------------------------------------------------------------------------*/
33176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33177 ( NULL == pEventData->pEventData))
33178 {
33179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33180 "%s: Invalid parameters", __func__);
33181 WDI_ASSERT(0);
33182 return WDI_STATUS_E_FAILURE;
33183 }
33184
33185 wdiEXTScanResetBSSIDHotlistRspCb =
33186 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33187 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
33188 {
33189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33190 "%s: Callback function Invalid", __func__);
33191 WDI_ASSERT(0);
33192 return WDI_STATUS_E_FAILURE;
33193 }
33194
33195 wdiEXTScanResetBSSIDHotlistRspCb(
33196 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33197
33198 return WDI_STATUS_SUCCESS;
33199}
33200
33201/**
33202 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
33203 when a response is being received over the bus from HAL)
33204
33205 @param pWDICtx: pointer to the WLAN DAL context
33206 pEventData: pointer to the event information structure
33207
33208 @see
33209 @return Result of the function call
33210*/
33211WDI_Status
33212WDI_ProcessEXTScanSetSignfRSSIChangeRsp
33213(
33214 WDI_ControlBlockType* pWDICtx,
33215 WDI_EventInfoType* pEventData
33216)
33217{
33218 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33219
33220 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33221 "%s: %d",__func__, __LINE__);
33222
33223
33224 /*-------------------------------------------------------------------------
33225 Sanity check
33226 -------------------------------------------------------------------------*/
33227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33228 ( NULL == pEventData->pEventData))
33229 {
33230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33231 "%s: Invalid parameters", __func__);
33232 WDI_ASSERT(0);
33233 return WDI_STATUS_E_FAILURE;
33234 }
33235
33236 wdiEXTScanSetSignfRSSIChangeRspCb =
33237 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33238 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
33239 {
33240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33241 "%s: Callback function Invalid", __func__);
33242 WDI_ASSERT(0);
33243 return WDI_STATUS_E_FAILURE;
33244 }
33245
33246 wdiEXTScanSetSignfRSSIChangeRspCb(
33247 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33248
33249 return WDI_STATUS_SUCCESS;
33250}
33251
33252/**
33253 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
33254 (called when a response is being received over the bus from HAL)
33255
33256 @param pWDICtx: pointer to the WLAN DAL context
33257 pEventData: pointer to the event information structure
33258
33259 @see
33260 @return Result of the function call
33261*/
33262WDI_Status
33263WDI_ProcessEXTScanResetSignfRSSIChangeRsp
33264(
33265 WDI_ControlBlockType* pWDICtx,
33266 WDI_EventInfoType* pEventData
33267)
33268{
33269 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33270
33271 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33272 "%s: %d Enter",__func__, __LINE__);
33273
33274
33275 /*-------------------------------------------------------------------------
33276 Sanity check
33277 -------------------------------------------------------------------------*/
33278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33279 ( NULL == pEventData->pEventData))
33280 {
33281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33282 "%s: Invalid parameters", __func__);
33283 WDI_ASSERT(0);
33284 return WDI_STATUS_E_FAILURE;
33285 }
33286
33287 wdiEXTScanResetSignfRSSIChangeRspCb =
33288 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33289 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
33290 {
33291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33292 "%s: Callback function Invalid", __func__);
33293 WDI_ASSERT(0);
33294 return WDI_STATUS_E_FAILURE;
33295 }
33296
33297 wdiEXTScanResetSignfRSSIChangeRspCb(
33298 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33299
33300 return WDI_STATUS_SUCCESS;
33301}
33302#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053033303
33304/**
33305 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
33306
33307 @param None
33308
33309 @see
33310
33311 @return Status of the request
33312*/
33313WDI_Status
33314WDI_SetSpoofMacAddrReq
33315(
33316 WDI_SpoofMacAddrInfoType* pWdiReq,
33317 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
33318 void* pUserData)
33319{
33320 WDI_EventInfoType wdiEventData;
33321
33322 /*-------------------------------------------------------------------------
33323 Sanity Check
33324 ------------------------------------------------------------------------*/
33325 if (eWLAN_PAL_FALSE == gWDIInitialized)
33326 {
33327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33328 "WDI API call before module is initialized - Fail request!");
33329
33330 return WDI_STATUS_E_NOT_ALLOWED;
33331 }
33332
33333 /*-------------------------------------------------------------------------
33334 Fill in Event data and post to the Main FSM
33335 ------------------------------------------------------------------------*/
33336 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
33337 wdiEventData.pEventData = pWdiReq;
33338 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
33339 wdiEventData.pCBfnc = spoofMacAddrRspCb;
33340 wdiEventData.pUserData = pUserData;
33341
33342 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33343}
33344
33345/**
33346 @brief Process SpoofMacAddr Request
33347
33348 @param pWDICtx: pointer to the WLAN DAL context
33349 pEventData: pointer to the event information structure
33350
33351 @see
33352 @return Result of the function call
33353*/
33354WDI_Status
33355WDI_ProcessSpoofMacAddrReq
33356(
33357 WDI_ControlBlockType* pWDICtx,
33358 WDI_EventInfoType* pEventData
33359)
33360{
33361 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
33362 wpt_uint8* pSendBuffer = NULL;
33363 wpt_uint16 usDataOffset = 0;
33364 wpt_uint16 usSendSize = 0;
33365 WDI_Status wdiStatus;
33366 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
33367 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
33368
33369
33370 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33371 "%s: %d Enter",__func__, __LINE__);
33372
33373 /*-------------------------------------------------------------------------
33374 Sanity check
33375 -------------------------------------------------------------------------*/
33376 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33377 ( NULL == pEventData->pEventData))
33378 {
33379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33380 "%s: Invalid parameters", __func__);
33381 WDI_ASSERT(0);
33382 return WDI_STATUS_E_FAILURE;
33383 }
33384 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
33385
33386 /*-----------------------------------------------------------------------
33387 Get message buffer
33388 -----------------------------------------------------------------------*/
33389 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33390 WDI_SPOOF_MAC_ADDR_REQ,
33391 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
33392 &pSendBuffer, &usDataOffset, &usSendSize))||
33393 (usSendSize < (usDataOffset +
33394 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
33395 {
33396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33397 "Unable to get send buffer in Process Spoof Mac Addr Req");
33398 WDI_ASSERT(0);
33399 return WDI_STATUS_E_FAILURE;
33400 }
33401
33402 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
33403 wdiSpoofMacAddr->macAddr,
33404 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
33405
33406 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
33407
33408 wpalMemoryCopy( pSendBuffer+usDataOffset,
33409 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
33410 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
33411
33412 /*-------------------------------------------------------------------------
33413 Send Suspend Request to HAL
33414 -------------------------------------------------------------------------*/
33415 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33416 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
33417
33418 return wdiStatus;
33419}
33420
33421/**
33422 @brief Process Spoof Mac Address Rsp function
33423 (called when a response is being received over the bus from HAL)
33424
33425 @param pWDICtx: pointer to the WLAN DAL context
33426 pEventData: pointer to the event information structure
33427
33428 @see
33429 @return Result of the function call
33430*/
33431WDI_Status
33432WDI_ProcessSpoofMacAddrRsp
33433(
33434 WDI_ControlBlockType* pWDICtx,
33435 WDI_EventInfoType* pEventData
33436)
33437{
33438 tMacSpoofedScanResp halRsp;
33439 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
33440 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
33441
33442 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33443 "%s: %d Enter",__func__, __LINE__);
33444
33445 /*-------------------------------------------------------------------------
33446 Sanity check
33447 -------------------------------------------------------------------------*/
33448 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33449 ( NULL == pEventData->pEventData))
33450 {
33451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33452 "%s: Invalid parameters", __func__);
33453 WDI_ASSERT(0);
33454 return WDI_STATUS_E_FAILURE;
33455 }
33456 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
33457
33458 /*-------------------------------------------------------------------------
33459 Extract response and send it to UMAC
33460 -------------------------------------------------------------------------*/
33461 wpalMemoryCopy( &halRsp,
33462 pEventData->pEventData, sizeof(halRsp));
33463
33464 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33465
33466 /*Notify UMAC*/
33467 wdiSpoofMacAddrRspCb(
33468 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
33469
33470 return WDI_STATUS_SUCCESS;
33471}